problemi con paginazione tabella

karlo

Nuovo Utente
20 Gen 2013
20
0
0
Salve a tutti
Ho una pagina php che estrae i dati da un database e li visualizza su una tabella filtrandoli con dei parametri inseriti dall'utente. Tutto funziona correttamente. Sucessivamente ho inserito del codice per paginare i risultati della query, ma nonostante i collegamenti vengono creati e visualizzati correttamente non mi viene mostrato il risultato corretto.
In pratica succede questo.
ES. :
* l'utente insrisce i parametri di ricerca
* la query estrae i dati e i primi 10 vengono stampati nella tabella
* viene creato il collegamento alle pagine rimanenti. es: 1 2 3
* Se clicco sul due la tabella scompare e per vedere i risultati selezionati (dal 11 al 20) devo cliccare sul submit "Cerca"
Questo il codice della pagina
PHP:
<?php 

	include 'header.php';
	
?>
<div id="wrapper1">

    <?php 

	if(!isset($_POST['cerca'])){ ?>	

            <form method="post" action="#" id="formcerca">
			
			            <ul>
					     
                        <li>
					    <label for="isbn">ISBN del libro.</label>
				        <input type="number" name="isbn" id="isbn" value=""/>
				    	 </li>
						 <li>
					    <label for="testo">Parola contenuta nel titolo del libro.</label>
				        <input type="text" name="testo" id="testo" />
				    	 </li>
						<br>
					    <input type="submit" name="cerca" id="cerca" value="Cerca" />
			            </ul>

            </form>
			
				 <div id="divinfo">	
	     <center><img src="Immagini/info.jpeg" style=pos/></center>
	     <h5>
         <p>Per la ricerca di un testo di tuo interesse puoi usare tutto o parte del codice ISBN e/o titolo del libro.</p>
         </h5>
	  
         </div>		

      <?php } else {
	         
	             $isbn = mysql_real_escape_string($_POST['isbn']);
				 $testo = mysql_real_escape_string($_POST['testo']);
				
		 ?>		 
	

             <form method="post" action="#" id="formcerca">
			
			            <ul>
					     
                        <li>
					    <label for="isbn">ISBN del libro.</label>
				        <input type="number" name="isbn" id="isbn" value="" />
				    	 </li>
						 <li>
					    <label for="testo">Parola contenuta nel titolo del libro.</label>
				        <input type="text" name="testo" id="testo" />
				    	 </li>
						<br>
					    <input type="submit" name="cerca" id="cerca" value="Cerca" />
			            </ul>

            </form>
		
					 <div id="divinfo">	
	     <center><img src="Immagini/info.jpeg" style=pos/></center>
	     <h5>
         <p>Per la ricerca di un testo di tuo interesse puoi usare tutto o parte del codice ISBN e/o titolo del libro.</p>
		 <p>Usa il link sulla colonna "Contatti" della tabella sottostante per inviare una email al venditore. </p>
         </h5>
	  
         </div>		
	
         </div>
         <?php echo "<p1></p1>";?>
          <div id="table" class="tabella">
	
	    <?php 
	               
				    $cerca = mysql_query("SELECT * FROM libri WHERE isbn LIKE '%$isbn%' AND titolo LIKE '%$testo%'");
					$contacerca= mysql_num_rows($cerca);
					
					//inizio codice paginazione.Il codice paginazione è stato aggiunto per inserire la paginazione della tabella
					// per ripristinare eliminare tutto codice paginazione
					$per_pagina = 10 ;
					$tot_pagine=ceil($contacerca / $per_pagina);
					//pausa codice paginazione e continua codice originale
					
				    if($contacerca > 0){
					echo "<p1> <h3>Sono stati trovati <strong>".$contacerca."</strong> libri in vendita.</h3></p1>";
					
					//continua codice paginazione
					//pagina corrente
					if (isset($_GET['idpag'])){
					   $idpag=$_GET['idpag'];
					}  else {
					   $idpag = 1 ;
					   }
					//calcolo numero iniziale e finale che andranno a limitare la query
                    if($idpag == 1){
					   $inizio = 0 ;
					 } else {
                       $inizio = ($idpag * $per_pagina) - $per_pagina;
					   }
					// ripeto query con limitazioni record
					$result=mysql_query("SELECT * FROM libri WHERE isbn LIKE '%$isbn%' AND titolo LIKE '%$testo%' LIMIT $inizio, $per_pagina");
					
					//pausa codice paginazione e continua codice originale
					?> 
					

					
					<table id="table">
					<tr>
					  <TH colspan="8" scope="colgroup" align="center">Elenco dei libri corrispondenti alla tua ricerca.</TH>
					</tr>
                      <tr align="center">
					  
                      <td><b>ISBN</b></td>
                      <td><b>Titolo</b></td>
					  <td><b>Autore</b></td>
					  <td><b>Editore</b></td>
					  <td><b>Prezzo Copertina</b></td>
					  <td><b>Prezzo Richiesto</b></td>
					  <td><b>Stato</b></td>
					  <td><b>Contatti</b></td>
					 
					  </tr>
					 
                    <?php
					 
					 while($row=mysql_fetch_assoc($result)){ // sostituire $result con $cerca per ripristinare modifiche paginazione
					 ?>
				     <tr align="center" >
					
                     <td><?php echo $row['isbn']?></td>
                     <td><?php echo $row['titolo']?></td>
					 <td><?php echo $row['autore']?></td>
					 <td><?php echo $row['editore']?></td>
					 <td><?php echo $row['prezzo_cop']?></td>
					 <td><?php echo $row['prezzo_ric']?></td>
					 <td><?php echo $row['stato']?></td>
					 <!--<?php $id=$row['id'] ?>-->
					
					 <td><a href= "email.php?cod=<?php echo $id?>">Contatta il venditore</a></td>
					 </tr>
                   
                    
				     <?php }} else {
					
					 
                     echo "Attualmente non risulta inserito nessun libro corrispondente ai tuoi criteri di ricerca. ";
					
					 exit();
			       	}
				 
	                ?>
	

              </div> <!--fine div tabella-->
          
					  <!-- inizio codice paginazione-->	 
			        <div style="float: right;">
		
        	         <?php
		            if($idpag>1){?>
		        	<span style="text-decoration: underline; margin-right: 10px"><a href="?idpag=<?php echo ($idpag-1);?>"><</a></span>
		            <?php }else{?>
		         	<span><</span>
	            	<?php }
        
		            $i=1;
	            	do{
		
		        	//Link per scorrere le pagine: la pagina corrente ha un aspetto diverso
		        	if($i==$idpag){?>
			    	<span style="text-decoration: none; font-weight: bold; margin-right: 10px"><a href="?idpag=<?php echo $i;?>"><?php echo $i;?></a></span>
			        <?php }else{?>
				    <span style="text-decoration: underline; margin-right: 10px"><a href="?idpag=<?php echo $i;?>"><?php echo $i;?></a></span>
			         <?php }
		        	$i++;

		            }while($i<=$tot_pagine);
		
		            if($idpag<$tot_pagine){?>
		           	<span style="text-decoration: underline; margin-right: 10px"><a href="?idpag=<?php echo ($idpag+1);?>">></a></span>
		            <?php }else{?>
			        <span>></span>
		            <?php }?>
		
		            </div>

		
		

                    <!--fine codice paginazione-->
			
		<?php
		}
        ?>			
    




