- Home
- Categorie
- Coding e Sistemistica
- PHP
- Paginazione dati
-
di solito esce fuori quando manca qualche chiusura di parentesi
-
E infatti avevo dimenticato di chiudere una }...comunque non funziona.
Continuo a cercare da giorni su internet materiale su come paginare i risultati di una query...provo ad applicare i codici che trovo, adattandoli alle mie esigenze e non mi funziona nulla.....ora ho abbandonato il codice precedentemente postato e sto provando ad elaborarne un altro<?php $db_host="..."; $db_user="..."; $db_password="..."; $db_database="..."; $connessione=mysql_connect($db_host,$db_user,$db_password) or die ("Errore nella connessione al Mysql:" . mysql_error()); mysql_select_db($db_database,$connessione) or die ("Errore nella selezione del db:" . mysql_error()); $numero_record = 3; if(!isset($GET["inizio"])){ $inizio = 0; }else{ $inizio = $GET["inizio"]; } $query_limit="SELECT AnnoRipresa, Id, Foto FROM nome_tabella WHERE AnnoRipresa LIKE '%$_POST[AnnoRipresa]%' order by Id desc limit $inizio, $numero_record" or die ("Errore :" . mysql_error());; $query = mysql_query($query_limit); $select = "SELECT AnnoRipresa, Id, FROM nome_tabella WHERE AnnoRipresa LIKE '%$_POST[AnnoRipresa]%'"; $query2 = mysql_query($select); $numero_record_totali = mysql_numrows($query2); $numero_pagine = ceil($numero_record_totali/$numero_record); $risultato=mysql_query($query_limit,$connessione) or die ("Errore nella query:" . mysql_error()); while($riga=mysql_fetch_array($risultato)) {?> <tr> <td height="22" width="20%"><h4><b>Anno Ripresa</b></td> <td height="22" width="20%"><h4><b>Id</b></td> </tr> <tr> <?php echo "<tr>"; echo "<td>". $riga['AnnoRipresa'] . "</td>"; echo "<td>" . $riga['Id'] . "</td>"; echo "</tr>"; } if($numero_pagine > 1){ for($pagina = 1; $pagina <= $numero_pagine; $pagina++){ if($pagina == $pagina_corrente){ echo"<b>".$pagina."</b>"; }else{ echo"<a href='default.php?inizio=".(($pagina - 1) * $numero_record)."'>".$pagina."</a>"; } } } ?>
Il risultato? Mi fa vedere i primi 3 risultati in una pagina...quando clicco sulla successiva mi compaiono i primi 3 records del DB e così per le altre.....pensavo di esserci riuscita...ma niente anche stavolta.
Vi prego.....c'è qualcuno che può aiutarmi?
-
$GET['inizio'] prova a scriverlo
$_GET['inizio']
-
Niente...è la stessa cosa
-
domanda idiota, ma hai provato a stampare il contenuto di $_GET['inizio']?
-
Non è una domanda stupida, visto che non ci avevo provato...risultato? non mi visualizza nulla, cioè compare la stessa pagina con i risultati e i link ma echo $_GET['inizio'] non mi fa veder niente di nuovo è come se non l'avessi inserito
-
ok... allora, in questo caso e' ovvio che ti faccia sempre vedere i primi tre...
dunque, hai verificato il codice html generato che il link sia scritto giusto con
default.php?inizio=1, default.php?inizio=2, ecc ecc?
se e' scritto giusto, prova ad usare $_REQUEST['inizio'] invece di $_GET['inizio']
Per ultimo, un suggerimento, l'echo che fai del <a href...ecc> non mettere gli apici singoli nell'url, ma i doppi... puoi metterli come ",
echo"<a href="default.php?inizio=".(($pagina - 1) * $numero_record)."">".$pagina."</a>";oppure trasformando la stringa in:
echo '<a href="default.php?inizio='.(($pagina - 1) * $numero_record).'">'.$pagina.'</a>';
-
io la query che tu hai scritto
[php]$query=mysql_query("SELECT AnnoRipresa, Regione FROM fotoaereeverticali WHERE AnnoRipresa LIKE '%$_POST[AnnoRipresa]%'AND Regione LIKE '%$_POST[Regione]%'");[/php]
la trasformerei così[php]$query=mysql_query("SELECT AnnoRipresa, Regione FROM fotoaereeverticali WHERE AnnoRipresa LIKE". $_POST[AnnoRipresa]." AND Regione LIKE " .$_POST[Regione]);
[/php]
vedi se funziona, magari cambiarei anche il like con = quindi verrebbe[php]$query=mysql_query("SELECT AnnoRipresa, Regione FROM fotoaereeverticali WHERE AnnoRipresa =". $_POST[AnnoRipresa]." AND Regione =" .$_POST[Regione]);
[/php]così non esiste motivo per il quale non debba funzionare almeno credo...
-
Allora, ho verificato che il codice html generato e i link sono giusti:
nella prima pagina ho default.php, poi default.php?inizio=3, default.php?inizio=6 ma , tranne che la prima, le altre mi visualizzano records del DB che non corrispondono ai criteri di ricerca. Ho corretto $_GET['inizio'] con $_REQUEST['inizio'], ma niente....a questo punto mi viene un dubbio saranno errate le query...eppure sembrano funzionare perchè i risultati nella prima pagina sono esatti così come il numero delle pagine corrispondenti da cliccare (1,2,3,4,...)
Non so più cosa fare !!!!!
-
uhm... non capisco... io a questo punto mi farei stampare le varie query che genero e le proverei direttamente sul db da phpMyAdmin per vedere che ritornino i dati che mi interessano... dopodiche passerei a cercare e usare qualche classe gia' fatta di paginazione su db! :S
-
Ho finalmente risolto il problema......posto la pagina, forse a qualcuno potrebbe servire.
Comunque grazie a tutti per i consigli<?php $db_host=".........."; $db_user="........."; $db_password="..........."; $db_database="..........."; $connessione=mysql_connect($db_host,$db_user,$db_password) or die ("Errore nella connessione al Mysql:" . mysql_error()); mysql_select_db($db_database,$connessione) or die ("Errore nella selezione del db:" . mysql_error()); $numero_record = 3; if(!isset($_GET["inizio"])){ $inizio = 0; }else{ $inizio = $_GET["inizio"]; } $Foto = (isset($_POST["Foto"]) ? $_POST["Foto"] : base64_decode($_GET["Foto"])); $AnnoRipresa = (isset($_POST["AnnoRipresa"]) ? $_POST["AnnoRipresa"] : base64_decode($_GET["AnnoRipresa"])); $Id = (isset($_POST["Id"]) ? $_POST["Id"] : base64_decode($_GET["Id"])); $query_limit="SELECT AnnoRipresa, Id, Foto FROM nome_tabella WHERE AnnoRipresa LIKE '%".addslashes($AnnoRipresa)."%' order by Id limit $inizio, $numero_record"; $query = mysql_query($query_limit) or die(mysql_error()); $select="SELECT count(*) FROM nome_tabella WHERE AnnoRipresa LIKE '%".addslashes($AnnoRipresa)."%'"; $query2 = mysql_query($select); $numero_record_totali = mysql_fetch_row($query2); $numero_record_totali = $numero_record_totali[0]; $numero_pagine = ceil($numero_record_totali/$numero_record); $pagina_corrente = ceil(($inizio/$numero_record) + 1); $this_Foto = ""; $this_AnnoRipresa = ""; $this_Id = ""; while($riga=mysql_fetch_array($query)) { $this_Foto=$riga['Foto']; $this_AnnoRipresa=$riga['AnnoRipresa']; $this_Id=$riga['Id']; ?> <img src="ridimensiona.php?Foto=<?php print ("$this_Foto");?>"> <?php echo . $this_AnnoRipresa .; echo . $this_Id .; } if($numero_pagine > 1){ for($pagina = 1; $pagina <= $numero_pagine; $pagina++){ if($pagina == $pagina_corrente){ ?> <b><?echo $pagina;?></b> <br> <?php }else{ echo"<a href=\"pagina.php?inizio=".(($pagina - 1) * $numero_record)."&AnnoRipresa=".base64_encode($AnnoRipresa). "&Id=".base64_encode($Id). "&Foto=".base64_encode($Foto)."\">".$pagina."</a>"; } } } ?>