paginare risultati query in php

Ho la necessita di impaginare i risultati delle query presenti in questo file, in sostanza vorrei che venissero mostrati una quindicina di record a video e poi ci sia la possibilità di andare alla pagina successiva o precedente. Come posso ottenere questo risultato?

<h1>Risultati della ricerca</h1><br>
<?php
error_reporting(E_ALL);
include("config.inc.php");
include("connect.inc.php");

if($_POST) {
   if($_POST['azione'] == "cerca"){
$chiave = $_POST['chiave']; 
$keys   =   explode   (",",   $chiave);
$query   =   "";
reset   ($keys);
while   (list(,$parola)   =   each   ($keys))
{   $parola   =   trim($parola);
if   ($parola   !=   "")
$query   .=   "titolo   LIKE   '%$parola%'   OR   ingredienti   LIKE   '%$parola%' OR   tipopiatto   LIKE   '%$parola%' OR   ingredienteprincipale   LIKE   '%$parola%' OR   regione   LIKE   '%$parola%' OR   note   LIKE   '%$parola%'    OR   ";
}
$query   .=   "0";
$query   =   "SELECT   id,   titolo, ingredienteprincipale, regione   FROM   DBRicette   WHERE   "   .   $query;
$result   =   mysql_query($query,   $db);
//echo $query;  dopo l'esecuzione di una query ne mostra il risultato a video
while   ($row   =   mysql_fetch_array($result))
{   echo   "<a   href=\"index.php?pag=15&id=$row[id]\">"     .   "      $row[titolo]" . "       </a><br>";   }
}
   elseif($_POST['azione'] == "principale"){
$chiave = $_POST['chiave']; 
$keys   =   explode   (",",   $chiave);
$query   =   "";
reset   ($keys);
while   (list(,$parola)   =   each   ($keys))
{   $parola   =   trim($parola);
if   ($parola   !=   "")
$query   .=   " ingredienteprincipale   LIKE   '%$parola%'   OR   ";
}
$query   .=   "0";
$query   =   "SELECT   id,   titolo, ingredienteprincipale   FROM   DBRicette   WHERE   "   .   $query;
$result   =   mysql_query($query,   $db);
//echo $query;  dopo l'esecuzione di una query ne mostra il risultato a video
while   ($row   =   mysql_fetch_array($result))
{   echo   "<a   href=\"index.php?pag=15&id=$row[id]\">"     .   "      $row[titolo]" . "      $row[ingredienteprincipale]</a><br>";   }
}
   elseif($_POST['azione'] == "portata"){
$chiave = $_POST['chiave']; 
$keys   =   explode   (",",   $chiave);
$query   =   "";
reset   ($keys);
while   (list(,$parola)   =   each   ($keys))
{   $parola   =   trim($parola);
if   ($parola   !=   "")
$query   .=   "tipopiatto   LIKE   '%$parola%'   OR   ";
}
$query   .=   "0";
$query   =   "SELECT   id,   titolo, tipopiatto   FROM   DBRicette   WHERE   "   .   $query;
$result   =   mysql_query($query,   $db);
//echo $query;  dopo l'esecuzione di una query ne mostra il risultato a video
while   ($row   =   mysql_fetch_array($result))
{   echo   "<a   href=\"index.php?pag=15&id=$row[id]\">"     .   "      $row[titolo]" . "      $row[tipopiatto]</a><br>";   }

}
  };
?>
inviato 7 anni fa
blackeyes
X 0 X

133 risposte

Allora, devi mettere un limit e offset nelle tue query per limitare i risultati della query stessa.

Il limit e l'offset lo fornire o tramite metodo get o post. Vedi te quello che preferisci.

Questi valori li fornirai nella barra di navigazione tra i risultati.

P.S. il limit puoi anche non fornirlo, l'offset ti servirà per dire a che "pagina" dei risultati ti trovi.

Non so se ti ho dato un buon spunto di riflessione.

risposto 7 anni fa
Mario Santagiuliana
X 0 X

SI ora faccio qualche prova

risposto 7 anni fa
blackeyes
X 0 X

ho ptovato cosi ma non va' mi mostra tutti i numeri di pagina e basta...

ho provato solo sul primo if...

<h1>Risultati della ricerca</h1><br>
<?php
error_reporting(E_ALL);
include("config.inc.php");
include("connect.inc.php");

if($_POST) {
   if($_POST['azione'] == "cerca"){
   
$chiave = $_POST['chiave']; 
$keys   =   explode   (",",   $chiave);
$query   =   "";
reset   ($keys);
while   (list(,$parola)   =   each   ($keys))
{   $parola   =   trim($parola);
if   ($parola   !=   "")
$query   .=   "titolo   LIKE   '%$parola%'   OR   ingredienti   LIKE   '%$parola%' OR   tipopiatto   LIKE   '%$parola%' OR   ingredienteprincipale   LIKE   '%$parola%' OR   regione   LIKE   '%$parola%' OR   note   LIKE   '%$parola%'    OR   ";
}
$query   .=   "0";
$query   =   "SELECT   id,   titolo, ingredienteprincipale, regione   FROM   DBRicette   WHERE   "   .   $query;
$count = mysql_query("SELECT COUNT(*) FROM DBRicette");
$res_count = mysql_fetch_row($count);

// numero totale di records
$tot_records = $res_count[0];

// risultati per pagina(secondo parametro di LIMIT)
$per_page = 10;

// numero totale di pagine
$tot_pages = ceil($tot_records / $per_page);

// pagina corrente
$current_page = (!$_GET['page']) ? 1 : (int)$_GET['page'];

// primo parametro di LIMIT
$primo = ($current_page - 1) * $per_page;

$query   =   "SELECT   id,   titolo, ingredienteprincipale, regione   FROM   DBRicette LIMIT $primo, $per_page   WHERE   "   .   $query;

$result   =   mysql_query($query,   $db);
//echo $query;  dopo l'esecuzione di una query ne mostra il risultato a video
while   ($row   =   mysql_fetch_array($result))
{   echo   "<a   href=\"index.php?pag=15&id=$row[id]\">"     .   "      $row[titolo]" . "       </a><br>";   }
// includiamo uno dei files contenenti la paginazione
include("paginazione.php");
// in questa cella inseriamo la paginazione
echo " <tr>\n <td height=\"50\" valign=\"bottom\" align=\"center\">$paginazione</td>\n";

echo " </tr>\n</table>\n</div>";
}
   elseif($_POST['azione'] == "principale"){
$chiave = $_POST['chiave']; 
$keys   =   explode   (",",   $chiave);
$query   =   "";
reset   ($keys);
while   (list(,$parola)   =   each   ($keys))
{   $parola   =   trim($parola);
if   ($parola   !=   "")
$query   .=   " ingredienteprincipale   LIKE   '%$parola%'   OR   ";
}
$query   .=   "0";
$query   =   "SELECT   id,   titolo, ingredienteprincipale   FROM   DBRicette   WHERE   "   .   $query;
$result   =   mysql_query($query,   $db);
//echo $query;  dopo l'esecuzione di una query ne mostra il risultato a video
while   ($row   =   mysql_fetch_array($result))
{   echo   "<a   href=\"index.php?pag=15&id=$row[id]\">"     .   "      $row[titolo]" . "      $row[ingredienteprincipale]</a><br>";   }
}
   elseif($_POST['azione'] == "portata"){
$chiave = $_POST['chiave']; 
$keys   =   explode   (",",   $chiave);
$query   =   "";
reset   ($keys);
while   (list(,$parola)   =   each   ($keys))
{   $parola   =   trim($parola);
if   ($parola   !=   "")
$query   .=   "tipopiatto   LIKE   '%$parola%'   OR   ";
}
$query   .=   "0";
$query   =   "SELECT   id,   titolo, tipopiatto   FROM   DBRicette   WHERE   "   .   $query;
$result   =   mysql_query($query,   $db);
//echo $query;  dopo l'esecuzione di una query ne mostra il risultato a video
while   ($row   =   mysql_fetch_array($result))
{   echo   "<a   href=\"index.php?pag=15&id=$row[id]\">"     .   "      $row[titolo]" . "      $row[tipopiatto]</a><br>";   }

}
  };
?>

questo è il file di paginazione

<?php

$paginazione = "Pagine totali: " . $tot_pages . "
[";
for($i = 1; $i <= $tot_pages; $i++) {
if($i == $current_page) {
$paginazione .= $i . " ";
} else {
$paginazione .= "<a href=\"?page=$i\" title=\"Vai alla pagina $i\">$i</a> ";
}
}
$paginazione .= "]";

?>
risposto 7 anni fa
blackeyes
X 0 X

nessun suggerimento...

risposto 7 anni fa
blackeyes
X 0 X
nessun suggerimento...

Perchè questa sollecitazione? A me danno abbastanza fastidio le sollecitazioni, tanto più che se non si risponde è o perchè non si sa rispondere o è perchè si può essere impegnati anche in altre cose...

Comunque perchè non usi l'offset nella tua query? (sarebbe più leggibile e il codice è trasportabile anche per altri db).

Inoltre cosa intendi con:

ho provato solo sul primo if...
risposto 7 anni fa
Mario Santagiuliana
modificato 7 anni fa
X 0 X

Ho letto la guida relativa alla paginazione su questo sito ma non ho capito molto bene come applicarlo al mio script inoltre mi pare di capire che l'offset si usa quando la quantita' di dati non è molto elevata o sbaglio??

Per quanto riguarda il primo if intendevo che avevo provato le modifiche solo sulla parte legata al pulsante cerca.

Per la sollecitazione mi scuso, non volevo infastidire nessuno. Non si ripeterà piu'.

risposto 7 anni fa
blackeyes
X 0 X

Riguardo all'offset nel post precedente ho detto una sciocchezza riguardo alla quantità di dati...

Allora per sviluppare un sistema di impaginazione, ci sono alcuni dati di cui avrei bisogno:

1. Il numero totale degli elementi della lista

2. Il numero di elementi o voci da inserire in ogni pagina

3. Il numero della pagina che deve essere mostrato

Nello script riportato la prima query estrae i dati in base alla parola presente nel campo cerca, successivamente vengono selezionati solo gli elementi che mi occorrono. Il problema è che il numero dei record della query cambia col variare della parola ricercata. A questo punto come estraggo il numero dei record dalla query?

Pensavo di ovviare con $count = mysql_query("SELECT COUNT(*) FROM DBRicette"); subito dopo il select ma non và...

risposto 7 anni fa
blackeyes
modificato 7 anni fa
X 0 X

Mi sembra che ti stai perdendo in un bicchier d'acqua  ;)

Allora, il limite di quanti dati visualizzare lo decidi te, l'hai già fatto con $per_page.

A te interessa mettere un offset(lo puoi anche fare con la dicitura sql che hai usato ma se inserisci offset forse si capisce meglio) in cui dici da che "numero" far partire il limite della query, cioè se la query deve restituire 10 risultati a partire dalla prima tupla o dalla decima tupla o dalla undicesima e così via.

Hai correttamente, mi pare, fatto un ciclo per far vedere i risultati...

Ora non capisco dove sta il problema...forse dimentichi per strada qualche variabile che passi tramite $GET nei link che crei nel tuo file di paginazione...

risposto 7 anni fa
Mario Santagiuliana
X 0 X
are con la dicitura sql che hai usato ma se inserisci offset forse si capisce meglio) in cui dici da che "numero" far partire il limite della query, cioè se la query deve restituire 10 risultati a partire dalla prima tupla o dalla decima tupla o dalla undicesima e così via.