</body>
</html>

Perche non mi funziona? Qualcuno può darmi qualche dritta?
Grazie a tutti per la pazienza
Carlo
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
ciao, il tuo problema è qui
PHP:
<?php if (!isset($_POST['cerca'])) { ?>
quando clicchi sul numero della pagina ti perdi il POST
potresti risolvere passando anche i dati di ricerca in GET e cambiando la prima if cosi
PHP:
<?php if (!isset($_POST['cerca']) && !isset($_GET)) { ?>
oppure modificando i numeri di navigazione in tanti piccoli form
HTML:
<form method='post'>
<input type='hidden' name='isbn' value='$isbn'/>
<input type='hidden' name='testo' value='$testo'/>
<input type='button' name='idpag' value='$i'/>
</form>
nel codice ci sono dgli errori di sintassi :
non chiudi la table e questa sintassi è errata (<img src="Immagini/info.jpeg" style=pos/>)
 

karlo

Nuovo Utente
20 Gen 2013
20
0
0
Grazie criric per la risposta e per le segnalazioni agli errori di sintassi.
Ho provato con il primo metodo suggerito ma mi ritorna due notice:

Notice: Undefined index: isbn in C:\xampp\htdocs\Sito_scambio_libri\cerca.php on line 41

Notice: Undefined index: testo in C:\xampp\htdocs\Sito_scambio_libri\cerca.php on line 42

che scompaiono appena clicco sul submit.
Inoltre mi stampa sulla tabella i risultati della prima query appena apro la pagina. Comunque i link di navigazione funzionano.
La seconda soluzione non l'ho capita.
Ti ringrazio ancora per le possibili soluzioni.
 

karlo

Nuovo Utente
20 Gen 2013
20
0
0
Grazie criric per la risposta e per le segnalazioni agli errori di sintassi.
Ho provato con il primo metodo suggerito ma mi ritorna due notice:

Notice: Undefined index: isbn in C:\xampp\htdocs\Sito_scambio_libri\cerca.php on line 41

Notice: Undefined index: testo in C:\xampp\htdocs\Sito_scambio_libri\cerca.php on line 42

che scompaiono appena clicco sul submit.
Inoltre mi stampa sulla tabella i risultati della prima query appena apro la pagina. Comunque i link di navigazione funzionano.
La seconda soluzione non l'ho capita.
Ti ringrazio ancora per le possibili soluzioni.
Scusate
le rige 41 e42 sono queste:
PHP:
  $isbn = mysql_real_escape_string($_POST['isbn'];
  $testo = mysql_real_escape_string($_POST['testo']);
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
in effetti la condizioni che ti ho postato non era corretta ho provato a invertire il form e metterlo nell'else
èrova cosi dovrebbe funzionare
PHP:
<?php
include 'header.php';
?>
<div id="wrapper1">
    <?php
    if (isset($_POST['cerca']) || isset($_GET['i'])) {
        if (isset($_POST['cerca'])) {
            $isbn = mysql_real_escape_string($_POST['isbn']);
            $testo = mysql_real_escape_string($_POST['testo']);
        } else {

            $isbn = mysql_real_escape_string($_GET['i']);
            $testo = mysql_real_escape_string($_GET['t']);
        }
        ?>
        <form method="post" action="#" id="formcerca">
            <ul>
                <li>
                    <label for="isbn">ISBN del libro.</label>
                    <input type="number" name="isbn" id="isbn" value="" />
                </li>
                <li>
                    <label for="testo">Parola contenuta nel titolo del libro.</label>
                    <input type="text" name="testo" id="testo" />
                </li>
                <br>
                <input type="submit" name="cerca" id="cerca" value="Cerca" />
            </ul>
        </form>
        <div id="divinfo">    
            <center><img src="Immagini/info.jpeg"/></center>
            <h5>
                <p>Per la ricerca di un testo di tuo interesse puoi usare tutto o parte del codice ISBN e/o titolo del libro.</p>
                <p>Usa il link sulla colonna "Contatti" della tabella sottostante per inviare una email al venditore. </p>
            </h5>
        </div> 
    </div>
    <?php echo "<p1></p1>"; ?>
    <div id="table" class="tabella">
        <?php
        $cerca = mysql_query("SELECT * FROM libri WHERE isbn LIKE '%$isbn%' AND titolo LIKE '%$testo%'");
        $contacerca = mysql_num_rows($cerca);
        if (!$cerca)
            echo mysql_error();
        //inizio codice paginazione.Il codice paginazione è stato aggiunto per inserire la paginazione della tabella
        // per ripristinare eliminare tutto codice paginazione
        $per_pagina = 10;
        $tot_pagine = ceil($contacerca / $per_pagina);
        //pausa codice paginazione e continua codice originale
        if ($contacerca > 0) {
            echo "<p1> <h3>Sono stati trovati <strong>" . $contacerca . "</strong> libri in vendita.</h3></p1>";
            //continua codice paginazione
            //pagina corrente
            if (isset($_GET['idpag'])) {
                $idpag = $_GET['idpag'];
            } else {
                $idpag = 1;
            }
            //calcolo numero iniziale e finale che andranno a limitare la query
            if ($idpag == 1) {
                $inizio = 0;
            } else {
                $inizio = ($idpag * $per_pagina) - $per_pagina;
            }
            // ripeto query con limitazioni record
            $cerca = mysql_query("SELECT * FROM libri WHERE isbn LIKE '%$isbn%' AND titolo LIKE '%$testo%'");
            //pausa codice paginazione e continua codice originale
            ?> 
            <table id="table">
                <tr>
                    <TH colspan="8" scope="colgroup" align="center">Elenco dei libri corrispondenti alla tua ricerca.</TH>
                </tr>
                <tr align="center">
                    <td><b>ISBN</b></td>
                    <td><b>Titolo</b></td>
                    <td><b>Autore</b></td>
                    <td><b>Editore</b></td>
                    <td><b>Prezzo Copertina</b></td>
                    <td><b>Prezzo Richiesto</b></td>
                    <td><b>Stato</b></td>
                    <td><b>Contatti</b></td>
                </tr>
                <?php
                while ($row = mysql_fetch_assoc($result)) { // sostituire $result con $cerca per ripristinare modifiche paginazione
                    ?>
                    <tr align="center" >
                        <td><?php echo $row['isbn'] ?></td>
                        <td><?php echo $row['titolo'] ?></td>
                        <td><?php echo $row['autore'] ?></td>
                        <td><?php echo $row['editore'] ?></td>
                        <td><?php echo $row['prezzo_cop'] ?></td>
                        <td><?php echo $row['prezzo_ric'] ?></td>
                        <td><?php echo $row['stato'] ?></td>
                        <!--<?php $id = $row['id'] ?>--> 
                        <td><a href= "email.php?cod=<?php echo $id ?>">Contatta il venditore</a></td>
                    </tr>
                    <?php
                }
                ?>
            </table>
            <?php
        } else {
            echo "Attualmente non risulta inserito nessun libro corrispondente ai tuoi criteri di ricerca. ";
            exit();
        }
        ?>
    </div> <!--fine div tabella-->
    <!-- inizio codice paginazione-->     
    <div style="float: right;">
        <?php if ($idpag > 1) { ?>
            <span style="text-decoration: underline; margin-right: 10px"><a href="i=<?php echo $isbn ?>&t=<?php echo $testo ?>&?idpag=<?php echo ($idpag - 1); ?>"><</a></span>
        <?php } else { ?>
            <span><</span>
            <?php
        }
        $i = 1;
        do {
            //Link per scorrere le pagine: la pagina corrente ha un aspetto diverso
            if ($i == $idpag) {
                ?>
                <span style="text-decoration: none; font-weight: bold; margin-right: 10px">
                    <a href="?idpag=<?php echo $i; ?>"><?php echo $i; ?></a></span>
            <?php } else { ?>
                <span style="text-decoration: underline; margin-right: 10px"><a href="?i=<?php echo $isbn ?>&t=<?php echo $testo ?>&idpag=<?php echo $i; ?>"><?php echo $i; ?></a></span>
                <?php
            }
            $i++;
        } while ($i <= $tot_pagine);
        if ($idpag < $tot_pagine) {
            ?>
            <span style="text-decoration: underline; margin-right: 10px"><a href="?i=<?php echo $isbn ?>&t=<?php echo $testo ?>&idpag=<?php echo ($idpag + 1); ?>">></a></span>
        <?php } else { ?>
            <span>></span>
        <?php } ?>
    </div>
    <!--fine codice paginazione-->
    <?php
} else {
    ?>
    <form method="post" action="#" id="formcerca">
        <ul>
            <li>
                <label for="isbn">ISBN del libro.</label>
                <input type="number" name="isbn" id="isbn" value=""/>
            </li>
            <li>
                <label for="testo">Parola contenuta nel titolo del libro.</label>
                <input type="text" name="testo" id="testo" />
            </li>
            <br>
            <input type="submit" name="cerca" id="cerca" value="Cerca" />
        </ul>
    </form>
    <div id="divinfo">    
        <center><img src="Immagini/info.jpeg"/></center>
        <h5>
            <p>Per la ricerca di un testo di tuo interesse puoi usare tutto o parte del codice ISBN e/o titolo del libro.</p>
        </h5>
    </div>  
    <?php
}
?>         
</body>
</html>
visto che il form lo mostri in ogni caso ti converrebbe scriverlo una volta sola fuori dalle condizioni
 

karlo

Nuovo Utente
20 Gen 2013
20
0
0
Non vorrei aprofittare troppo della tua disponibilità ma adesso non vengono visualizzati i link della navigazione.
Io ha solo sostituito $result con $cerca perchè giustamente mi dava errore.
PHP:
while ($row = mysql_fetch_assoc($result))
Se mi puoi aiutare ancora, grazie infinite.
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
a me in locale funzionava
avevo solo modificato la query per interrogare una mia tabella
hai scoperto l'inghippo?
 

karlo

Nuovo Utente
20 Gen 2013
20
0
0
Ciao criric
Scusa se ti rispondo solo ora ma ho voluto testare meglio il codice e non ho avuto troppo tempo in questi giorni.
Avevi ragione tu, funziona tutto bene, ho sistemato solo alcune cosette. Oro non mi funziona il link che fa tornare indietro di una pagina "<" , provo a vedere cos'è che no va e casomai chiedo aiuto ancora.
Grazie di tutto.
Carlo
 
Discussioni simili
Autore Titolo Forum Risposte Data
D [risolto] Problemi di paginazione dei risultati con una determinata query Classic ASP 4
B Problemi con paginazione dei risultati PHP 1
T problemi con dati menu a tendina HTML e CSS 2
M Upload immagine con javascript problemi con FormData() Javascript 1
A Problemi con move_uploaded_file PHP 7
M Problemi con la stampa dei valori in php PHP 1
L Problemi con il login PHP 2
R Tutto su utf-8 ma ancora problemi con i caratteri speciali in mysql MySQL 1
Z problemi con foreach insert into PHP 10
B javascript per problemi con pdf e Safari Javascript 0
M Problemi con creazione maschere Presentati al Forum 1
M Problemi con query a più tabelle PHP 3
S Problemi delle funzioni eliminate con PHP e MySQL PHP 4
M Problemi con blog Grav CMS (Content Management System) 0
S incoerenza di stampa. problemi con il magenta Photoshop 3
A problemi con paypall Java 1
S Problemi con modulo upload video php (help!) PHP 0
felino [Windows 8.1] Problemi con connessione WiFi Windows e Software 0
E [PHP] problemi nuova riga con fwrite su piattaforma android PHP 5
O [HTML] problemi con la regola "background-attachment: fixed" in EDGE HTML e CSS 0
M [PHP] Problemi con query unione PHP 11
M [PHP] Problemi con select PHP 6
ANDREA20 [HTML] problemi con il footer HTML e CSS 1
D [MS Access] problemi con inserimento campo in una maschera MS Access 6
M [PHP] Problemi con il riconoscimento login. PHP 21
A [WordPress] problemi con xampp WordPress 2
M Problemi con database Apache/2.4.37 (Win32) OpenSSL/1.1.1a PHP/7.3.1 PHP 6
S [PHP] problemi con le sessioni PHP 3
T [PHP] problemi con il browser PHP 0
Andrea_Ventura [HTML] Problemi con effetto hover HTML e CSS 5
M [PHP] Problemi con login facebook PHP 0
Andrea_Ventura [HTML] Problemi con visualizzazione Navigation Bar HTML e CSS 10
andreas88 Creare file .htaccess per risolvere alcuni problemi con il tester SEO SEO e Posizionamento 0
Eugene [Joomla] Problemi con modulo per strutture alberghiere JHotelreservation starter Joomla 6
F [PHP] Problemi di base con bot di telegram PHP 9
M [Photoshop] Problemi con importazione immagini trasparenti in indesign Photoshop 0
E [Photoshop] Problemi con dimensioni immagini Photoshop 12
G [HTML] Problemi con inserimento immagini HTML e CSS 7
L Problemi con Javascript e Mustache Javascript 0
G Invio Mail con PHPMailer, problemi SMTP PHP 7
A [Javascript] problemi con javascrip e posizione GPS html5 Javascript 6
D Due problemi con Photoshop... Photoshop 1
G Problemi con pagina online.php di una chat in php PHP 38
S Problemi con impostazioni php PHP 3
P Problemi con AndroidStudio Sviluppo app per Android 0
S Problemi con Dell Precision T5400 Windows e Software 2
F ciao, sono ferro e ho bisogno di aiuto per problemi con la mail di alice.it Presentati al Forum 1
S [PHP] Problemi con Login e pagina Utente PHP 5
Z problemi con swf e chrome o sistemi portatili Webdesign e Grafica 5
N Problemi connettività con Tp Link EAP 110 Reti LAN e Wireless 0

Discussioni simili