• User

    Paginazione dati

    Ho un problema nella paginazione dei dati...ho trovato questo interessante articolo
    http://php.html.it/articoli/leggi/857/paginazione-di-dati/3/
    mi sembrava tutto chiaro ma mi da questo errore

    Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource in /home/mhd-01/www..........php on line 30
    
    

    la linea 30 corrisponde a

    
    $count = mysql_query("SELECT COUNT(id) FROM nome_tabella");
    

    nella quale naturalmente ho inserito i miei dati
    Qualcuno mi può aiutare?


  • User

    Scusate ho sbagliato a scrivere la linea di codice 30...

    $res_count = mysql_fetch_array($count);
    

    questa è quella giusta


  • User

    Ho provato a modificarla con ```
    $res_count = mysql_fetch_row($count);

    ma niente

  • User

    Ma hai controllato se la query viene effettuata correttamente?
    Controlla se c'è un errore usando mysql_error();.

    Nené


  • User

    Sto provando e riprovando, ma niente....ora ho optato per quest'altra soluzione. Scrivo la pagina intera ```
    <?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());
    $recordxpag = 5;

    $query=mysql_query("SELECT AnnoRipresa, Regione FROM fotoaereeverticali WHERE AnnoRipresa LIKE '%$_POST[AnnoRipresa]%'
    AND Regione LIKE '%$_POST[Regione]%'");

    $risultato=mysql_query($query,$connessione) or die ("Errore nella query:" . mysql_error());
    $righe = mysql_num_rows($risultato);
    $numpag = ceil($righe/$recordxpag);
    include 'paginazione.inc.php';
    if ($righe<1)
    {
    echo "non ci sono dati";
    }
    else
    {
    $da = (($pag-1) * $recordxpag);
    $a = $da + $recordxpag;
    if ($a > $righe){$a=$righe;}
    for ($i = $da; $i < $a; $i++)
    {
    while($riga=mysql_fetch_array($risultato))
    {?>
    <tr>
    <td colspan="2">
    <?php
    print ("<img src=".$riga[Foto].">");?>
    </tr>
    <tr>
    <td height="22" width="20%"><h4><b>Anno Ripresa</b></td>
    <td height="22" width="20%"><h4><b>Regione</b></td>
    </tr>
    <tr><?php print("<tr>");
    print ("<td>$riga[AnnoRipresa]</td>");
    print ("<td>$riga[Regione]</td>");
    print("</tr>");?>
    ?>

    Questa è la pagina paginazione.inc.php
    

    <?php
    //numero di link da visualizzare nel menu.
    $num_link=5;
    $querystring = "";
    // Recupero il numero di pagina corrente.
    $pag = isset($_GET['pag'])? $_GET['pag'] : 1;

    //se ho meno link di quanti ne voglio visualizzare li visualizzo tutti
    if($numpag <= $num_links)
    {
    for ($pagina = 1; $pagina <= $numpag; $pagina++)
    {
    if ($pagina == $pag)
    echo "<a class="pag_selected" href"=?pag={$pagina}{$querystring}" title="Vai a pagina $pagina"> $pagina </a> ";
    else
    echo "<a class="pag_link" href="?pag={$pagina}{$querystring}" title="Vai a pagina $pagina"> $pagina </a> ";
    }
    }
    //se la pag corrente è tra le prime $num_links/2 --> stampo i primi $nun_links link
    else if($pag <= ceil($num_links/2))
    {
    for ($pagina=1; $pagina<=$num_links; $pagina++)
    {
    if ($pagina == $pag)
    echo "<a class="pag_selected" href"=?pag={$pagina}{$querystring}" title="Vai a pagina $pagina"> $pagina </a> ";
    else
    echo "<a class="pag_link" href="?pag={$pagina}{$querystring}" title="Vai a pagina $pagina"> $pagina </a> ";
    }
    echo "<a class="pag_link" href="?pag={$numpag}{$querystring}" title="Vai all'ultima pagina"> >> </a> ";
    }

    //se la pag corrente è tra le ultime $num_links/2 --> stampo gli ultimi $nun_links link
    else if($pag > ($numpag-ceil($num_links/2)))
    {
    echo "<a class="pag_link" href="?pag=1{$querystring}" title="Vai alla prima pagina"> << </a> ";
    for ($pagina=$numpag-$num_links+1; $pagina<=$numpag; $pagina++)
    {
    if ($pagina == $pag)
    echo "<a class="pag_selected" href="?pag={$pagina}{$querystring}" title="Vai a pagina $pagina"> $pagina </a> ";
    else
    echo "<a class="pag_link" href="?pag={$pagina}{$querystring}" title="Vai a pagina $pagina"> $pagina </a> ";
    }
    }

    //Altrimenti la pagina corrente è una dell centrali --> stampo i $nun_links/2 link prima ed $nun_links/2 link dopo
    else
    {
    echo "<a class="pag_link" href="?pag=1{$querystring}" title="Vai alla prima pagina"> << </a> ";
    for ($pagina = $pag-ceil($num_links/2-1); $pagina <= $pag+ceil($num_links/2-1); $pagina++)
    {
    if ($pagina == $pag)
    echo "<a class="pag_selected" href="?pag={$pagina}{$querystring}" title="Vai a pagina $pagina"> $pagina </a> ";
    else
    echo "<a class="pag_link" href="?pag={$pagina}{$querystring}" title="Vai a pagina $pagina"> $pagina </a> ";
    }
    echo "<a class="pag_link" href="?pag=$numpag" title="Vai all'ultima pagina"> >> </a> ";
    } ?>


  • User

    @alice1 said:

    Sto provando e riprovando, ma niente....ora ho optato per quest'altra soluzione. Scrivo la pagina intera ```
    <?php
    $db_host="";
    $db_user="";
    $db_password="";
    $db_database="";

    Qui suppongo tu inserisca i tuoi dati...

    Ma l'errore ora dove te lo da? Hai provato a fare echo di "SELECT AnnoRipresa, Regione FROM fotoaereeverticali WHERE AnnoRipresa LIKE '%$_POST[AnnoRipresa]%' AND Regione LIKE '%$_POST[Regione]%'" e provare la query direttamente da PhpMyAdmin? A volte così si risolvono tanti problemi 🙂


  • Super User

    ciao,

    prova a fare:
    $rs = mysql_query("SELECT COUNT(id) as numero FROM nome_tabella");
    $row = mysql_fetch_array($rs);
    echo $row['numero'];

    tu fai una query chiedendo di calcolare un dato ma a questo dato non dai un nome e quindi risulta difficile poterlo usare.
    🙂


  • User

    l'errore che mi da è:

    Parse error: syntax error, unexpected $end in /home/mhd-01/www.......php on line 137 
    

    La linea 137 corrisponde all'ultima linea di codice della prima pagina che ho postato....(ho abbreviato la query, che in realtà coinvolgeva allo stesso modo più campi, per non annoiarvi troppo)


  • User

    Ho provato ad inserire le linee di codice che mi hai suggerito e mi dice:

    Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/mhd-01/www.space2place.org/htdocs/fotografie_aeree_verticali.php on line 30
     Errore nella query:You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'Resource id #2' at line 1 
    

  • Super User

    scusa la domadna banale ma hai sostituito nome_tabella con il nome effettivo della tabella vero?

    perchè l'errore che ti da dice che non è stato possibile risolvere la query in quanto è formalmente sbagliata. visto che la query non è sbagliata ci deve essere un altro problema.


  • User

    Il mio stato attuale di 'impanicamento' potrebbe portarmi a compiere errori di qualsiasi genere...ma si, ho sostituito il nome della tabella.
    A questo punto il nome è giusto..esiste un campo Id...e allora perchè non mi funziona?


  • User

    @alice1 said:

    Il mio stato attuale di 'impanicamento' potrebbe portarmia compiere errori di qualsiasi genere...ma si, ho sostituito il nomedella tabella.
    A questo punto il nome è giusto..esiste un campo Id...e allora perchè non mi funziona?

    Scusami, ma io in questi casi faccio un echo della query e me lariproduco su phpmyadmin, a mio parere è la cosa migliore per togliere iprimi dubbi che la query non vada a buon fine, e porre l'attenzione sualtro.
    Prova anche tu 😉

    Nenélla


  • User

    Parse error: syntax error, unexpected $end in /home/mhd-01/www.......php on line 137

    Questo errore non salta fuori quando manca il ";" alla fine della riga precedente?


  • Moderatore

    di solito esce fuori quando manca qualche chiusura di parentesi 🙂


  • User

    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?


  • Moderatore

    $GET['inizio'] prova a scriverlo
    $_GET['inizio']

    :ciauz:


  • User

    Niente...è la stessa cosa


  • User Attivo

    domanda idiota, ma hai provato a stampare il contenuto di $_GET['inizio']?


  • User

    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


  • User Attivo

    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>';