Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2011
    Messaggi
    10

    Paginazione: non capisco il problema.

    Ciao a tutti.

    Lo so, è un argomento trattato e ritrattato, ho fatto una ricerca sul forum e sul web ed ho preso un codice che ho riadattato, però non funziona bene.
    Spero mi possiate aiutare, non sono molto bravo con il php.

    Il codice è questo:
    codice:
    <?php
    
    $x_pag = 5;
    $pag = $_GET['pag'];
    
    if (!$pag) $pag = 1; 
    
    $conn = mysql_connect("localhost","utente","password");
    mysql_select_db("nome_db", $conn);
    
    $all_rows = mysql_num_rows(mysql_query("SELECT id FROM agenda"));
    $all_pages = ceil($all_rows / $x_pag);
    $first = ($pag - 1) * $x_pag;
    
    $rs = mysql_query("SELECT * FROM agenda LIMIT $first, $x_pag");
    $nr = mysql_num_rows($rs);
    if ($nr != 0){
      for($x = 0; $x < $nr; $x++){
        $row = mysql_fetch_assoc($rs);
        echo "<table><tr>";
        echo "<td>" . $row['id'] . "</td>";
        echo "<td>" . $row['nome'] . "</td>";
        echo "<td>" . $row['telefono'] . "</td>";
        echo "</tr></table>";
      }
    }else{
      echo "Nessun record trovato!";
    }
    
    if ($all_pages > 1){
      if ($pag > 1){
        echo "<a href=\"" . $_SERVER['PHP_SELF'] . "?pag=" . ($pag - 1) . "\">";
        echo "Pagina Indietro</a>";
      } 
      if ($all_pages > $pag){
        echo "<a href=\"" . $_SERVER['PHP_SELF'] . "?pag=" . ($pag + 1) . "\">";
        echo "Pagina Avanti</a>";
      } 
    }
    
    mysql_close($conn);
    
    ?>
    Le modifiche che ho fatto sono solo nel SELECT.
    Il codice funziona solo in parte, visualizza solo i primi risultati della ricerca nella prima pagina.

    Es.. Se i risultati sono 10 records, divisi 5 per pagina, visualizza solo i primi 5 nella prima pagina, clicco su avanti per vedere la seconda pagina con gli altri risultati e non li visualizza.

    Purtroppo non capisco il perchè.
    Le ricerche che ho fatto non mi hanno aiutato molto, perchè non ho capito il problema.

    Grazie.

  2. #2
    Utente di HTML.it L'avatar di homerbit
    Registrato dal
    Dec 2005
    residenza
    Roma
    Messaggi
    1,380
    funziona perfettamente, l'ho testata e mi muovo avanti\indietro di 5 senza problemi
    controlla meglio le tue select
    If you think your users are idiots, only idiots will use it. DropBox

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2011
    Messaggi
    10
    Ciao homerbit,

    grazie per aver risposto e verificato il codice.

    Purtroppo a me non funziona.

    Posto il codice modificato.
    codice:
    <?php
    
    echo '<form action="ricerca.php" method="post">
    
    Cerca: <input type="text" size=50 name="parola" /> 
    
    
    <input type="submit" name="submit" value="Cerca" />
    
    </form>';
    	
    	if (isset($_POST['submit'])) {
    		require_once('../dati/db.php');
    		
    		$parola=$_POST['parola'];
    				
    		echo'
    
    
    
    
    ';
    		
    		$x_pag = 5;
    		$pag = $_GET['pag'];
    		
    		if (!$pag) $pag = 1; 
    				
    		$all_rows = mysql_num_rows(mysql_query("SELECT id FROM news"));
    		$all_pages = ceil($all_rows / $x_pag);
    		$first = ($pag - 1) * $x_pag;
    		
    		$rs = mysql_query("SELECT * FROM news WHERE titolo LIKE '%$parola%' LIMIT $first, $x_pag");
    		$nr = mysql_num_rows($rs);
    		if ($nr != 0){
    		  for($x = 0; $x < $nr; $x++){
    		    $row = mysql_fetch_assoc($rs);
    		    echo "<table><tr>";
    		    echo "<td>" . $row['id'] . "</td>";
    		    echo "<td>" . $row['titolo'] . "</td>";
    		    echo "</tr></table>";
    		  }
    		}else{
    		  echo "Nessun record trovato!";
    		}
    		
    		if ($all_pages > 1){
    		  if ($pag > 1){
    		    echo "<a href=\"" . $_SERVER['PHP_SELF'] . "?pag=" . ($pag - 1) . "\">";
    		    echo "Pagina Indietro</a> ";
    		  } 
    		  if ($all_pages > $pag){
    		    echo "<a href=\"" . $_SERVER['PHP_SELF'] . "?pag=" . ($pag + 1) . "\">";
    		    echo "Pagina Avanti</a>";
    		  } 
    		}
    		
    		mysql_close();
    }	 
    
    ?>
    Questo codice è inserito in una pagina html per effettuare delle ricerche.
    Funziona solo la prima volta, restituendo solo i primi 5 risultati. Clicco su avanti e restituisce una pagina vuota, senza risultati.

    Non capisco l' errore.

    P.S. Sarà un problema di hosting?

  4. #4
    Utente di HTML.it
    Registrato dal
    Jul 2010
    Messaggi
    719
    Usi due query diverse e non va bene, devi mettere il where in entrambe.


  5. #5
    Utente di HTML.it
    Registrato dal
    Nov 2011
    Messaggi
    10
    Ciao simo22,

    grazie per il consiglio, ma il problema non è questo.

    Ho risolto e funziona perfettamente. La causa dell' errato funzionamento era questa linea di codice.
    codice:
    if (isset($_POST['submit'])) {
    Infatti funzionava solo quando premevo submit.

    Ora ho un' altro problema, ho modicato questa linea di codice.
    Da così
    codice:
    echo "<td>" . $row['titolo'] . "</td>";
    a così
    codice:
    echo "
    
    <a href=\"page.php?id=" . $row['titolo'] . "\">" . $row['titolo'] . "</a></p>";
    peò non funziona come vorrei.

    Il titolo cercato e restituito dalla ricerca diventa un link, però poi una volta cliccato restituisce una pagina di errore, senza nessun contenuto estratto dal database.
    Non sò se è corretto così come ho fatto. Spero mi possiate aiutare.

    Grazie.

  6. #6
    codice:
    echo "
    
    <a href=\"page.php?id=" . $row['titolo'] . "\">" . $row['titolo'] . "</a></p>";

    secondo me così non funziona.... troppi " danno problemi...

    prova a mettere così:

    echo "

    <a href=\page.php?id=" . $row['titolo'] . "\>" . $row['titolo'] . "</a></p>";
    Pubblicizza, Promuovi e Valuta il tuo sito su WebPortale
    Strategie e Consigli sul Gioco Manageriale di F1 GPRO GPRO STRATEGY
    Sito sulla Borsa con Gioco FantaBorsa Gioco-Borsa

  7. #7
    Utente di HTML.it
    Registrato dal
    Jul 2010
    Messaggi
    719
    $all_rows = mysql_num_rows(mysql_query("SELECT id FROM news"));

    e

    $rs = mysql_query("SELECT * FROM news WHERE titolo LIKE '%$parola%' LIMIT $first, $x_pag");

    Come puoi notare non entrambe le query hanno il like, quindi vuoi o non vuoi questo ti darà problemi.



    Ps: e questo page.php che sarebbe? Puoi postare il codice?

  8. #8
    Utente di HTML.it
    Registrato dal
    Nov 2011
    Messaggi
    10
    Grazie ragazzi per le risposte.

    @xenox75

    Il problema non sono le virgolette. Ho provato anche in quel modo e non và.


    @simo22

    Il problema delle pagine era, come ho gia postato, la linea di codice:
    codice:
    if (isset($_POST['submit'])) {
    adesso la paginazione funziona.

    Ho aggiundo WHERE alla select di $all_rows ed adesso la ricerca funziona bene. Prima dava qualche errore.

    Adesso il problema è un'altro, come ho già illustrato nell'ultimo post.

    Spero mi possiate aiutare.

    Grazie.

  9. #9
    Utente di HTML.it
    Registrato dal
    Nov 2011
    Messaggi
    10
    @simo22

    In page.php ho inserito questo codice.
    Codice PHP:
    <?php 
                    
        
    echo'


    '
    ;
        echo 
    $_GET['id']; 
                   
    ?>
    Perchè quando cliccavo sul link restituito da
    Codice PHP:
    echo "

    <a href=\"page.php?id=" 
    $row['titolo'] . "\">" $row['titolo'] . "</a></p>"
    il server mi diceva che non trovava la pagina.
    Adesso la trova,

    Ho modificato anche il codice di paginazione in questo modo
    Codice PHP:
    $rs mysql_query("SELECT * FROM news WHERE titolo LIKE '%$parola%' LIMIT $first$x_pag");
            
    $nr mysql_num_rows($rs);
            if (
    $nr != 0){
              for(
    $x 0$x $nr$x++){
                
    $row mysql_fetch_assoc($rs);
                
    $titolo "

    [b]" 
    $row['titolo'] . "[/b]</p>

                            
    "

    Notizia  "[b]" $row['notizia'] . "[/b]</p>" 
                            
    "

    Nome "[b]" $row['nome'] . "[/b]</p>";
                
    $pagina  "page.php?id=$titolo";
                echo 
    "

    <a href=\""
    $pagina "\">" $row['titolo'] . "</a></p>";
               }
            }else{
              echo 
    "Nessun record trovato!";
            } 
    e funziona. Solo che ritengo non sia il modo corretto. Ma è l'unico con il quale ci sono riuscito.

    Aiutatemi a capire ed a risolvere il problema.


    Grazie.

  10. #10
    Utente di HTML.it
    Registrato dal
    Nov 2011
    Messaggi
    10
    @simo22

    Dici che il LIKE da problemi anche con
    Codice PHP:
    echo "

    <a href=\"page.php?id=" 
    $row['titolo'] . "\">" $row['titolo'] . "</a></p>"
    per l' estrazione dei dati dal db in page?

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.