non capisco come debbo inserirlo.... :-[ :-[

risposto 7 anni fa
blackeyes
X 0 X

continuo ad ottenere un elenco di numeri pagina e basta

risposto 7 anni fa
blackeyes
X 0 X
continuo ad ottenere un elenco di numeri pagina e basta

Puoi spiegarti meglio?

Comunque se cerchi sul web trovi un po' di documentazione, esempio questo:

http://www.petefreitag.com/item/451.cfm

Ciao

risposto 7 anni fa
Mario Santagiuliana
X 0 X

se vai qui vedi cosa intendo http://www.mondoricette.com/1/index.php?pag=1 inserisci "riso" e clicca su cerca, vedrai che al posto di tutte le ricette contenenti riso continuo ad ottenere un elenco di numeri pagina...

risposto 7 anni fa
blackeyes
X 0 X

Come fai il richiamo della pagina di paginazione?

Credo hai integrato in modo sbagliato i vari script...

risposto 7 anni fa
Mario Santagiuliana
X 0 X
<h1>Risultati della ricerca</h1><br>
<?php
error_reporting(E_ALL);
include ("config.inc.php");
include ("connect.inc.php");
if ($_POST) {
  if ($_POST['azione'] == "cerca") {
    $chiave = $_POST['chiave'];
    $keys = explode(",", $chiave);
    $query = "";
    reset($keys);
    while (list(, $parola) = each($keys)) {
      $parola = trim($parola);
      if ($parola != "")
        $query .= "titolo   LIKE   '%$parola%'   OR   ingredienti   LIKE   '%$parola%' OR   tipopiatto   LIKE   '%$parola%' OR   ingredienteprincipale   LIKE   '%$parola%' OR   regione   LIKE   '%$parola%' OR   note   LIKE   '%$parola%'    OR   ";
    }
    $query .= "0";
    $query = "SELECT   id,   titolo, ingredienteprincipale, regione   FROM   DBRicette   WHERE   " . $query;
    $count = mysql_query("SELECT COUNT(*) FROM DBRicette");
    $res_count = mysql_fetch_row($count);
// numero totale di records
    $tot_records = $res_count[0];
// risultati per pagina(secondo parametro di LIMIT)
    $per_page = 10;
// numero totale di pagine
    $tot_pages = ceil($tot_records / $per_page);
// pagina corrente
    $current_page = (!$_GET['page']) ? 1 : (int) $_GET['page'];
// primo parametro di LIMIT
    $primo = ($current_page - 1) * $per_page;
    $query = "SELECT   id,   titolo, ingredienteprincipale, regione   FROM   DBRicette LIMIT $primo, $per_page   WHERE   " . $query;
    $result = mysql_query($query, $db);
//echo $query;  dopo l'esecuzione di una query ne mostra il risultato a video
    while ($row = mysql_fetch_array($result)) {
      echo "<a   href=\"index.php?pag=15&id=$row[id]\">" . "      $row[titolo]" . "       </a><br>";
    }


//lo includo qui
// includiamo uno dei files contenenti la paginazione

    include ("paginazione.php");







// in questa cella inseriamo la paginazione
    echo " <tr>\n <td height=\"50\" valign=\"bottom\" align=\"center\">$paginazione</td>\n";
    echo " </tr>\n</table>\n</div>";
  }
  elseif ($_POST['azione'] == "principale") {
    $chiave = $_POST['chiave'];
    $keys = explode(",", $chiave);
    $query = "";
    reset($keys);
    while (list(, $parola) = each($keys)) {
      $parola = trim($parola);
      if ($parola != "")
        $query .= " ingredienteprincipale   LIKE   '%$parola%'   OR   ";
    }
    $query .= "0";
    $query = "SELECT   id,   titolo, ingredienteprincipale   FROM   DBRicette   WHERE   " . $query;
    $result = mysql_query($query, $db);
//echo $query;  dopo l'esecuzione di una query ne mostra il risultato a video
    while ($row = mysql_fetch_array($result)) {
      echo "<a   href=\"index.php?pag=15&id=$row[id]\">" . "      $row[titolo]" . "      $row[ingredienteprincipale]</a><br>";
    }
  }
  elseif ($_POST['azione'] == "portata") {
    $chiave = $_POST['chiave'];
    $keys = explode(",", $chiave);
    $query = "";
    reset($keys);
    while (list(, $parola) = each($keys)) {
      $parola = trim($parola);
      if ($parola != "")
        $query .= "tipopiatto   LIKE   '%$parola%'   OR   ";
    }
    $query .= "0";
    $query = "SELECT   id,   titolo, tipopiatto   FROM   DBRicette   WHERE   " . $query;
    $result = mysql_query($query, $db);
//echo $query;  dopo l'esecuzione di una query ne mostra il risultato a video
    while ($row = mysql_fetch_array($result)) {
      echo "<a   href=\"index.php?pag=15&id=$row[id]\">" . "      $row[titolo]" . "      $row[tipopiatto]</a><br>";
    }
  }
}
;
?>

l'ho evidenziato sul codice

risposto 7 anni fa
blackeyes
modificato 7 anni fa
X 0 X

Ho fatto un passo indietro, dallo script funzionante, senza la parte relativa alla paginazione ossia quello riportato nel primo post, ho  varie prove cambiando il select da

$query = "SELECT   id,   titolo, ingredienteprincipale, regione   FROM   DBRicette   WHERE      " . $query;

a cosi

$query = "SELECT   id,   titolo, ingredienteprincipale, regione   FROM   DBRicette   WHERE   LIMIT   0,15   " . $query;

e cosi

$query = "SELECT   id,   titolo, ingredienteprincipale, regione   FROM   DBRicette   ORDER   BY    RAND() DESC   LIMIT   0,15  " . $query;

ma facendo eseguire le query non viene visualizzato nessun dato.

A questo punto mi viene il dubbio che mi sfugga qualche cosa legato alla teoria... Il limit e l'eventuale offset và definito nel select e non nella prima query ossia quella  giusto?

Perche' qualsiasi cambiamento del select non mi visualizza i dati?

risposto 7 anni fa
blackeyes
modificato 7 anni fa
X 0 X

Mi sembra hai fatto benissimo a fare questo passo indietro per capire le cose  O0

Il limit lo imposti nel select.

Proverei prima con un limit "statico" in modo tale che capisci il funzionamento della cosa, da un tuo esempio:

$query = "SELECT   id,   titolo, ingredienteprincipale, regione   FROM   DBRicette   ORDER   BY    RAND() DESC   LIMIT   0,15  " . $query;

Farei così:

$query = "SELECT   id,   titolo, ingredienteprincipale, regione   FROM   DBRicette   ORDER   BY    RAND() DESC " . $query ."LIMIT 10 OFFSET 0";

Per far visualizzare i risultati 11-20 imposta OFFSET a 10.

risposto 7 anni fa
Mario Santagiuliana
X 0 X

a me in effetti no occorre che vengano estratti  casualmente quindi ho inserito questa dicitura

$query = "SELECT   id,   titolo, ingredienteprincipale, regione   FROM   DBRicette   WHERE " . $query . "LIMIT 15 OFFSET 0";

ma ricevo sempre la pagina bianca sembra non estrarre alcun dato...

la stessa cosa accade rettificando cosi

$query = "SELECT   id,   titolo, ingredienteprincipale, regione   FROM   DBRicette   ORDER   BY    RAND() DESC " . $query ."LIMIT 10 OFFSET 0";

come mai?

risposto 7 anni fa
blackeyes
modificato 7 anni fa
X 0 X

ho provato anche a togliere gli spazi tra .$query. ma niente

risposto 7 anni fa
blackeyes
X 0 X

Puoi dare l'output finale della stringa "$query"?

Prova a togliere anche l'offset e vedi se restituisce i primi 15 risultati...

risposto 7 anni fa
Mario Santagiuliana
X 0 X

    $query = "SELECT   id,   titolo, ingredienteprincipale, regione   FROM   DBRicette   ORDER   BY    RAND() DESC ".$query."LIMIT 10";

cosi non cambia nulla...

l'output finale della stringa "$query"? Come?

SELECT id, titolo, ingredienteprincipale, regione FROM DBRicette ORDER BY RAND() DESC titolo LIKE '%vino%' OR ingredienti LIKE '%vino%' OR tipopiatto LIKE '%vino%' OR ingredienteprincipale LIKE '%vino%' OR regione LIKE '%vino%' OR note LIKE '%vino%' OR 0LIMIT 10

eccolo!

risposto 7 anni fa
blackeyes
modificato 7 anni fa
X 0 X

ho provato anche cosi;inserito a inizio pagina

if (!isset($start) OR $start<0) $start=0; $step = 20;

ed eseguito la query:

$query = "SELECT id, titolo, ingredienteprincipale, regione FROM DBRicette ORDER BY RAND() DESC " . $query ."LIMIT $start, $step";

 il risultato è sempre lo stesso pagina bianca ecco l'echo della query

SELECT id, titolo, ingredienteprincipale, regione FROM DBRicette ORDER BY RAND() DESC titolo LIKE '%riso%' OR ingredienti LIKE '%riso%' OR tipopiatto LIKE '%riso%' OR ingredienteprincipale LIKE '%riso%' OR regione LIKE '%riso%' OR note LIKE '%riso%' OR 0LIMIT 0, 20

il select va' solo cosi

$query = "SELECT id, titolo, ingredienteprincipale, regione FROM DBRicette WHERE " . $query;

come mai?

risposto 7 anni fa
blackeyes
X 0 X

Osserva bene il select:

SELECT id, titolo, ingredienteprincipale, regione FROM DBRicette ORDER BY RAND() DESC titolo LIKE '%riso%' OR ingredienti LIKE '%riso%' OR tipopiatto LIKE '%riso%' OR ingredienteprincipale LIKE '%riso%' OR regione LIKE '%riso%' OR note LIKE '%riso%' OR 0LIMIT 0, 20

Hai questo forse che da problemi:

OR 0LIMIT 0, 20

Metti uno spazio prima di "LIMIT" e/o togli l'ultimo "OR".

Ma non ottieni nessun particolare errore dal php?

risposto 7 anni fa
Mario Santagiuliana
X 0 X

con lo spazio prima di limit ottengo

SELECT id, titolo, ingredienteprincipale, regione FROM DBRicette ORDER BY RAND() DESC titolo LIKE '%riso%' OR ingredienti LIKE '%riso%' OR tipopiatto LIKE '%riso%' OR ingredienteprincipale LIKE '%riso%' OR regione LIKE '%riso%' OR note LIKE '%riso%' OR 0 LIMIT 0, 20

non mi segnala nessun errore il php

risposto 7 anni fa
blackeyes
X 0 X

togliendo l'OR

SELECT id, titolo, ingredienteprincipale, regione FROM DBRicette ORDER BY RAND() DESC titolo LIKE '%riso%' OR ingredienti LIKE '%riso%' OR tipopiatto LIKE '%riso%' OR ingredienteprincipale LIKE '%riso%' OR regione LIKE '%riso%' OR note LIKE '%riso%' 0 LIMIT 0, 20

risposto 7 anni fa
blackeyes
X 0 X

No...non hai capito...non cosa ottieni come stringa, cosa ottieni dalla tua pagina php.

Se togli l'OR dovresti togliere anche il valore successivo (che sta prima del limit) cioè lo 0 che non so come mai lo hai li...

risposto 7 anni fa
Mario Santagiuliana
X 0 X

ottengo sempre la pagina bianca...

ho tolto l'or ma lo zero è rimasto, che lo prenda da qui?

if (!isset($start) OR $start<0)

$start=0;

$step = 20;

risposto 7 anni fa
blackeyes
X 0 X

la query dove era presente l'or è questa

            $query .= "titolo   LIKE   '%$parola%'   OR   ingredienti   LIKE   '%$parola%' OR   tipopiatto   LIKE   '%$parola%' OR   ingredienteprincipale   LIKE   '%$parola%' OR   regione   LIKE   '%$parola%' OR   note   LIKE   '%$parola%' ";
risposto 7 anni fa
blackeyes
X 0 X

ho rimosso

if (!isset($start) OR $start<0)

$start=0;

$step = 20;

e riformulato il  select:

$query = "SELECT id, titolo, ingredienteprincipale, regione FROM DBRicette ORDER BY RAND() DESC " . $query ." LIMIT 0,15";

ma a video sempre la pagina bianca e l'echo della query presenta sempre lo 0 prima del limit

risposto 7 anni fa
blackeyes
X 0 X

allora alla riga 21 dello script c'e'    $query .= "0"; ho provato sia a farlo diventare   //  $query .= "0"; che    $query .= ""; in entrambi i casi lo 0 sparisce ma il risultato non cambia a video solo una pagina bianca...

Sembra funzionare solo col WHERE

risposto 7 anni fa
blackeyes
X 0 X

1- non scrivere troppi messaggi di seguito!!! Usa il tasto modifica

2- dire: "ottengo una pagina bianca" non serve a niente, riporta i log di php per capire che errore genera questa pagina bianca.

3- sospetto che il tutto dipenda dalla query creata male, inoltre mi pare ti stai confondendo un po' e hai perso per strada la sintassi sql...il where ci deve essere se ci  metti delle condizioni...

Di conseguenza prova nel tuo codice ad usare questa query in modo statico:

SELECT id, titolo, ingredienteprincipale, regione FROM DBRicette ORDER BY RAND() DESC WHERE titolo LIKE '%riso%' OR ingredienti LIKE '%riso%' OR tipopiatto LIKE '%riso%' OR ingredienteprincipale LIKE '%riso%' OR regione LIKE '%riso%' OR note LIKE '%riso%' LIMIT 0, 20
risposto 7 anni fa
Mario Santagiuliana
X 0 X

OK hai ragione sia per i messaggi che per la pagina bianca capisco che non sia di molto aiuto, ma come ottengo i log di php?

modificando lo script in questo modo

if ($_POST) {
   if ($_POST['azione'] == "cerca") {
      $chiave = $_POST['chiave'];
      $keys = explode(",", $chiave);
      $query = "";
      reset($keys);
      while (list(, $parola) = each($keys)) {
         $parola = trim($parola);
         if ($parola != "")
            $query .= "titolo   LIKE   '%$parola%'   OR   ingredienti   LIKE   '%$parola%' OR   tipopiatto   LIKE   '%$parola%' OR   ingredienteprincipale   LIKE   '%$parola%' OR   regione   LIKE   '%$parola%' OR   note   LIKE   '%$parola%' LIMIT 0, 20 ";
      }
    //  $query .= "0";
      $query = "SELECT id, titolo, ingredienteprincipale, regione FROM DBRicette WHERE " . $query ;
      $result = mysql_query($query, $db);
//echo $query;  //dopo l'esecuzione di una query ne mostra il risultato a video
      while ($row = mysql_fetch_array($result)) {
         echo "<a   href=\"index.php?pag=15&id=$row[id]\">" . "      $row[titolo]" . "       </a><br>";
      }
   }

funziona, vengono visualizzati i primi 20 risultati

mi aiuteresti a capire una cosa? Nello script senza il limit la riga      $query .= "0"; non era commentata e lo script andava, aggiungendo il limit per farlo funzionare ho dovuto commentarla perche'?

Inoltre il parametro where del select non prende i parametri da $query?

Capisco che possano sembrarti domande un po' banali ma mi aiutano a capire un po' meglio il tutto...

risposto 7 anni fa
blackeyes
modificato 7 anni fa
X 0 X
<?php
error_reporting(E_ALL);
include ("config.inc.php");
include ("connect.inc.php");

// imposto il limit per la query
If (!isset($start) OR $start<0)
$start=0;
$step = 15;

if ($_POST) {
   if ($_POST['azione'] == "cerca") {
      $chiave = $_POST['chiave'];
      $keys = explode(",", $chiave);
      $query = "";
      reset($keys);
      while (list(, $parola) = each($keys)) {
         $parola = trim($parola);
         if ($parola != "")
            $query .= "titolo   LIKE   '%$parola%'   OR   ingredienti   LIKE   '%$parola%' OR   tipopiatto   LIKE   '%$parola%' OR   ingredienteprincipale   LIKE   '%$parola%' OR   regione   LIKE   '%$parola%' OR   note   LIKE   '%$parola%' LIMIT $start, $step ";
      }
    //  $query .= "0";
      $query = "SELECT id, titolo, ingredienteprincipale, regione FROM DBRicette WHERE " . $query ;
      $result = mysql_query($query, $db);
//echo $query;  //dopo l'esecuzione di una query ne mostra il risultato a video
      while ($row = mysql_fetch_array($result)) {
         echo "<a   href=\"index.php?pag=15&id=$row[id]\">" . "      $row[titolo]" . "       </a><br>";
      }
      // ricavo il numero totale di record
$query = "SELECT COUNT(*) FROM DBRicette " ;
$result = mysql_query($query);
// record complessivi
$tot_righe = mysql_result($result,0);
// totale pagine
$tot_pagine = ceil($tot_righe / $step);
echo $tot_pagine;
   }

per ricavare il numero delle pagine pensavo di fare cosi ma credo che in questo modo prenda in esME tutti i record presenti nel db o sbaglio?

risposto 7 anni fa
blackeyes
X 0 X

ho provato anche così

$query = "SELECT COUNT (*) FROM DBRicette WHERE titolo   LIKE   '%$parola%'   OR  ingredienti   LIKE   '%$parola%' OR   tipopiatto   LIKE   '%$parola%' OR   ingredienteprincipale   LIKE   '%$parola%' OR   regione   LIKE   '%$parola%' OR   note   LIKE   '%$parola%' " ;                         

ma ricevo 0 come numero di record

risposto 7 anni fa
blackeyes
X 0 X
mi aiuteresti a capire una cosa? Nello script senza il limit la riga      $query .= "0"; non era commentata e lo script andava, aggiungendo il limit per farlo funzionare ho dovuto commentarla perche'?

Alla fine costruivi male la tua query...a parte che mettevi un or insensato "OR 0"...non capisco che senso abbia e poi mi sembrava che attaccavi direttamente limit allo 0: "0LIMIT"...da cui la pagina bianca probabilmente.

Inoltre il parametro where del select non prende i parametri da $query?

Eh??

ho provato anche così

$query = "SELECT COUNT (*) FROM DBRicette WHERE titolo   LIKE   '%$parola%'   OR  ingredienti   LIKE   '%$parola%' OR   tipopiatto   LIKE   '%$parola%' OR   ingredienteprincipale   LIKE   '%$parola%' OR   regione   LIKE   '%$parola%' OR   note   LIKE   '%$parola%' " ;                         

ma ricevo 0 come numero di record

Hai creato la query esattamente così? e $parola che valore assume?

risposto 7 anni fa
Mario Santagiuliana
X 0 X
Alla fine costruivi male la tua query...a parte che mettevi un or insensato "OR 0"...non capisco che senso abbia e poi mi sembrava che attaccavi direttamente limit allo 0: "0LIMIT"...da cui la pagina bianca probabilmente.

sicuramente.

ho provato anche così

$query = "SELECT COUNT (*) FROM DBRicette WHERE titolo   LIKE   '%$parola%'   OR  ingredienti   LIKE   '%$parola%' OR   tipopiatto   LIKE   '%$parola%' OR   ingredienteprincipale   LIKE   '%$parola%' OR   regione   LIKE   '%$parola%' OR   note   LIKE   '%$parola%' " ;                         

ma ricevo 0 come numero di record

Hai creato la query esattamente così? e $parola che valore assume?

$parola assume di volta in volta il valore che gli viene passato da un campo input per effettuare la ricerca delle ricette

risposto 7 anni fa
blackeyes
modificato 7 anni fa
X 0 X

se ragionassi sempre sul totale dei record la paginazione sarebbe sballata no?

risposto 7 anni fa
blackeyes
modificato 7 anni fa
X 0 X

Cosa intendi?

Scusa...mi sono un po' perso...potresti dare ora la pagina php come è ora scritta?

risposto 7 anni fa
Mario Santagiuliana
X 0 X
<h1>Risultati della ricerca</h1><br>
<?php
error_reporting(E_ALL);
include ("config.inc.php");
include ("connect.inc.php");

// imposto il limit per la query
If (!isset($start) OR $start<0)
$start=0;
$step = 15;

if ($_POST) {
   if ($_POST['azione'] == "cerca") {
      $chiave = $_POST['chiave'];
      $keys = explode(",", $chiave);
      $query = "";
      reset($keys);
      while (list(, $parola) = each($keys)) {
         $parola = trim($parola);
         if ($parola != "")
            $query .= "titolo   LIKE   '%$parola%'   OR   ingredienti   LIKE   '%$parola%' OR   tipopiatto   LIKE   '%$parola%' OR   ingredienteprincipale   LIKE   '%$parola%' OR   regione   LIKE   '%$parola%' OR   note   LIKE   '%$parola%' LIMIT $start, $step ";
      }
    //  $query .= "0";
      $query = "SELECT id, titolo, ingredienteprincipale, regione FROM DBRicette WHERE " . $query ;
      $result = mysql_query($query, $db);
//echo $query;  //dopo l'esecuzione di una query ne mostra il risultato a video
      while ($row = mysql_fetch_array($result)) {
         echo "<a   href=\"index.php?pag=15&id=$row[id]\">" . "      $row[titolo]" . "       </a><br>";
      }
      // ricavo il numero totale di record
$query = "SELECT COUNT(*) FROM DBRicette WHERE titolo   LIKE   '%$parola%'   OR   ingredienti   LIKE   '%$parola%' OR   tipopiatto   LIKE   '%$parola%' OR   ingredienteprincipale   LIKE   '%$parola%' OR   regione   LIKE   '%$parola%' OR   note   LIKE   '%$parola%'";
$result = mysql_query($query);
// record complessivi
$tot_righe = mysql_result($result,0);
// totale pagine
$tot_pagine = ceil($tot_righe / $step);
echo $tot_pagine;
   }
   elseif ($_POST['azione'] == "principale") {
      $chiave = $_POST['chiave'];
      $keys = explode(",", $chiave);
      $query = "";
      reset($keys);
      while (list(, $parola) = each($keys)) {
         $parola = trim($parola);
         if ($parola != "")
            $query .= " ingredienteprincipale   LIKE   '%$parola%'  LIMIT $start, $step   ";
      }
     // $query .= "0";
      $query = "SELECT   id,   titolo, ingredienteprincipale   FROM   DBRicette   WHERE   " . $query;
      $result = mysql_query($query, $db);
//echo $query;  dopo l'esecuzione di una query ne mostra il risultato a video
      while ($row = mysql_fetch_array($result)) {
         echo "<a   href=\"index.php?pag=15&id=$row[id]\">" . "      $row[titolo]" . "      $row[ingredienteprincipale]</a><br>";
      }
   }
   elseif ($_POST['azione'] == "portata") {
      $chiave = $_POST['chiave'];
      $keys = explode(",", $chiave);
      $query = "";
      reset($keys);
      while (list(, $parola) = each($keys)) {
         $parola = trim($parola);
         if ($parola != "")
            $query .= "tipopiatto   LIKE   '%$parola%'   LIMIT $start, $step   ";
      }
     // $query .= "0";
      $query = "SELECT   id,   titolo, tipopiatto   FROM   DBRicette   WHERE   " . $query;
      $result = mysql_query($query, $db);
//echo $query;  dopo l'esecuzione di una query ne mostra il risultato a video
      while ($row = mysql_fetch_array($result)) {
         echo "<a   href=\"index.php?pag=15&id=$row[id]\">" . "      $row[titolo]" . "      $row[tipopiatto]</a><br>";
      }
   }
}
;
?>
risposto 7 anni fa
blackeyes
X 0 X

Da questo codice:

   if ($_POST['azione'] == "cerca") {

      $chiave = $_POST['chiave'];

      $keys = explode(",", $chiave);

      $query = "";

      reset($keys);

      while (list(, $parola) = each($keys)) {

         $parola = trim($parola);

         if ($parola != "")

            $query .= "titolo   LIKE   '%$parola%'   OR   ingredienti   LIKE   '%$parola%' OR   tipopiatto   LIKE   '%$parola%' OR   ingredienteprincipale   LIKE   '%$parola%' OR   regione   LIKE   '%$parola%' OR   note   LIKE   '%$parola%' LIMIT $start, $step ";

      }

    //  $query .= "0";

      $query = "SELECT id, titolo, ingredienteprincipale, regione FROM DBRicette WHERE " . $query ;

      $result = mysql_query($query, $db);

//echo $query;  //dopo l'esecuzione di una query ne mostra il risultato a video

      while ($row = mysql_fetch_array($result)) {

         echo "<a   href=\"index.php?pag=15&id=$row[id]\">" . "      $row[titolo]" . "       </a><br>";

      }

Credo sia il caso di costruire meglio la tua query....mi sembra troppo lunga.

Allora una persona può usare più chiavi di ricerca giusto?

risposto 7 anni fa
Mario Santagiuliana
X 0 X

Si in pratica il file prende i dati da un campo input e alimenta la variabile $parola sulla quale poi si basa la query per l'estrazione delle ricette. Ora la prima query col relativo select funziona, il problema è che dovrei successivamente estrarre il numero dei record risultanti dalla query e non da tutti quelli presenti nel db

risposto 7 anni fa
blackeyes
modificato 7 anni fa
X 0 X

Ho fatto qualche altra prova

<h1>Risultati della ricerca</h1><br>
<?php
error_reporting(E_ALL);
include ("config.inc.php");
include ("connect.inc.php");
// imposto il limit per la query
If (!isset ($start) OR $start < 0)
   $start = 0;
$step = 15;
if ($_POST) {
   if ($_POST['azione'] == "cerca") {
      $chiave = $_POST['chiave'];
      $keys = explode(",", $chiave);
      $query = "";
      reset($keys);
      while (list(, $parola) = each($keys)) {
         $parola = trim($parola);
         if ($parola != "")
            $query .= "titolo   LIKE   '%$parola%'   OR   ingredienti   LIKE   '%$parola%' OR   tipopiatto   LIKE   '%$parola%' OR   ingredienteprincipale   LIKE   '%$parola%' OR   regione   LIKE   '%$parola%' OR   note   LIKE   '%$parola%' LIMIT $start, $step ";
      }
//  $query .= "0";
      $query = "SELECT id, titolo, ingredienteprincipale, regione FROM DBRicette WHERE " . $query;
      $result = mysql_query($query, $db);
//echo $query;  //dopo l'esecuzione di una query ne mostra il risultato a video
      while ($row = mysql_fetch_array($result)) {
         echo "<a   href=\"index.php?pag=15&id=$row[id]\">" . "      $row[titolo]" . "       </a><br>";
      }
// ricavo il numero totale di record
      $query1 = "SELECT COUNT(*) FROM DBRicette WHERE " . $query;
      $result1 = mysql_query($query);
// record complessivi
      $tot_righe = mysql_result($result1, 0);
// totale pagine
      $tot_pagine = ceil($tot_righe / $step);
      echo $tot_pagine;
   }

Cosi' il numero delle ricette riportato in fondo varia ma in effetti non sono certo della correttezza del numero riportato....

qui invece

   elseif ($_POST['azione'] == "principale") {
      $chiave = $_POST['chiave'];
      $keys = explode(",", $chiave);
      $query = "";
      reset($keys);
      while (list(, $parola) = each($keys)) {
         $parola = trim($parola);
         if ($parola != "")
            $query .= " ingredienteprincipale   LIKE   '%$parola%'  LIMIT $start, $step   ";
      }
// $query .= "0";
      $query = "SELECT   id,   titolo, ingredienteprincipale   FROM   DBRicette   WHERE   " . $query;
      $result = mysql_query($query, $db);
//echo $query;  dopo l'esecuzione di una query ne mostra il risultato a video
      while ($row = mysql_fetch_array($result)) {
         echo "<a   href=\"index.php?pag=15&id=$row[id]\">" . "      $row[titolo]" . "      $row[ingredienteprincipale]</a><br>";
      }
      //otteniamo il numero di righe
$tot_righe=mysql_num_rows($query);
//stampiamo il risultato
echo $tot_righe;

   }

ho usato mysql_num_rows ma a fondo pagina inserendo nel campo  input un ingrediente principale tipo "riso" irecord vengono estratti e visualizzati ma a fondo pagina l'echo non viene visualizzato come mai??? A limite non dovrebbe comparire 0 ??

http://test.mondoricette.com/index.php?pag=1

risposto 7 anni fa
blackeyes
X 0 X
// ricavo il numero totale di record
      $query1 = "SELECT COUNT(*) FROM DBRicette WHERE " . $query;
      $result1 = mysql_query($query);
// record complessivi
      $tot_righe = mysql_result($result1, 0);
// totale pagine
      $tot_pagine = ceil($tot_righe / $step);
      echo $tot_pagine;
   }

In questo modo sulle altre 2 query funziona, il problema lo riscontro solo sulla prima perche' credo non sia molto corretta la query

risposto 7 anni fa
blackeyes
X 0 X

ci deve essere per forza qualche errore, se eseguo la query sulla portata selezionando antipasto ottengo 2 come numero di pagine il che sta a significare che ci sono 2 pagine contenenti 15 ( $step=15) ricette ciascuna cosa non possibile perche' ho provato sul db attualmente in linea e ne risultano molte di piu'. Allora mi son detto proviamo ad aumentare il limite nella variabile step a 150000 e vediamo cosa succede; i record vengono estratti tutti e a fondo pagina compare correttamente il numero 1 che indica il numero delle pagine generate dalla query.

Cosa c'e' di sbagliato??

risposto 7 anni fa
blackeyes
X 0 X

eseguendo questo codice

<h1>Risultati della ricerca</h1><br>
<?php
error_reporting(E_ALL);
include ("config.inc.php");
include ("connect.inc.php");
// imposto il limit per la query
If (!isset ($start) OR $start < 0)
   $start = 0;
   $step = 15;
if ($_POST) {
   if ($_POST['azione'] == "cerca") {
      $chiave = $_POST['chiave'];
      $keys = explode(",", $chiave);
      $query = "";
      reset($keys);
      while (list(, $parola) = each($keys)) {
         $parola = trim($parola);
         if ($parola != "")
            $query .= "titolo   LIKE   '%$parola%'   OR   ingredienti   LIKE   '%$parola%' OR   tipopiatto   LIKE   '%$parola%' OR   ingredienteprincipale   LIKE   '%$parola%' OR   regione   LIKE   '%$parola%' OR   note   LIKE   '%$parola%' LIMIT $start, $step ";
      }
//  $query .= "0";
      $query = "SELECT id, titolo, ingredienteprincipale, regione FROM DBRicette WHERE " . $query;
      $result = mysql_query($query, $db);
//echo $query;  //dopo l'esecuzione di una query ne mostra il risultato a video
      while ($row = mysql_fetch_array($result)) {
         echo "<a   href=\"index.php?pag=15&id=$row[id]\">" . "      $row[titolo]" . "       </a><br>";
      }
// ricavo il numero totale di record
      $query1 = "SELECT COUNT(*) FROM DBRicette WHERE " . $query;
      $result1 = mysql_query($query);
      echo ($result1);
// record complessivi
  $tot_righe = mysql_result($result1,0);
// totale pagine
      $tot_pagine = ceil($tot_righe / $step);


   }

ricevo questo errore Resource id #10 che vuol dire?

Possibile che non riesco ad ottenere il numero dei record estratti da una query?? ::) ::) ::)

risposto 7 anni fa
blackeyes
X 0 X

Ti faccio notare che crei in modo errato la seconda query:

      $query1 = "SELECT COUNT(*) FROM DBRicette WHERE " . $query;

      $result1 = mysql_query($query);

$query ha questo valore:

      $query = "SELECT id, titolo, ingredienteprincipale, regione FROM DBRicette WHERE " . $query;

Inoltre mandi la query prima e non la $query1...

risposto 7 anni fa
Mario Santagiuliana
X 0 X

ho modificato lo script cosi' per vedere cosa accadeva

elseif ($_POST['azione'] == "principale") {
      $chiave = $_POST['chiave'];
      $keys = explode(",", $chiave);
      $query = "";
      reset($keys);
      while (list(, $parola) = each($keys)) {
         $parola = trim($parola);
         if ($parola != "")
            $query .= " ingredienteprincipale   LIKE   '%$parola%'  LIMIT $start, $step   ";
      }
      $query = "SELECT   id,   titolo, ingredienteprincipale   FROM   DBRicette   WHERE   " . $query;
      $result = mysql_query($query, $db);
//echo $query;  dopo l'esecuzione di una query ne mostra il risultato a video
      while ($row = mysql_fetch_array($result)) {
         echo "<a   href=\"index.php?pag=15&id=$row[id]\">" . "      $row[titolo]" . "      $row[ingredienteprincipale]</a><br>";
      }
      // ricavo il numero totale di record
      $query1 = " SELECT COUNT(*) FROM DBRicette WHERE ingredienteprincipale LIKE '%$parola%' ";
echo($query1);
   $result1 = mysql_query($query1);
echo($result1);
die;

inserendo ad esempio riso ottengo a video

SELECT COUNT(*) FROM DBRicette WHERE ingredienteprincipale LIKE '%%' Resource id #10

puo' darsi che si "perda per strada la variabile $parola " ?

anche sostituendo questo  $query1 = " SELECT COUNT(*) FROM DBRicette WHERE ingredienteprincipale LIKE '%$parola%' ";

con  $query1 = " SELECT COUNT(*) FROM DBRicette WHERE ingredienteprincipale LIKE 'riso' ";

il risultato non cambia ricevo sempre a video SELECT COUNT(*) FROM DBRicette WHERE ingredienteprincipale LIKE 'riso' Resource id #10

risposto 7 anni fa
blackeyes
modificato 7 anni fa
X 0 X

Prova momentaneamente così allora, per tagliare la testa al toro su $parola:

      $query1 = " SELECT COUNT(*) FROM DBRicette WHERE ingredienteprincipale LIKE '%".$parola."%' ";
risposto 7 anni fa
Mario Santagiuliana
X 0 X

Prova momentaneamente così allora, per tagliare la testa al toro su $parola:

      $query1 = " SELECT COUNT(*) FROM DBRicette WHERE ingredienteprincipale LIKE '%".$parola."%' ";

ottengo sempre SELECT COUNT(*) FROM DBRicette WHERE ingredienteprincipale LIKE '%%'

Resource id #10

se la eseguo con phpmyadmin il valore dei record  viene restituito correttamente 122

risposto 7 anni fa
blackeyes
modificato 7 anni fa
X 0 X

Scusa, ho riletto ora il codice...per forza non può funzionare, tu $parola lo ricavi così:

      while (list(, $parola) = each($keys)) {

         $parola = trim($parola);

         if ($parola != "")

            $query .= "titolo   LIKE   '%$parola%'   OR   ingredienti   LIKE   '%$parola%' OR   tipopiatto   LIKE   '%$parola%' OR   ingredienteprincipale   LIKE   '%$parola%' OR   regione   LIKE   '%$parola%' OR   note   LIKE   '%$parola%' LIMIT $start, $step ";

      }

Quale sarebbe il suo valore finale?

Forse è il caso che prima inizi a fare ricerche utilizzando una unica chiave di ricerca e poi eventualmente estendi il tutto usando più chiavi no?

risposto 7 anni fa
Mario Santagiuliana
X 0 X

la ricavo in questo modo perche' voglio che vengano estratte nel primo caso tutte le ricette che contengono la parola inserita nel campo input in uno qualsiasi dei campi presenti nel db...

Forse è il caso che prima inizi a fare ricerche utilizzando una unica chiave di ricerca e poi eventualmente estendi il tutto usando più chiavi no?

Sono aperto a qualsiasi tipo di soluzione ma come si fa? :-[ :-[

La cosa che cmq non capisco è che quando sostituisco manualmente nello script  a $parola il valore che dovrebbe assumere nella query " SELECT COUNT(*) FROM DBRicette WHERE ingredienteprincipale LIKE .... continua a non funzionare

risposto 7 anni fa
blackeyes
modificato 7 anni fa
X 0 X
La cosa che cmq non capisco è che quando sostituisco manualmente nello script  a $parola il valore che dovrebbe assumere nella query " SELECT COUNT(*) FROM DBRicette WHERE ingredienteprincipale LIKE .... continua a non funzionare

Cosa? :o Ma avevi detto andava con phpmyadmin...

Puoi farci vedere la query come la imposti staticamente?

Forse è il caso che prima inizi a fare ricerche utilizzando una unica chiave di ricerca e poi eventualmente estendi il tutto usando più chiavi no?

Sono aperto a qualsiasi tipo di soluzione ma come si fa? :-[ :-[

Intendo che secondo me prima dovresti iniziare a sviluppare lo script pensando che l'utente inserisca solo 1 unico termine per la ricerca (tipo "riso") e non due o più (tipo "riso al tartufo") non so se mi sono spiegato...

ciao

risposto 7 anni fa
Mario Santagiuliana
X 0 X

con phpmyadmin va intendevo modificando manualmente lo script result.php

Intendo che secondo me prima dovresti iniziare a sviluppare lo script pensando che l'utente inserisca solo 1 unico termine per la ricerca (tipo "riso") e non due o più (tipo "riso al tartufo") non so se mi sono spiegato...

infatti vuole essere concepito cosi' lo script solo che il termine "riso" deve essere ricercato in tutti i campi del db

risposto 7 anni fa
blackeyes
X 0 X

E come mai allora interpreti tutto come se l'utente inserisca più dati?

Hai messo forse un while che non serve...

      while (list(, $parola) = each($keys)) {
risposto 7 anni fa
Mario Santagiuliana
X 0 X

non sapevo che in questo modo venisse previsto l'inserimento di piu' dati :-[

Dici che il problema è qui... Come potrei ovviare?

risposto 7 anni fa
blackeyes
X 0 X

Semplicemente ti viene passato un parametro tramite POST, tu semplicemente lo "purifichi" da tutti quei caratteri/codici che possono mettere a rischio il tuo script e lo utilizzi tranquillamente...non vedo dove stia la difficoltà...

risposto 7 anni fa
Mario Santagiuliana
X 0 X

OK ok ma continuo a non capire come il fatto che ipoteticamente potrei passare piu' parametri possa influire sulla query di conta dei record tanto piu' che cmq di parametro ne passo  uno solo.... tra le altre cose se passo la query di estrazione dei record e non di conta i record vengono estratti regolarmente infatti se imposto lo $step a 15000 vedo tutti i record correttamente. A mio avviso il problema è sulla query di conta dei record ma non capisco quale sia...

Ho cercato sulla rete ma non sono riuscito a capire Resource id #10

 cosa significhi...

risposto 7 anni fa
blackeyes
modificato 7 anni fa
X 0 X

Hai un errore nella query con quel resource.

Infatti viene sbagliato il LIKE.

Prova così:

elseif ($_POST['azione'] == "principale") {
      $chiave = $_POST['chiave'];
      $keys = explode(",", $chiave);
      $parola = $keys[0];

      $query = "SELECT   id,   titolo, ingredienteprincipale   FROM   DBRicette   WHERE ingredienteprincipale   LIKE   '%$parola%'  LIMIT $start, $step   ";
      $result = mysql_query($query, $db);

//echo $query;  dopo l'esecuzione di una query ne mostra il risultato a video

      while ($row = mysql_fetch_array($result)) {
         echo "<a   href=\"index.php?pag=15&id=$row[id]\">" . "      $row[titolo]" . "      $row[ingredienteprincipale]</a><br>";
      }
      // ricavo il numero totale di record
      $query1 = " SELECT COUNT(*) FROM DBRicette WHERE ingredienteprincipale LIKE '%$parola%' ";
echo($query1);
   $result1 = mysql_query($query1);
echo($result1);
die;

Fai le dovute modifiche per adattarlo al tuo codice.

risposto 7 anni fa
Mario Santagiuliana
X 0 X

ricevo sempre SELECT COUNT(*) FROM DBRicette WHERE ingredienteprincipale LIKE '%riso%' che è l'echo della query e Resource id #10 che è l'echo del result pero' adesso la parola 'riso' viene passata...

Anche modificando la query1 cosi SELECT COUNT(*) FROM DBRicette senza mettere altro ricevo sempre Resource id #10

risposto 7 anni fa
blackeyes
modificato 7 anni fa
X 0 X

Sembra come se non venissero accettate ulteriori query....

risposto 7 anni fa
blackeyes
X 0 X

No, sono stato un pirla pure io...è sbagliata questa sintassi e logica di funzionamento:

/ ricavo il numero totale di record

      $query1 = " SELECT COUNT(*) FROM DBRicette WHERE ingredienteprincipale LIKE '%$parola%' ";

echo($query1);

   $result1 = mysql_query($query1);

echo($result1);

Prova così:

/ ricavo il numero totale di record
      $query1 = " SELECT COUNT(*) FROM DBRicette WHERE ingredienteprincipale LIKE '%$parola%' ";
echo($query1);
   $result1 = mysql_query($query1);
   echo mysql_result($result1, 0);
risposto 7 anni fa
Mario Santagiuliana
X 0 X

Sembra andare ma non vi e' coerenza tra i numeri se eseguo la query dallo script ricevo SELECT COUNT(*) FROM DBRicette WHERE ingredienteprincipale LIKE '%riso%' 145 mentre la stessa con phpadmin da 122 ::) ::) ::) ::) come mai?

risposto 7 anni fa
blackeyes
X 0 X

Non può restituire due risultati differenti  :o :o

Il database è lo stesso vero? I termini di ricerca anche?

Ah...un attimo...forse perchè phpmyadmin fa la cosa in modo "case insensitive"...

risposto 7 anni fa
Mario Santagiuliana
X 0 X

Provato sempre 122 ah ovviamente si

risposto 7 anni fa
blackeyes
X 0 X

ho fatto elencare a video tutti i record li ho analizzati con excel sono effettivamente 145 e non 122 come riportati dal phpmyadmin....

risposto 7 anni fa
blackeyes
X 0 X
<h1>Risultati della ricerca</h1><br>
<?php
error_reporting(E_ALL);
include ("config.inc.php");
include ("connect.inc.php");
// imposto il limit per la query
If (!isset ($start) OR $start < 0)
   $start = 0;
   $step = 15;
$pg = (isset($_REQUEST['pagina'])) ? $_REQUEST['pagina'] : 0;
if ($_POST) {
   if ($_POST['azione'] == "cerca") {
      $chiave = $_POST['chiave'];
      $keys = explode(",", $chiave);
      $parola = $keys[0];

      $query = "SELECT id, titolo, ingredienteprincipale, regione FROM DBRicette WHERE titolo   LIKE   '%$parola%'   OR   ingredienti   LIKE   '%$parola%' OR   tipopiatto   LIKE   '%$parola%' OR   ingredienteprincipale   LIKE   '%$parola%' OR   regione   LIKE   '%$parola%' OR   note   LIKE   '%$parola%' LIMIT $start, $step ";
      $result = mysql_query($query, $db);
//echo $query;  //dopo l'esecuzione di una query ne mostra il risultato a video
      while ($row = mysql_fetch_array($result)) {
         echo "<a   href=\"index.php?pag=15&id=$row[id]\">" . "      $row[titolo]" . "       </a><br>";
      }
// ricavo il numero totale di record
      $query1 = "SELECT COUNT(*) FROM DBRicette WHERE titolo   LIKE   '%$parola%'   OR   ingredienti   LIKE   '%$parola%' OR   tipopiatto   LIKE   '%$parola%' OR   ingredienteprincipale   LIKE   '%$parola%' OR   regione   LIKE   '%$parola%' OR   note   LIKE   '%$parola%' ";
      $result1 = mysql_query($query1);

      //echo mysql_result($result1, 0);
    // record complessivi
  $tot_righe = mysql_result($result1,0);
// totale pagine
      $tot_pagine = ceil($tot_righe / $step);
      echo ($tot_pagine);

  //inizio la visualizzazione

             if($pg == 0)
             {
             $precedente = "";
             }
             else
             {
             $previous_page = ($pg - 1);
             $precedente = "<a href='index.php?pag=14&pagina=$previous_page' title='Vai alla pagina
             precedente' class='bottonelinc'>Precedente</a>";
             }

             if($pg == $tot_pagine-1)
             {
             $successiva = "";
             }
             else
             {
             $next_page = ($pg + 1);
             $successiva = "<a href='index.php?pag=14&pagina=$next_page' title='Vai alla pagina
             successiva' class='bottonelinc'>Sucessiva</a>";
             }

            $paginazione = "
                <table width='30%' border='0' align='center'>
                    <tr>
                        <td align='center'>
                            ".$precedente."
                        </td>
                        <td align='center'>
                            ".$successiva."
                        </td>
                    </tr>
                </table>";


              echo "<CENTER>" . $paginazione . "</CENTER>";


   }

ora che lo script è funzionante e che ho tutti i dati che mi occorrono numero di record, numero di pagine ho provato a creare i link pagina successiva e precedente per visualizzare tutti i record.

attualmente effettuando una ricerca vengono visualizzati i primi 15 record poi in basso a dx la scritta successiva, come clicco sul link invece dei successivi 15 record mi viene restituita una pagina bianca, senza errori dal php. Dove sbaglio?

Il link di partenza della pagina delle ricette è http://test.mondoricette.com/index.php?pag=1 una volta inserito il termine da ricercare e avviata la ricerca i primi 15 risultati sono visualizzati qui http://test.mondoricette.com/index.php?pag=14

Quindi io ho creato il link di ricerca cosi

$successiva = "<a href='index.php?pag=14&pagina=$next_page' title='Vai alla pagina

             successiva' class='bottonelinc'>Sucessiva</a>";

risposto 7 anni fa
blackeyes
X 0 X
come clicco sul link invece dei successivi 15 record mi viene restituita una pagina bianca, senza errori dal php. Dove sbaglio?

Hai sicuramente un errore nel codice php perchè viene spezzata la pagina!!

Inoltre usi le variabili $start e $step che le mantieni statiche ($step può andare bene ma $start dovrà cambiare per fare vedere risultati differenti no?)

ciao

risposto 7 anni fa
Mario Santagiuliana
X 0 X
Hai sicuramente un errore nel codice php perchè viene spezzata la pagina!!

cioè?

Inoltre usi le variabili $start e $step che le mantieni statiche ($step può andare bene ma $start dovrà cambiare per fare vedere risultati differenti no?)

ciao

vero ma come lo rendo dinamico?

risposto 7 anni fa
blackeyes
modificato 7 anni fa
X 0 X

Fai il passaggio di una variabile per dire in che pagina ti trovi no?

Per cui da la vari non il tuo limit ma il tuo offset della query.

La pagina è spezzata perchè se leggi il codice html che generi non contiene i tag di chiusura di html e altri.

Inoltre devi leggere i log del php per capire che errori danno.

risposto 7 anni fa
Mario Santagiuliana
X 0 X

intendi cosi?

// pagina corrente

$pc = (!$HTTP_GET_VARS['pagina']) ? 1 : (int)$HTTP_GET_VARS['pagina'];

// primo parametro di LIMIT

$start = ($pc - 1) * $step;

io testo lp script on line dove trovo i log?

risposto 7 anni fa
blackeyes
modificato 7 anni fa
X 0 X

Per i log chiedi al tuo fornitore di servizi.

Per l'offset puoi fare come hai detto te, attento ai nomi delle variabili, meglio se usi $_GET['pagina'].

risposto 7 anni fa
Mario Santagiuliana
X 0 X

ho provato cosi' ma continua a non andare.... :-[ :-[

<h1>Risultati della ricerca</h1><br>
<?php
error_reporting(E_ALL);
include ("config.inc.php");
include ("connect.inc.php");
// imposto il limit per la query
$pg = (isset($_REQUEST['pagina'])) ? $_REQUEST['pagina'] : 0;
If (!isset ($start) OR $start < 0)
// primo parametro di LIMIT
$start = ($pg - 1) * $step;
 //  $start = 0;
   $step = 15;
if ($_POST) {
   if ($_POST['azione'] == "cerca") {
      $chiave = $_POST['chiave'];
      $keys = explode(",", $chiave);
      $parola = $keys[0];

      $query = "SELECT id, titolo, ingredienteprincipale, regione FROM DBRicette WHERE titolo   LIKE   '%$parola%'   OR   ingredienti   LIKE   '%$parola%' OR   tipopiatto   LIKE   '%$parola%' OR   ingredienteprincipale   LIKE   '%$parola%' OR   regione   LIKE   '%$parola%' OR   note   LIKE   '%$parola%' LIMIT $start, $step ";
      $result = mysql_query($query, $db);
//echo $query;  //dopo l'esecuzione di una query ne mostra il risultato a video
      while ($row = mysql_fetch_array($result)) {
         echo "<a   href=\"index.php?pag=15&id=$row[id]\">" . "      $row[titolo]" . "       </a><br>";
      }
// ricavo il numero totale di record
      $query1 = "SELECT COUNT(*) FROM DBRicette WHERE titolo   LIKE   '%$parola%'   OR   ingredienti   LIKE   '%$parola%' OR   tipopiatto   LIKE   '%$parola%' OR   ingredienteprincipale   LIKE   '%$parola%' OR   regione   LIKE   '%$parola%' OR   note   LIKE   '%$parola%' ";
      $result1 = mysql_query($query1);

      //echo mysql_result($result1, 0);
    // record complessivi
  $tot_righe = mysql_result($result1,0);
// totale pagine
      $tot_pagine = ceil($tot_righe / $step);
      echo ($tot_pagine);

  //inizio la visualizzazione

             if($pg == 0)
             {
             $precedente = "";
             }
             else
             {
             $previous_page = ($pg - 1);
             $precedente = "<a href='index.php?pag=14&pagina=$previous_page' title='Vai alla pagina
             precedente' class='bottonelinc'>Precedente</a>";
             }

             if($pg == $tot_pagine-1)
             {
             $successiva = "";
             }
             else
             {
             $next_page = ($pg + 1);
             $successiva = "<a href='index.php?pag=14&pagina=$next_page' title='Vai alla pagina
             successiva' class='bottonelinc'>Sucessiva</a>";
             }

            $paginazione = "
                <table width='30%' border='0' align='center'>
                    <tr>
                        <td align='center'>
                            ".$precedente."
                        </td>
                        <td align='center'>
                            ".$successiva."
                        </td>
                    </tr>
                </table>";


              echo "<CENTER>" . $paginazione . "</CENTER>";


   }
risposto 7 anni fa
blackeyes
X 0 X

ecco i log

[Sat   Oct   31   12.22.35   2009]   [error]   PHP Notice:  Undefined variable: pg in /var/www/vhosts/mondoricette.com/subdomains/test/httpdocs/DBRicette/result.php on line 9, referer: http://test.mondoricette.com/index.php?pag=1      

[Sat   Oct   31   12.22.35   2009]   [error]   PHP Notice:  Undefined variable: step in /var/www/vhosts/mondoricette.com/subdomains/test/httpdocs/DBRicette/result.php on line 9, referer: http://test.mondoricette.com/index.php?pag=1      

[Sat   Oct   31   12.22.44   2009]   [error]   PHP Notice:  Undefined variable: pg in /var/www/vhosts/mondoricette.com/subdomains/test/httpdocs/DBRicette/result.php on line 9, referer: http://test.mondoricette.com/index.php?pag=14      

[Sat   Oct   31   12.22.44   2009]   [error]   PHP Notice:  Undefined variable: step in /var/www/vhosts/mondoricette.com/subdomains/test/httpdocs/DBRicette/result.php on line 9, referer: http://test.mondoricette.com/index.php?pag=14      

[Sat   Oct   31   12.25.06   2009]   [error]   PHP Notice:  Undefined variable: step in /var/www/vhosts/mondoricette.com/subdomains/test/httpdocs/DBRicette/result.php on line 10, referer: http://test.mondoricette.com/index.php?pag=1      

[Sat   Oct   31   12.25.13   2009]   [error]   PHP Notice:  Undefined variable: step in /var/www/vhosts/mondoricette.com/subdomains/test/httpdocs/DBRicette/result.php on line 10, referer: http://test.mondoricette.com/index.php?pag=14      

[Sat   Oct   31   12.29.10   2009]   [error]   PHP Notice:  Undefined variable: step in /var/www/vhosts/mondoricette.com/subdomains/test/httpdocs/DBRicette/result.php on line 10, referer: http://test.mondoricette.com/index.php?pag=1      

[Sat   Oct   31   12.29.17   2009]   [error]   PHP Notice:  Undefined variable: step in /var/www/vhosts/mondoricette.com/subdomains/test/httpdocs/DBRicette/result.php on line 10, referer: http://test.mondoricette.com/index.php?pag=14      

perche' mi avvisa che non è definita la variabile??

risposto 7 anni fa
blackeyes
X 0 X

Step la definisci dopo e prima la chiami per fare una operazione:

<h1>Risultati della ricerca</h1><br>

<?php

error_reporting(E_ALL);

include ("config.inc.php");

include ("connect.inc.php");

// imposto il limit per la query

$pg = (isset($_REQUEST['pagina'])) ? $_REQUEST['pagina'] : 0;

If (!isset ($start) OR $start < 0)

// primo parametro di LIMIT

$start = ($pg - 1) * $step;

 //  $start = 0;

   $step = 15;

Prova così:

<h1>Risultati della ricerca</h1><br>
<?php
error_reporting(E_ALL);
include ("config.inc.php");
include ("connect.inc.php");

// imposto il limit per la query
$pg = isset($_REQUEST['pagina']) ? $_REQUEST['pagina'] : 0;
$step = 15;

If (!isset ($start) OR $start < 0)
// primo parametro di LIMIT
$start = ($pg - 1) * $step;
risposto 7 anni fa
Mario Santagiuliana
X 0 X
<h1>Risultati della ricerca</h1><br>
<?php
error_reporting(E_ALL);
include ("config.inc.php");
include ("connect.inc.php");

// imposto il limit per la query
$pg = isset($_REQUEST['pagina']) ? $_REQUEST['pagina'] : 0;
$step = 15;

If (!isset ($start) OR $start < 0)
// primo parametro di LIMIT
$start = ($pg - 1) * $step;

in questo modo non mostra nemmeno i primi 15 risultati della query solo iul link "successiva"

risposto 7 anni fa
blackeyes
X 0 X

Riprova così(c'è una sintassi che non mi piace):

<h1>Risultati della ricerca</h1><br>
<?php
error_reporting(E_ALL);
include ("config.inc.php");
include ("connect.inc.php");

// imposto il limit per la query
if(isset($_REQUEST['pagina']))
   $pg = $_REQUEST['pagina'];
else
   $pg = 0;

$step = 15;
if($pg != 0 || $pg != 1)
   $start = ($pg - 1) * $step;
else
   $start = 0;
risposto 7 anni fa
Mario Santagiuliana
X 0 X
<h1>Risultati della ricerca</h1><br>
<?php
error_reporting(E_ALL);
include ("config.inc.php");
include ("connect.inc.php");


// imposto il limit per la query
if(isset($_REQUEST['pagina']))
   $pg = $_REQUEST['pagina'];
else
   $pg = 0;

$step = 15;
if($pg != 0 || $pg != 1)
   $start = ($pg - 1) * $step;
else
   $start = 0;

if ($_POST) {
   if ($_POST['azione'] == "cerca") {
      $chiave = $_POST['chiave'];
      $keys = explode(",", $chiave);
      $parola = $keys[0];

      $query = "SELECT id, titolo, ingredienteprincipale, regione FROM DBRicette WHERE titolo   LIKE   '%$parola%'   OR   ingredienti   LIKE   '%$parola%' OR   tipopiatto   LIKE   '%$parola%' OR   ingredienteprincipale   LIKE   '%$parola%' OR   regione   LIKE   '%$parola%' OR   note   LIKE   '%$parola%' LIMIT $start, $step ";
      $result = mysql_query($query, $db);
//echo $query;  //dopo l'esecuzione di una query ne mostra il risultato a video
      while ($row = mysql_fetch_array($result)) {
         echo "<a   href=\"index.php?pag=15&id=$row[id]\">" . "      $row[titolo]" . "       </a><br>";
      }
// ricavo il numero totale di record
      $query1 = "SELECT COUNT(*) FROM DBRicette WHERE titolo   LIKE   '%$parola%'   OR   ingredienti   LIKE   '%$parola%' OR   tipopiatto   LIKE   '%$parola%' OR   ingredienteprincipale   LIKE   '%$parola%' OR   regione   LIKE   '%$parola%' OR   note   LIKE   '%$parola%' ";
      $result1 = mysql_query($query1);

      //echo mysql_result($result1, 0);
    // record complessivi
  $tot_righe = mysql_result($result1,0);
// totale pagine
      $tot_pagine = ceil($tot_righe / $step);

  //inizio la visualizzazione

             if($pg == 0)
             {
             $precedente = "";
             }
             else
             {
             $previous_page = ($pg - 1);
             $precedente = "<a href='index.php?pag=14&pagina=$previous_page' title='Vai alla pagina
             precedente' class='bottonelinc'>Precedente</a>";
             }

             if($pg == $tot_pagine-1)
             {
             $successiva = "";
             }
             else
             {
             $next_page = ($pg + 1);
             $successiva = "<a href='index.php?pag=14&pagina=$next_page' title='Vai alla pagina
             successiva' class='bottonelinc'>Sucessiva</a>";
             }

            $paginazione = "
                <table width='30%' border='0' align='center'>
                    <tr>
                        <td align='center'>
                            ".$precedente."
                        </td>
                        <td align='center'>
                            ".$successiva."
                        </td>
                    </tr>
                </table>";


              echo "<CENTER>" . $paginazione . "</CENTER>";


   }

non cambia nulla rispetto a prima.... non mostra nemmeno i primi 15 risultati della query solo iul link "successiva"

risposto 7 anni fa
blackeyes
X 0 X

Con qualsiasi chiave di ricerca non ottieni risultati?

Ma scusa, perchè usi $_REQUEST e non $_GET o $_POST?

risposto 7 anni fa
Mario Santagiuliana
modificato 7 anni fa
X 0 X

Credevo non vi fosse molta differenza

Si il problema si verifica con qualsiasi chiave di ricerca

La parte relativa all'impaginazione mi sembra corretta

risposto 7 anni fa
blackeyes
X 0 X

Prova usare $_POST se invii tutto tramite $_POST.

risposto 7 anni fa
Mario Santagiuliana
X 0 X
// imposto il limit per la query
if(isset($_POST['pagina']))
   $pg = $_POST['pagina'];
else
   $pg = 0;

$step = 15;
if($pg != 0 || $pg != 1)
   $start = ($pg - 1) * $step;
else
   $start = 0;

fatto ma non cambia nulla

risposto 7 anni fa
blackeyes
X 0 X

Se provi a modificare la query togliendo il limit funziona?

risposto 7 anni fa
Mario Santagiuliana
X 0 X

si  ::) ::) ::)

risposto 7 anni fa
blackeyes
X 0 X

 :-\ :-\ :-\

Come?

Puoi mettere un echo della query? (quella con limit) così vediamo come viene creata.

risposto 7 anni fa
Mario Santagiuliana
X 0 X

Adesso sto' rispondendo dal cellulare in effetti è strano col limit statico la query andava..

risposto 7 anni fa
blackeyes
X 0 X

Ti chiedo appunto l'echo della query che si va a creare per capire cosa va a passare al database...

Ciao e facci sapere

risposto 7 anni fa
Mario Santagiuliana
X 0 X

SELECT id, titolo, ingredienteprincipale, regione FROM DBRicette WHERE titolo LIKE '%riso%' OR ingredienti LIKE '%riso%' OR tipopiatto LIKE '%riso%' OR ingredienteprincipale LIKE '%riso%' OR regione LIKE '%riso%' OR note LIKE '%riso%' LIMIT -15 , 15

il $start viene impostato a -15

risposto 7 anni fa
blackeyes
X 0 X

Ecco dove sta il problema, bisogna impostare correttamente il start...questo codice qui:

$step = 15;

if($pg != 0 || $pg != 1)

   $start = ($pg - 1) * $step;

else

   $start = 0;

Proviamo così.

$step = 15;
if($pg > 1)
   $start = ($pg - 1) * $step;
else
   $start = 0;
risposto 7 anni fa
Mario Santagiuliana
X 0 X

perfetto mostra i primi 15 pero' quando clicco sul link "successiva" non vengono mostrati i successivi 15 e non ottengo nemmeno messaggi d'errore.

Che sia sbagliato il modo di creare la paginazione?

Come link di base ho http://test.mondoricette.com/index.php?pag=14 e cliccando su successiva

http://test.mondoricette.com/index.php?pag=14&pagina=1

risposto 7 anni fa
blackeyes
X 0 X

Tu fai un passaggio tramite $_GET e poi nel tuo script tenti di trovare la variabile "pagina" dall'array $_POST...

L'errore deve stare li.

Ciao

risposto 7 anni fa
Mario Santagiuliana
X 0 X
<h1>Risultati della ricerca</h1><br>
<?php
error_reporting(E_ALL);
include ("config.inc.php");
include ("connect.inc.php");


// imposto il limit per la query
if(isset($_GET['pagina']))
   $pg = $_GET['pagina'];
else
   $pg = 0;

$step = 15;
if($pg > 1)
   $start = ($pg - 1) * $step;
else
   $start = 0;


if ($_POST) {
   if ($_POST['azione'] == "cerca") {
      $chiave = $_POST['chiave'];
      $keys = explode(",", $chiave);
      $parola = $keys[0];

      $query = "SELECT id, titolo, ingredienteprincipale, regione FROM DBRicette WHERE titolo   LIKE   '%$parola%'   OR   ingredienti   LIKE   '%$parola%' OR   tipopiatto   LIKE   '%$parola%' OR   ingredienteprincipale   LIKE   '%$parola%' OR   regione   LIKE   '%$parola%' OR   note   LIKE   '%$parola%' LIMIT $start , $step ";
      $result = mysql_query($query, $db);
echo $query;  //dopo l'esecuzione di una query ne mostra il risultato a video
      while ($row = mysql_fetch_array($result)) {
         echo "<a   href=\"index.php?pag=15&id=$row[id]\">" . "      $row[titolo]" . "       </a><br>";
      }
// ricavo il numero totale di record
      $query1 = "SELECT COUNT(*) FROM DBRicette WHERE titolo   LIKE   '%$parola%'   OR   ingredienti   LIKE   '%$parola%' OR   tipopiatto   LIKE   '%$parola%' OR   ingredienteprincipale   LIKE   '%$parola%' OR   regione   LIKE   '%$parola%' OR   note   LIKE   '%$parola%' ";
      $result1 = mysql_query($query1);

      //echo mysql_result($result1, 0);
    // record complessivi
  $tot_righe = mysql_result($result1,0);
// totale pagine
      $tot_pagine = ceil($tot_righe / $step);

  //inizio la visualizzazione

             if($pg == 0)
             {
             $precedente = "";
             }
             else
             {
             $previous_page = ($pg - 1);
             $precedente = "<a href='index.php?pag=14&pagina=$previous_page' title='Vai alla pagina
             precedente' class='bottonelinc'>Precedente</a>";
             }

             if($pg == $tot_pagine-1)
             {
             $successiva = "";
             }
             else
             {
             $next_page = ($pg + 1);
             $successiva = "<a href='index.php?pag=14&pagina=$next_page' title='Vai alla pagina
             successiva' class='bottonelinc'>Sucessiva</a>";
             }

            $paginazione = "
                <table width='30%' border='0' align='center'>
                    <tr>
                        <td align='center'>
                            ".$precedente."
                        </td>
                        <td align='center'>
                            ".$successiva."
                        </td>
                    </tr>
                </table>";


              echo "<CENTER>" . $paginazione . "</CENTER>";


   }
  elseif ($_POST['azione'] == "principale") {
      $chiave = $_POST['chiave'];
      $keys = explode(",", $chiave);
      $parola = $keys[0];

      $query = "SELECT   id,   titolo, ingredienteprincipale   FROM   DBRicette   WHERE ingredienteprincipale   LIKE   '%$parola%'  LIMIT $start, $step   ";
      $result = mysql_query($query, $db);

//echo $query;  dopo l'esecuzione di una query ne mostra il risultato a video

         while ($row = mysql_fetch_array($result)) {
         echo "<a   href=\"index.php?pag=15&id=$row[id]\">" . "      $row[titolo]" . "      $row[ingredienteprincipale]</a><br>";
      }
 // ricavo il numero totale di record
      $query1 = " SELECT COUNT(*) FROM DBRicette WHERE ingredienteprincipale LIKE '%$parola%' ";
      $result1 = mysql_query($query1);
      $tot_righe = mysql_result($result1, 0);
// totale pagine
      $tot_pagine = ceil($tot_righe / $step);
      echo ($tot_pagine);
   }
   elseif ($_POST['azione'] == "portata") {
      $chiave = $_POST['chiave'];
      $keys = explode(",", $chiave);
      $parola = $keys[0];

      $query = "SELECT   id,   titolo, tipopiatto   FROM   DBRicette   WHERE tipopiatto   LIKE   '%$parola%' LIMIT $start, $step ";
      $result = mysql_query($query, $db);

//echo $query;  dopo l'esecuzione di una query ne mostra il risultato a video

         while ($row = mysql_fetch_array($result)) {
         echo "<a   href=\"index.php?pag=15&id=$row[id]\">" . "      $row[titolo]" . "      $row[tipopiatto]</a><br>";
      }

   // ricavo il numero totale di record

   $query1 = "SELECT COUNT(*) FROM DBRicette WHERE  tipopiatto   LIKE   '%$parola%' ";
   $result1 = mysql_query($query1);

// echo mysql_result($result1, 0);

// record complessivi
       $tot_righe = mysql_result($result1, 0);
// totale pagine
      $tot_pagine = ceil($tot_righe / $step);
      echo ($tot_pagine);
   }
}
;
?>

ho provato cosi ma non va lo stesso

risposto 7 anni fa
blackeyes
X 0 X

Per forza...perdi la variabile $parola che ti definisce i termini per la ricerca. Dovresti reinviare la chiave di ricerca tramite l'array get, cosa che non fai...

risposto 7 anni fa
Mario Santagiuliana
X 0 X
<h1>Risultati della ricerca</h1><br>
<?php
error_reporting(E_ALL);
include ("config.inc.php");
include ("connect.inc.php");


// imposto il limit per la query
if(isset($_GET['pagina']))
   $pg = $_GET['pagina'];
else
   $pg = 0;

$step = 15;
if($pg > 1)
   $start = ($pg - 1) * $step;
else
   $start = 0;


if ($_POST) {
   if ($_POST['azione'] == "cerca") {
      $chiave = $_POST['chiave'];
      $keys = explode(",", $chiave);
      $parola = $keys[0];

      $query = "SELECT id, titolo, ingredienteprincipale, regione FROM DBRicette WHERE titolo   LIKE   '%$parola%'   OR   ingredienti   LIKE   '%$parola%' OR   tipopiatto   LIKE   '%$parola%' OR   ingredienteprincipale   LIKE   '%$parola%' OR   regione   LIKE   '%$parola%' OR   note   LIKE   '%$parola%' LIMIT $start , $step ";
      $result = mysql_query($query, $db);
echo $query;  //dopo l'esecuzione di una query ne mostra il risultato a video
      while ($row = mysql_fetch_array($result)) {
         echo "<a   href=\"index.php?pag=15&id=$row[id]\">" . "      $row[titolo]" . "       </a><br>";
      }
// ricavo il numero totale di record
      $query1 = "SELECT COUNT(*) FROM DBRicette WHERE titolo   LIKE   '%$parola%'   OR   ingredienti   LIKE   '%$parola%' OR   tipopiatto   LIKE   '%$parola%' OR   ingredienteprincipale   LIKE   '%$parola%' OR   regione   LIKE   '%$parola%' OR   note   LIKE   '%$parola%' ";
      $result1 = mysql_query($query1);

      //echo mysql_result($result1, 0);
    // record complessivi
  $tot_righe = mysql_result($result1,0);
// totale pagine
      $tot_pagine = ceil($tot_righe / $step);

  //inizio la visualizzazione

  $chiave = $_GET['chiave'];

             if($pg == 0)
             {
             $precedente = "";
             }
             else
             {
             $previous_page = ($pg - 1);
             $precedente = "<a href='index.php?pag=14&pagina=$previous_page' title='Vai alla pagina
             precedente' class='bottonelinc'>Precedente</a>";
             }

             if($pg == $tot_pagine-1)
             {
             $successiva = "";
             }
             else
             {
             $next_page = ($pg + 1);
             $successiva = "<a href='index.php?pag=14&pagina=$next_page' title='Vai alla pagina
             successiva' class='bottonelinc'>Sucessiva</a>";
             }

            $paginazione = "
                <table width='30%' border='0' align='center'>
                    <tr>
                        <td align='center'>
                            ".$precedente."
                        </td>
                        <td align='center'>
                            ".$successiva."
                        </td>
                    </tr>
                </table>";


              echo "<CENTER>" . $paginazione . "</CENTER>";


   }

Ho provato cosi'  ma non và...

risposto 7 anni fa
blackeyes
X 0 X

Allora non mi sono fatto capire.

O invii i dati tramite l'array get o tramite l'array post, non fare dei minestroni (è possibile farli ma meglio evitare, per il momento complicazioni).

Se tu crei i link di navigazione tra le varie pagine, questi link non fanno altro che richiamare pagine passando parametro con l'array get, non inviano nessun parametro tramite l'array post, non sono pulsanti per inviare i dati di un form.

Mi sono spiegato ora?

Devi variare gran parte dello script e trasformarlo in modo da avere o tutti i parametri in get o tutti in post (come detto è possibile fare entrambi ma temo sia una complicazione in più da evitare al momento).

risposto 7 anni fa
Mario Santagiuliana
X 0 X

HO aggiornato lo script ma continua a non andare.... non capisco...

<h1>Risultati della ricerca</h1><br>
<?php
error_reporting(E_ALL);
include ("config.inc.php");
include ("connect.inc.php");


// imposto il limit per la query
if(isset($_POST['pagina']))
   $pg = $_POST['pagina'];
else
   $pg = 0;

$step = 15;
if($pg > 1)
   $start = ($pg - 1) * $step;
else
   $start = 0;


if ($_POST) {
   if ($_POST['azione'] == "cerca") {
      $chiave = $_POST['chiave'];
      $keys = explode(",", $chiave);
      $parola = $keys[0];

      $query = "SELECT id, titolo, ingredienteprincipale, regione FROM DBRicette WHERE titolo   LIKE   '%$parola%'   OR   ingredienti   LIKE   '%$parola%' OR   tipopiatto   LIKE   '%$parola%' OR   ingredienteprincipale   LIKE   '%$parola%' OR   regione   LIKE   '%$parola%' OR   note   LIKE   '%$parola%' LIMIT $start , $step ";
      $result = mysql_query($query, $db);
echo $query;  //dopo l'esecuzione di una query ne mostra il risultato a video
      while ($row = mysql_fetch_array($result)) {
         echo "<a   href=\"index.php?pag=15&id=$row[id]\">" . "      $row[titolo]" . "       </a><br>";
      }
// ricavo il numero totale di record
      $query1 = "SELECT COUNT(*) FROM DBRicette WHERE titolo   LIKE   '%$parola%'   OR   ingredienti   LIKE   '%$parola%' OR   tipopiatto   LIKE   '%$parola%' OR   ingredienteprincipale   LIKE   '%$parola%' OR   regione   LIKE   '%$parola%' OR   note   LIKE   '%$parola%' ";
      $result1 = mysql_query($query1);

      //echo mysql_result($result1, 0);
    // record complessivi
  $tot_righe = mysql_result($result1,0);
// totale pagine
      $tot_pagine = ceil($tot_righe / $step);

  //inizio la visualizzazione

  $chiave = $_POST['chiave'];

             if($pg == 0)
             {
             $precedente = "";
             }
             else
             {
             $previous_page = ($pg - 1);
             $precedente = "<a href='index.php?pag=14&pagina=$previous_page' title='Vai alla pagina
             precedente' class='bottonelinc'>Precedente</a>";
             }

             if($pg == $tot_pagine-1)
             {
             $successiva = "";
             }
             else
             {
             $next_page = ($pg + 1);
             $successiva = "<a href='index.php?pag=14&pagina=$next_page' title='Vai alla pagina
             successiva' class='bottonelinc'>Sucessiva</a>";
             }

            $paginazione = "
                <table width='30%' border='0' align='center'>
                    <tr>
                        <td align='center'>
                            ".$precedente."
                        </td>
                        <td align='center'>
                            ".$successiva."
                        </td>
                    </tr>
                </table>";


              echo "<CENTER>" . $paginazione . "</CENTER>";


   }
risposto 7 anni fa
blackeyes
X 0 X

Quando crei i link per le pagine successive e precedenti tu richiami una nuova pagina che è così:

index.php?pag=14&pagina=$previous_page

Ok?

A questa pagina non viene passato nessun array $_POST, passi solo dei parametro tramite $_GET di conseguenza il tuo script non potrà mai funzionare.

O crei un piccolo form per inviare tutti i dati per le pagine successive o precedenti o invece di utilizzare il form con il metodo post per inviare i termini di ricerca usi il metodo get dovresti riuscire a risolvere il problema.

Mi sono spiegato?

risposto 7 anni fa
Mario Santagiuliana
X 0 X
<?php 
session_start();
$parola=$_GET['parola'];
?>

<form name="form1" method="get" action="">

  <label>

  <input name="parola" type="text" id="parola">

  </label>

  <label>

  <input type="submit" name="Submit" value="Invia">

  </label>

</form>

<?php 
if($_GET['Submit']) {

include ("config.inc.php");
include ("connect.inc.php");

mysql_select_db($database_DBRicette, $DBRicette);

$count = mysql_query("SELECT COUNT(*) FROM DBRicette WHERE titolo LIKE '%$parola%' OR ingredienti LIKE '%$parola%' OR   tipopiatto  LIKE '%$parola%' OR ingredienteprincipale LIKE '%$parola%' OR regione LIKE '%$parola%' OR note LIKE '%$parola%'");
$res_count = mysql_fetch_row($count);

// numero totale di records
$tot_records = $res_count[0];

// risultati per pagina(secondo parametro di LIMIT)
$per_page = 10;     //VISUALIZZI 10 RECORD PER PAGINA

// numero totale di pagine
$tot_pages = ceil($tot_records / $per_page);

// pagina corrente
$current_page = (!$_GET['page']) ? 1 : (int)$_GET['page'];

// primo parametro di LIMIT
$primo = ($current_page - 1) * $per_page;
$query_limit = mysql_query("SELECT * FROM DBRicette WHERE titolo LIKE '%$parola%' OR ingredienti LIKE '%$parola%' OR tipopiatto LIKE '%$parola%' OR ingredienteprincipale LIKE '%$parola%' OR regione LIKE '%$parola%' OR note LIKE '%$parola%' LIMIT $primo, $per_page");

$ss=$_SERVER['QUERY_STRING'];

while($results = mysql_fetch_array($query_limit)) {
$aa=$results['titolo']; //
$bb=$results['ingredienti']; //
$cc=$results['tipopiatto'];
$dd=$results['ingredienteprincipale'];
$ee=$results['regione'];
$ff=$results['note'];
 echo $aa;
 echo "<br/>";
 echo $bb;
 echo "<br/>";
 echo $cc;
 echo "<br/>";
 echo $dd;
 echo "<br/>";
 echo $ee;
 echo "<br/>";
 echo $ff;
}
$img_sx="<img src=\"immagini/frec_sx.png\" border=\"0\"/>";   //QUI SOSTITUISCI L'IMMAGINE
$img_dx="<img src=\"immagini/frec_dx.png\" border=\"0\"/>";    //QUI SOSTITUISCI L'IMMAGINE
$paginazione = "[";
for($i = 1; $i <= $tot_pages; $i++) {
if($i == $current_page) {
$paginazione .= $i . " ";
$xx=($i-1);
$yy=($i+1);
$rr=$i;
if($xx=='0') { $ind='';} else {$ind='Indietro';}
if($xx=='0') { $fre_sx='';} else {$fre_sx="<a href=\"?page=$xx$ss\" title=\"Vai alla prima pagina\">$img_sx</a>";}
if($rr==$tot_pages) { $ava='';} else {$ava='Avanti';}
if($rr==$tot_pages) { $fre_dx='';} else {$fre_dx="<a href=\"?page=$yy$ss\" title=\"Vai alla prima pagina\">$img_dx</a>";}
} else {
$paginazione .= "<a href=\"?page=$i$ss\" title=\"Vai alla pagina $i\">$i</a> ";
}}
$paginazione .= "]";
$indietro="<a href=\"?page=$xx$ss\" title=\"Vai alla prima pagina\">$ind</a>";
$zz=($i-1);
$avanti="<a href=\"?page=$yy$ss\" title=\"Vai alla prima pagina\">$ava</a>";
echo "<span class=\"Stile3\">";
echo $fre_sx;echo "&nbsp"; echo $indietro; echo "&nbsp"; echo "&nbsp"; echo "&nbsp"; 
echo $paginazione;
echo "&nbsp"; echo "&nbsp"; echo "&nbsp";
echo $fre_dx; echo "&nbsp"; echo $avanti;
echo "</span>";
}
?>

Ho visto che la ricerca la effettui anche sulle note quindi se fossi in te userei MATCH  AGAINST

 :bye:

risposto 7 anni fa
leoneweb
X 0 X

ho provato mi crea un link di questo tipo che mi riporta alla home

http://test.mondoricette.com/index.php?parola=riso&Submit=Invia

per vedere il comportamento puoi andare http://test.mondoricette.com/ e cliccare su ricette

risposto 7 anni fa
blackeyes
X 0 X

Quando crei i link per le pagine successive e precedenti tu richiami una nuova pagina che è così:

index.php?pag=14&pagina=$previous_page

Ok?

A questa pagina non viene passato nessun array $_POST, passi solo dei parametro tramite $_GET di conseguenza il tuo script non potrà mai funzionare.

O crei un piccolo form per inviare tutti i dati per le pagine successive o precedenti o invece di utilizzare il

Mi sono spiegato?

non capisco il discorso del form ossia le pagine successive e precedenti sono generate dalla query col limit quindi dovrei associare al link pagina precedente o successiva le query con i limiti successivi??

risposto 7 anni fa
blackeyes
X 0 X

per fare un po' di chiarezza preciso che il form di ricerca è contenuto in un file chiamato search.php

<?php
include ("config.inc.php");
?>
<div>
<h4>Cerca nel nostro Database</h4><br>
<form   method=post   action=index.php?pag=14>
<input   type=text   name=chiave>
<button type="submit" name="azione" value="cerca">cerca</button>
<button type="submit" name="azione" value="principale">principale</button>
        </form>
</div>
<div>
<h4>Cerca nel nostro Database la portata che ti interessa</h4><br>
<form   method=post   action=index.php?pag=14>
<select   name=chiave>
<option   value=Antipasto>Antipasto
<option   value=Bevande>Bevande
<option   value=Carne>Carne
<option   value=Contorno>Contorni
<option   value=Dessert>Dessert
<option   value=Pesce>Pesce
<option   value=Pollame>Pollame
<option   value=Primo>Primo
<option   value=Salsa>Salse
</select>
       <button type="submit" name="azione" value="portata">portata</button>
    </form>
</div>

che poi rimanda allo script result.php

<h1>Risultati della ricerca</h1><br>
<?php
error_reporting(E_ALL);
include ("config.inc.php");
include ("connect.inc.php");


// imposto il limit per la query
if(isset($_POST['pagina']))
   $pg = $_POST['pagina'];
else
   $pg = 0;

$step = 15;
if($pg > 1)
   $start = ($pg - 1) * $step;
else
   $start = 0;


if ($_POST) {
   if ($_POST['azione'] == "cerca") {
      $chiave = $_POST['chiave'];
      $keys = explode(",", $chiave);
      $parola = $keys[0];

      $query = "SELECT id, titolo, ingredienteprincipale, regione FROM DBRicette WHERE titolo   LIKE   '%$parola%'   OR   ingredienti   LIKE   '%$parola%' OR   tipopiatto   LIKE   '%$parola%' OR   ingredienteprincipale   LIKE   '%$parola%' OR   regione   LIKE   '%$parola%' OR   note   LIKE   '%$parola%' LIMIT $start , $step ";
      $result = mysql_query($query, $db);
echo $query;  //dopo l'esecuzione di una query ne mostra il risultato a video
      while ($row = mysql_fetch_array($result)) {
         echo "<a   href=\"index.php?pag=15&id=$row[id]\">" . "      $row[titolo]" . "       </a><br>";
      }
// ricavo il numero totale di record
      $query1 = "SELECT COUNT(*) FROM DBRicette WHERE titolo   LIKE   '%$parola%'   OR   ingredienti   LIKE   '%$parola%' OR   tipopiatto   LIKE   '%$parola%' OR   ingredienteprincipale   LIKE   '%$parola%' OR   regione   LIKE   '%$parola%' OR   note   LIKE   '%$parola%' ";
      $result1 = mysql_query($query1);

      //echo mysql_result($result1, 0);
    // record complessivi
  $tot_righe = mysql_result($result1,0);
// totale pagine
      $tot_pagine = ceil($tot_righe / $step);

  //inizio la visualizzazione

  $chiave = $_POST['chiave'];

             if($pg == 0)
             {
             $precedente = "";
             }
             else
             {
             $previous_page = ($pg - 1);
             $precedente = "<a href='index.php?pag=14&pagina=$previous_page' title='Vai alla pagina
             precedente' class='bottonelinc'>Precedente</a>";
             }

             if($pg == $tot_pagine-1)
             {
             $successiva = "";
             }
             else
             {
             $next_page = ($pg + 1);
             $successiva = "<a href='index.php?pag=14&pagina=$next_page' title='Vai alla pagina
             successiva' class='bottonelinc'>Sucessiva</a>";
             }

            $paginazione = "
                <table width='30%' border='0' align='center'>
                    <tr>
                        <td align='center'>
                            ".$precedente."
                        </td>
                        <td align='center'>
                            ".$successiva."
                        </td>
                    </tr>
                </table>";


              echo "<CENTER>" . $paginazione . "</CENTER>";


   }
  elseif ($_POST['azione'] == "principale") {
      $chiave = $_POST['chiave'];
      $keys = explode(",", $chiave);
      $parola = $keys[0];

      $query = "SELECT   id,   titolo, ingredienteprincipale   FROM   DBRicette   WHERE ingredienteprincipale   LIKE   '%$parola%'  LIMIT $start, $step   ";
      $result = mysql_query($query, $db);

//echo $query;  dopo l'esecuzione di una query ne mostra il risultato a video

         while ($row = mysql_fetch_array($result)) {
         echo "<a   href=\"index.php?pag=15&id=$row[id]\">" . "      $row[titolo]" . "      $row[ingredienteprincipale]</a><br>";
      }
 // ricavo il numero totale di record
      $query1 = " SELECT COUNT(*) FROM DBRicette WHERE ingredienteprincipale LIKE '%$parola%' ";
      $result1 = mysql_query($query1);
      $tot_righe = mysql_result($result1, 0);
// totale pagine
      $tot_pagine = ceil($tot_righe / $step);
      echo ($tot_pagine);
   }
   elseif ($_POST['azione'] == "portata") {
      $chiave = $_POST['chiave'];
      $keys = explode(",", $chiave);
      $parola = $keys[0];

      $query = "SELECT   id,   titolo, tipopiatto   FROM   DBRicette   WHERE tipopiatto   LIKE   '%$parola%' LIMIT $start, $step ";
      $result = mysql_query($query, $db);

//echo $query;  dopo l'esecuzione di una query ne mostra il risultato a video

         while ($row = mysql_fetch_array($result)) {
         echo "<a   href=\"index.php?pag=15&id=$row[id]\">" . "      $row[titolo]" . "      $row[tipopiatto]</a><br>";
      }

   // ricavo il numero totale di record

   $query1 = "SELECT COUNT(*) FROM DBRicette WHERE  tipopiatto   LIKE   '%$parola%' ";
   $result1 = mysql_query($query1);

// echo mysql_result($result1, 0);

// record complessivi
       $tot_righe = mysql_result($result1, 0);
// totale pagine
      $tot_pagine = ceil($tot_righe / $step);
      echo ($tot_pagine);
   }
}
;
?>

e che l'index.php è

<?php
error_reporting(E_ALL);
include("header.php");
include("menu.php");
$pag = isset($_GET['pag']) ? (int)$_GET['pag'] : 0;

switch ($pag) {
    case 1:
        $pagina = 'DBRicette/search.php';
        break;
    case 2:
        $pagina = 'blog.php';
        break;
    case 3:
        $pagina = 'cucina_regionale.php';
        break;
    case 4:
        $pagina = 'glossario/glossario.php';
        break;
    case 5:
        $pagina = 'main.php';
        break;
    case 6:
        $pagina = 'newsletter.php';
        break;
    case 7:
        $pagina = 'contatti.php';
        break;
    case 8:
        $pagina = 'segnala.php';
        break;
    case 9:
        $pagina = 'siti_amici.php';
        break;
    case 10:
        $pagina = 'privacy.php';
        break;
     case 11:
        $pagina = 'siti_amici2.php';
        break;
    case 12:
        $pagina = 'siti_amici3.php';
        break;
     case 13:
        $pagina = 'siti_amici4.php';
        break;
     case 14:
        $pagina = 'DBRicette/result.php';
        break;
     case 15:
        $pagina = 'DBRicette/view.php';
        break;
     case 16:
        $pagina = 'DBRicette/ultime.php';
        break;
     case 17:
        $pagina = 'DBRicette/print.php';
        break;
     case 18:
        $pagina = 'DBRicette/mailricetta.php';
        break;
   default:
        $pagina = 'main.php';
}

include $pagina;
?>
risposto 7 anni fa
blackeyes
X 0 X

Non so come spiegartelo meglio di quello che ho fatto...

Tu con i link "successiva" e "precedente" richiami una pagina che non ha alcun termine di ricerca.

Di più non so come spiegarti...

risposto 7 anni fa
Mario Santagiuliana
X 0 X

Non so come spiegartelo meglio di quello che ho fatto...

Tu con i link "successiva" e "precedente" richiami una pagina che non ha alcun termine di ricerca.

Di più non so come spiegarti...

non riesco a capire come modificare lo script :(

risposto 7 anni fa
blackeyes
X 0 X

Devi passare i parametri di ricerca!!!

O tramite GET o POST quando vai alle pagine "sucessiva" e "precedente".

risposto 7 anni fa
Mario Santagiuliana
X 0 X

scusa ma il sito http://www.mondoricette.com/index.html se sempre opera tua?

risposto 7 anni fa
leoneweb
X 0 X

si voglio cambiare la grafica e farlo in php e css ma come vedi ho piu' di una difficoltà

risposto 7 anni fa
blackeyes
modificato 7 anni fa
X 0 X

Sei riuscito a risolvere?

risposto 7 anni fa
Mario Santagiuliana
X 0 X

Purtroppo no  :(

risposto 7 anni fa
blackeyes
X 0 X

Fa così, non usare $_POST, fa tutto tramite array $_GET, ti risulterà più semplice.

risposto 7 anni fa
Mario Santagiuliana
X 0 X

modificando lo script result cosi'

<h1>Risultati della ricerca</h1><br>
<?php
error_reporting(E_ALL);
include ("config.inc.php");
include ("connect.inc.php");


// imposto il limit per la query
if(isset($_GET['pagina1']))
   $pg = $_GET['pagina1'];
else
   $pg = 0;

$step = 15;
if($pg > 1)
   $start = ($pg - 1) * $step;
else
   $start = 0;


if ($_GET) {
   if ($_GET['azione'] == "cerca") {
      $chiave = $_GET['chiave'];
      $keys = explode(",", $chiave);
      $parola = $keys[0];

      $query = "SELECT id, titolo, ingredienteprincipale, regione FROM DBRicette WHERE titolo   LIKE   '%$parola%'   OR   ingredienti   LIKE   '%$parola%' OR   tipopiatto   LIKE   '%$parola%' OR   ingredienteprincipale   LIKE   '%$parola%' OR   regione   LIKE   '%$parola%' OR   note   LIKE   '%$parola%' LIMIT $start , $step ";
      $result = mysql_query($query, $db);
echo $query;  //dopo l'esecuzione di una query ne mostra il risultato a video
      while ($row = mysql_fetch_array($result)) {
         echo "<a   href=\"index.php?pag=15&id=$row[id]\">" . "      $row[titolo]" . "       </a><br>";
      }
// ricavo il numero totale di record
      $query1 = "SELECT COUNT(*) FROM DBRicette WHERE titolo   LIKE   '%$parola%'   OR   ingredienti   LIKE   '%$parola%' OR   tipopiatto   LIKE   '%$parola%' OR   ingredienteprincipale   LIKE   '%$parola%' OR   regione   LIKE   '%$parola%' OR   note   LIKE   '%$parola%' ";
      $result1 = mysql_query($query1);

      //echo mysql_result($result1, 0);
    // record complessivi
  $tot_righe = mysql_result($result1,0);
// totale pagine
      $tot_pagine = ceil($tot_righe / $step);

  //inizio la visualizzazione

  $chiave = $_GET['chiave'];

             if($pg == 0)
             {
             $precedente = "";
             }
             else
             {
             $previous_page = ($pg - 1);
             $precedente = "<a href='index.php?pag=14&pagina1=$previous_page' title='Vai alla pagina
             precedente' class='bottonelinc'>Precedente</a>";
             }

             if($pg == $tot_pagine-1)
             {
             $successiva = "";
             }
             else
             {
             $next_page = ($pg + 1);
             $successiva = "<a href='index.php?pag=14&pagina1=$next_page' title='Vai alla pagina
             successiva' class='bottonelinc'>Sucessiva</a>";
             }

            $paginazione = "
                <table width='30%' border='0' align='center'>
                    <tr>
                        <td align='center'>
                            ".$precedente."
                        </td>
                        <td align='center'>
                            ".$successiva."
                        </td>
                    </tr>
                </table>";


              echo "<CENTER>" . $paginazione . "</CENTER>";


   }

Sostituendo a tutti i $_post $_get e facendo lo stesso in

search.php

<?php
include ("config.inc.php");
?>
<div>
<h4>Cerca nel nostro Database</h4><br>
<form   method=GET   action=index.php?pag=14>
<input   type=text   name=chiave>
<button type="submit" name="azione" value="cerca">cerca</button>
<button type="submit" name="azione" value="principale">principale</button>
        </form>
</div>
<div>
<h4>Cerca nel nostro Database la portata che ti interessa</h4><br>
<form   method=post   action=index.php?pag=14>
<select   name=chiave>
<option   value=Antipasto>Antipasto
<option   value=Bevande>Bevande
<option   value=Carne>Carne
<option   value=Contorno>Contorni
<option   value=Dessert>Dessert
<option   value=Pesce>Pesce
<option   value=Pollame>Pollame
<option   value=Primo>Primo
<option   value=Salsa>Salse
</select>
       <button type="submit" name="azione" value="portata">portata</button>
    </form>
</div>

non vengono piu' visualizzati i risultati della query e non ho nessun messaggio a video, il link sulla barra degli indirizzi viene riportato cosi

http://test.mondoricette.com/index.php?pag=14

risposto 7 anni fa
blackeyes
X 0 X

Ok, adesso però devi anche modificare i form con cui invii i dati al tuo script.

Se usi il metodo post e tutti i dati li vuoi ricavare da $_GET devi passare i dati con metodo get e non post.

Esempio:

<h4>Cerca nel nostro Database la portata che ti interessa</h4><br>

<form   method=post   action=index.php?pag=14>

risposto 7 anni fa
Mario Santagiuliana
X 0 X

credevo di avrlo fatto l'ftp non lo aveva salvato, adesso anche search.php invia tramite get

ora quando cliccco su cerca mi genera questo link http://test.mondoricette.com/index.php?chiave=RISO&azione=cerca mi riporta in homepage

risposto 7 anni fa
blackeyes
X 0 X

Ti perde il valore pag per strada...facci vedere come è ora lo script.

risposto 7 anni fa
Mario Santagiuliana
X 0 X
Ti perde il valore pag per strada...facci vedere come è ora lo script.

questo e' il result

<h1>Risultati della ricerca</h1><br>
<?php
error_reporting(E_ALL);
include ("config.inc.php");
include ("connect.inc.php");


// imposto il limit per la query
if(isset($_GET['pagina1']))
   $pg = $_GET['pagina1'];
else
   $pg = 0;

$step = 15;
if($pg > 1)
   $start = ($pg - 1) * $step;
else
   $start = 0;


if ($_GET) {
   if ($_GET['azione'] == "cerca") {
      $chiave = $_GET['chiave'];
      $keys = explode(",", $chiave);
      $parola = $keys[0];

      $query = "SELECT id, titolo, ingredienteprincipale, regione FROM DBRicette WHERE titolo   LIKE   '%$parola%'   OR   ingredienti   LIKE   '%$parola%' OR   tipopiatto   LIKE   '%$parola%' OR   ingredienteprincipale   LIKE   '%$parola%' OR   regione   LIKE   '%$parola%' OR   note   LIKE   '%$parola%' LIMIT $start , $step ";
      $result = mysql_query($query, $db);
echo $query;  //dopo l'esecuzione di una query ne mostra il risultato a video
      while ($row = mysql_fetch_array($result)) {
         echo "<a   href=\"index.php?pag=15&id=$row[id]\">" . "      $row[titolo]" . "       </a><br>";
      }
// ricavo il numero totale di record
      $query1 = "SELECT COUNT(*) FROM DBRicette WHERE titolo   LIKE   '%$parola%'   OR   ingredienti   LIKE   '%$parola%' OR   tipopiatto   LIKE   '%$parola%' OR   ingredienteprincipale   LIKE   '%$parola%' OR   regione   LIKE   '%$parola%' OR   note   LIKE   '%$parola%' ";
      $result1 = mysql_query($query1);

      //echo mysql_result($result1, 0);
    // record complessivi
  $tot_righe = mysql_result($result1,0);
// totale pagine
      $tot_pagine = ceil($tot_righe / $step);

  //inizio la visualizzazione

  $chiave = $_GET['chiave'];

             if($pg == 0)
             {
             $precedente = "";
             }
             else
             {
             $previous_page = ($pg - 1);
             $precedente = "<a href='index.php?pag=14&pagina1=$previous_page' title='Vai alla pagina
             precedente' class='bottonelinc'>Precedente</a>";
             }

             if($pg == $tot_pagine-1)
             {
             $successiva = "";
             }
             else
             {
             $next_page = ($pg + 1);
             $successiva = "<a href='index.php?pag=14&pagina1=$next_page' title='Vai alla pagina
             successiva' class='bottonelinc'>Sucessiva</a>";
             }

            $paginazione = "
                <table width='30%' border='0' align='center'>
                    <tr>
                        <td align='center'>
                            ".$precedente."
                        </td>
                        <td align='center'>
                            ".$successiva."
                        </td>
                    </tr>
                </table>";


              echo "<CENTER>" . $paginazione . "</CENTER>";


   }
  elseif ($_GET['azione'] == "principale") {
      $chiave = $_GET['chiave'];
      $keys = explode(",", $chiave);
      $parola = $keys[0];

      $query = "SELECT   id,   titolo, ingredienteprincipale   FROM   DBRicette   WHERE ingredienteprincipale   LIKE   '%$parola%'  LIMIT $start, $step   ";
      $result = mysql_query($query, $db);

//echo $query;  dopo l'esecuzione di una query ne mostra il risultato a video

         while ($row = mysql_fetch_array($result)) {
         echo "<a   href=\"index.php?pag=15&id=$row[id]\">" . "      $row[titolo]" . "      $row[ingredienteprincipale]</a><br>";
      }
 // ricavo il numero totale di record
      $query1 = " SELECT COUNT(*) FROM DBRicette WHERE ingredienteprincipale LIKE '%$parola%' ";
      $result1 = mysql_query($query1);
      $tot_righe = mysql_result($result1, 0);
// totale pagine
      $tot_pagine = ceil($tot_righe / $step);
      echo ($tot_pagine);
   }
   elseif ($_GET['azione'] == "portata") {
      $chiave = $_GET['chiave'];
      $keys = explode(",", $chiave);
      $parola = $keys[0];

      $query = "SELECT   id,   titolo, tipopiatto   FROM   DBRicette   WHERE tipopiatto   LIKE   '%$parola%' LIMIT $start, $step ";
      $result = mysql_query($query, $db);

//echo $query;  dopo l'esecuzione di una query ne mostra il risultato a video

         while ($row = mysql_fetch_array($result)) {
         echo "<a   href=\"index.php?pag=15&id=$row[id]\">" . "      $row[titolo]" . "      $row[tipopiatto]</a><br>";
      }

   // ricavo il numero totale di record

   $query1 = "SELECT COUNT(*) FROM DBRicette WHERE  tipopiatto   LIKE   '%$parola%' ";
   $result1 = mysql_query($query1);

// echo mysql_result($result1, 0);

// record complessivi
       $tot_righe = mysql_result($result1, 0);
// totale pagine
      $tot_pagine = ceil($tot_righe / $step);
      echo ($tot_pagine);
   }
}
;
?>

Posto anche l'index magari è utile

<?php
error_reporting(E_ALL);
include("header.php");
include("menu.php");
$pag = isset($_GET['pag']) ? (int)$_GET['pag'] : 0;

switch ($pag) {
    case 1:
        $pagina = 'DBRicette/search.php';
        break;
    case 2:
        $pagina = 'blog.php';
        break;
    case 3:
        $pagina = 'cucina_regionale.php';
        break;
    case 4:
        $pagina = 'glossario/glossario.php';
        break;
    case 5:
        $pagina = 'main.php';
        break;
    case 6:
        $pagina = 'newsletter.php';
        break;
    case 7:
        $pagina = 'contatti.php';
        break;
    case 8:
        $pagina = 'segnala.php';
        break;
    case 9:
        $pagina = 'siti_amici.php';
        break;
    case 10:
        $pagina = 'privacy.php';
        break;
     case 11:
        $pagina = 'siti_amici2.php';
        break;
    case 12:
        $pagina = 'siti_amici3.php';
        break;
     case 13:
        $pagina = 'siti_amici4.php';
        break;
     case 14:
        $pagina = 'DBRicette/result.php';
        break;  
     case 15:
        $pagina = 'DBRicette/view.php';
        break; 
     case 16:
        $pagina = 'DBRicette/ultime.php';
        break;     
     case 17:
        $pagina = 'DBRicette/print.php';
        break;      
     case 18:
        $pagina = 'DBRicette/mailricetta.php';
        break;                         
   default:
        $pagina = 'main.php';
}

include $pagina;
?>
risposto 7 anni fa
blackeyes
X 0 X

Mi interessa solamente la parte in cui tu crei la pagina di ricerca, search.php se non sbaglio.

Non il resto! L'errore sta li praticamente.

risposto 7 anni fa
Mario Santagiuliana
X 0 X

search.php

<?php
include ("config.inc.php");
?>
<div>
<h4>Cerca nel nostro Database</h4><br>
<form   method=GET   action=index.php?pag=14>
<input   type=text   name=chiave>
<button type="submit" name="azione" value="cerca">cerca</button>
<button type="submit" name="azione" value="principale">principale</button>
        </form>
</div>
<div>
<h4>Cerca nel nostro Database la portata che ti interessa</h4><br>
<form   method=GET   action=index.php?pag=14>
<select   name=chiave>
<option   value=Antipasto>Antipasto
<option   value=Bevande>Bevande
<option   value=Carne>Carne
<option   value=Contorno>Contorni
<option   value=Dessert>Dessert
<option   value=Pesce>Pesce
<option   value=Pollame>Pollame
<option   value=Primo>Primo
<option   value=Salsa>Salse
</select>
       <button type="submit" name="azione" value="portata">portata</button>
    </form>
</div>
risposto 7 anni fa
blackeyes
X 0 X

Prova a modificare così:

<?php
include ("config.inc.php");
?>
<div>
    <h4>Cerca nel nostro Database</h4><br>
    <form   method=GET   action=index.php>
        <input type="hidden" name="pag" value="14">
        <input   type=text   name=chiave>
    
        <button type="submit" name="azione" value="cerca">cerca</button>
        <button type="submit" name="azione" value="principale">principale</button>
    </form>
</div>
<div>

<h4>Cerca nel nostro Database la portata che ti interessa</h4><br>
<form   method=GET   action=index.php>
        <input type="hidden" name="pag" value="14">
    <select   name=chiave>
        <option   value=Antipasto>Antipasto
        <option   value=Bevande>Bevande
        <option   value=Carne>Carne
        <option   value=Contorno>Contorni
        <option   value=Dessert>Dessert
        <option   value=Pesce>Pesce
        <option   value=Pollame>Pollame
        <option   value=Primo>Primo
        <option   value=Salsa>Salse
    </select>
    
    <button type="submit" name="azione" value="portata">portata</button>
</form>
</div>
risposto 7 anni fa
Mario Santagiuliana
X 0 X
<?php
include ("config.inc.php");
?>
<div>
<h4>Cerca nel nostro Database</h4><br>
<form   method=GET   action=index.php>
<input type="hidden" name="pag" value="14">
<input   type=text   name=chiave>
<button type="submit" name="azione" value="cerca">cerca</button>
<button type="submit" name="azione" value="principale">principale</button>
</form>
</div>
<div>
<h4>Cerca nel nostro Database la portata che ti interessa</h4><br>
<form   method=GET   action=index.php>
<input type="hidden" name="pag" value="14">
<select   name=chiave>
<option   value=Antipasto>Antipasto
<option   value=Bevande>Bevande
<option   value=Carne>Carne
<option   value=Contorno>Contorni
<option   value=Dessert>Dessert
<option   value=Pesce>Pesce
<option   value=Pollame>Pollame
<option   value=Primo>Primo
<option   value=Salsa>Salse
</select>
       <button type="submit" name="azione" value="portata">portata</button>
    </form>
</div>
risposto 7 anni fa
blackeyes
X 0 X

Ok, commenti nessuno? Funziona, non funziona?

risposto 7 anni fa
Mario Santagiuliana
X 0 X

La query va' ma si ripropone lo stesso problema quando clicco su successivo non mostra i successivi record della query

crea questo link http://test.mondoricette.com/index.php?pag=14&pagina1=1

risposto 7 anni fa
blackeyes
modificato 7 anni fa
X 0 X

Nei link per le pagine successive devi inserire la chiave di ricerca, è quello che ti ho detto negli ultimi 20 post mi pare  ;)

Ancora non lo hai fatto, il link deve risultare una cosa simile a questa:

http://test.mondoricette.com/index.php?pag=14&pagina1=1&chiave= ....quello che è, lo generi con il php.

risposto 7 anni fa
Mario Santagiuliana
X 0 X

Nei link per le pagine successive devi inserire la chiave di ricerca, è quello che ti ho detto negli ultimi 20 post mi pare  ;)

Ancora non lo hai fatto, il link deve risultare una cosa simile a questa:

http://test.mondoricette.com/index.php?pag=14&pagina1=1&chiave= ....quello che è, lo generi con il php.

C'e' qualche cosa che continua a sfuggirmi allora:

//inizio la visualizzazione

  $chiave = $_GET['chiave'];

             if($pg == 0)
             {
             $precedente = "";
             }
             else
             {
             $previous_page = ($pg - 1);
             $precedente = "<a href='index.php?pag=14&pagina1&chiave=$previous_page' title='Vai alla pagina
             precedente' class='bottonelinc'>Precedente</a>";
             }

             if($pg == $tot_pagine-1)
             {
             $successiva = "";
             }
             else
             {
             $next_page = ($pg + 1);
             $successiva = "<a href='index.php?pag=14&pagina1&chiave=$next_page' title='Vai alla pagina
             successiva' class='bottonelinc'>Sucessiva</a>";
             }

            $paginazione = "
                <table width='30%' border='0' align='center'>
                    <tr>
                        <td align='center'>
                            ".$precedente."
                        </td>
                        <td align='center'>
                            ".$successiva."
                        </td>
                    </tr>
                </table>";


              echo "<CENTER>" . $paginazione . "</CENTER>";

se non ho capito male quello che dovrebbe far andare tutto lo scrpt di paginazione è $pg che non è altro che il limit reso dinamico, quindi la queri viene eseguita correttamente e mostra i primi 15 record come da programma.

Successivamente $pg diventa $next_page = ($pg + 1);

quindi creavo questo link

$successiva = "<a href='index.php?pag=14&pagina1=$next_page' title='Vai alla pagina

             successiva' class='bottonelinc'>Sucessiva</a>";

che mi sembrava il piu' corretto ma non funziona.

Anche aggiungendo &chiave le cose non cambiano

 $successiva = "<a href='index.php?pag=14&pagina1&chiave=$next_page' title='Vai alla pagina

             successiva' class='bottonelinc'>Sucessiva</a>";

C'e' qualche cosa di sbagliato nella logica dello script???

Cliccando su successivo dovrebbe essere lanciata una nuova query con il valore del limit incrementato di 15???

risposto 7 anni fa
blackeyes
modificato 7 anni fa
X 0 X

Non so più in che lingua dirtelo, non passi i parametri di ricerca!!!

La query da dove prende i valori di ricerca se non viene definita la chiave di ricerca dato che non viene nemmeno passata allo script?:

         $precedente = "<a href='index.php?pag=14&pagina1&chiave=$previous_page' title='Vai alla pagina

             precedente' class='bottonelinc'>Precedente</a>";

             }

             $successiva = "<a href='index.php?pag=14&pagina1&chiave=$next_page' title='Vai alla pagina

             successiva' class='bottonelinc'>Sucessiva</a>";

Tu nei link che crei per le pagine "successive" e "precedenti" gli dovrai passare sto parametro o no?

Non lo hai ancora fatto!!! Non lo vedo. Non hanno logica.

Inoltre tu nel tuo script esegui la query di ricerca solamente se è stato premuto il tasto "cerca":

if ($_GET) {

   if ($_GET['azione'] == "cerca") {

      $chiave = $_GET['chiave'];

      $keys = explode(",", $chiave);

      $parola = $keys[0];

...e poi tutto il resto...

Dovrai di conseguenza passare anche la variabile "azione" con valore "cerca", altrimenti lo script non esegue niente scusa...

risposto 7 anni fa
Mario Santagiuliana
X 0 X

Mi faresti capire come passarli con due righe di codice magari sarebbe più facile...

risposto 7 anni fa
blackeyes
X 0 X

Tramite l'array GET come ti ho detto fino ad ora...

Questa:

         $precedente = "<a href='index.php?pag=14&pagina1&chiave=$previous_page' title='Vai alla pagina

             precedente' class='bottonelinc'>Precedente</a>";

             }

dovrebbe essere così:

         $precedente = "<a href='index.php?pag=14&azione=cerca&pagina1=$previous_page&chiave=$chiave' title='Vai alla pagina
             precedente' class='bottonelinc'>Precedente</a>";
             }

Produrrà un link del tipo:

http://tuositoweb.com/index.php?pag=14&azione=cerca&pagina1=XXXX&chiave=YYYY

Con XXXX e YYYY a seconda di dove si trova nella navigazione l'utente e di cosa ha cercato.

E' più chiaro ora?

risposto 7 anni fa
Mario Santagiuliana
X 0 X

Decisamente si! Vedendolo scritto capisco che era molto piu' semplice di quello che credevo :-[ :-[ :-[ una cosa e' certa di sicuro non me lo dimentico piu' O0

Ovviamente funziona, ce' solo un dettaglio, in effetti quando effettuo la prima ricerca mi estrae correttamente i primi 15 record e crea un link di questo tipo

http://test.mondoricette.com/index.php?pag=14&chiave=vino&azione=cerca

Quando clicco la prima volta su successiva passa alla pagina seguente ripetendo pero' i primi 15 record creando un link di questo tipo

http://test.mondoricette.com/index.php?pag=14&azione=cerca&pagina1=1&chiave=vino

successivamente la cosa non si verifica.

Come posso ovviare?

risposto 7 anni fa
blackeyes
X 0 X
era molto piu' semplice di quello che credevo

Ecco perchè non riuscivo a spiegartela meglio, è una cosa davvero banale.

Per il tuo problema, credo il tutto dipenda da questo:

// imposto il limit per la query

if(isset($_GET['pagina1']))

   $pg = $_GET['pagina1'];

else

   $pg = 0;

$step = 15;

if($pg > 1)

   $start = ($pg - 1) * $step;

else

   $start = 0;

Prova a mettere "$pg > 0".

risposto 7 anni fa
Mario Santagiuliana
X 0 X
era molto piu' semplice di quello che credevo

Ecco perchè non riuscivo a spiegartela meglio, è una cosa davvero banale.

Per il tuo problema, credo il tutto dipenda da questo:

// imposto il limit per la query

if(isset($_GET['pagina1']))

   $pg = $_GET['pagina1'];

else

   $pg = 0;

$step = 15;

if($pg > 1)

   $start = ($pg - 1) * $step;

else

   $start = 0;

Prova a mettere "$pg > 0".

if($pg > 0)
   $start = ($pg - 1) * $step;
else
   $start = 1;

ho fatto come hai detto in +  $start = 1 e sembra andare

risposto 7 anni fa
blackeyes
X 0 X

ho fatto come hai detto con ma con start =0 non cambia nulla

 ho provato  $start = 1 e sembra andare

edit

no non va'

 $start = 1

Antipasto Di Aragosta In Bellavista

Aragosta Al Pernod

Arancini Di Risu O' Ragù

Arancini Rustici

Sartù

Risi E Bisi

Risi E Bisi (2)

Risi E Bisi Alla Trevisana

Risi E Bisi Alla Veneta

Riso Agli Champignon

Riso Ai Carciofi

Riso Ai Peperoni

Riso Ai Peperoni (2)

Riso Al Basilico

Riso Al Brandy

la seconda

Agnellone Con Riso

Antipasto Di Aragosta In Bellavista

Aragosta Al Pernod

Arancini Di Risu O' Ragù

Arancini Rustici

Sartù

Risi E Bisi

Risi E Bisi (2)

Risi E Bisi Alla Trevisana

Risi E Bisi Alla Veneta

Riso Agli Champignon

Riso Ai Carciofi

Riso Ai Peperoni

Riso Ai Peperoni (2)

Riso Al Basilico

risposto 7 anni fa
blackeyes
X 0 X

Per me è tardi per pensarci...deve esserci qualcosa sul come crei il numero del limit...non deve andare avanti di 1 ma di un multiplo dello step...

ciao

risposto 7 anni fa
Mario Santagiuliana
X 0 X

anche per me domani si lavora O0 :bye: :bye:

risposto 7 anni fa
blackeyes
X 0 X

Allora il problema deve risiedere qui:

// imposto il limit per la query

if(isset($_GET['pagina1']))

   $pg = $_GET['pagina1'];

else

   $pg = 0;

$step = 15;

if($pg > 1)

   $start = ($pg - 1) * $step;

else

   $start = 0;

Poi hai questa query:

      $query = "SELECT id, titolo, ingredienteprincipale, regione FROM DBRicette WHERE titolo   LIKE   '%$parola%'   OR   ingredienti   LIKE   '%$parola%' OR   tipopiatto   LIKE   '%$parola%' OR   ingredienteprincipale   LIKE   '%$parola%' OR   regione   LIKE   '%$parola%' OR   note   LIKE   '%$parola%' LIMIT $start , $step ";

Ora se tu vai a pagina "1" lo script rimanda direttamente all'else che imposta lo start a zero.

Prova così:

// imposto il limit per la query
if(isset($_GET['pagina1']))
   $pg = $_GET['pagina1'];
else
   $pg = 0;

$step = 15;
if($pg > 0)
   $start = ($pg - 1) * $step;
else
   $start = 0;

Tu la prima visualizzazione la intendi come pagina 0 e la seconda come pagina 1 giusto?

risposto 7 anni fa
Mario Santagiuliana
X 0 X

quando effettuo la ricerca dal file search la prima volta crea questo link

http://test.mondoricette.com/index.php?pag=14&chiave=riso&azione=cerca

da quello che vedo non fa riferimento alla pagina 0

quando clicco su successiva la prima volta la ripete e crea

http://test.mondoricette.com/index.php?pag=14&azione=cerca&pagina1=1&chiave=riso

se clicco su precedente crea

http://test.mondoricette.com/index.php?pag=14&azione=cerca&pagina1=0&chiave=riso

continua comunque a ripetere la prima pagina ma poi i record sono visualizzati correttamente

risposto 7 anni fa
blackeyes
modificato 7 anni fa
X 0 X
da quello che vedo non fa riferimento alla pagina 0

Sei te che dovresti decidere come deve funzionare il tuo script!!!!!

Allora il numero 1 è la tua prima pagina, devi semplicemente far partire il conteggio da 1 e non da 0, cioè quando fai per la prima volta successiva deve chiamare pagina 2 e non pagina 1. Ok?

risposto 7 anni fa
Mario Santagiuliana
X 0 X

Ho verificato con piu' attenzione facendo stampare a video $pg si evince che la prima pagina alla quale lui fa riferimento è 0, cliccando su successiva la pagina passa a 1 ma i contenuti sono quelli della 0

aggiornando il codice cosi

// imposto il limit per la query
if(isset($_GET['pagina1']))
   $pg = $_GET['pagina1'];
else
   $pg = 1;

è perfetto!

Grazie O0 O0 O0 O0 O0

risposto 7 anni fa
blackeyes
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda