Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    [PHP] Problema con paging

    Ciao a tutti,
    ho seguito un tutorial per creare una impaginazione dati del tipo di Google.

    Ha un file config.php di cui vi allego il codice:

    <?php
    $servername='localhost'; // Your MySql Server Name or IP address here
    $dbusername='gabry'; // Login user id here
    $dbpassword='gabry'; // Login password here
    $dbname='sql_tutorial'; // Your database name here

    connecttodb($servername,$dbname,$dbusername,$dbpas sword);
    function connecttodb($servername,$dbname,$dbuser,$dbpasswor d)
    {
    global $link;
    $link=mysql_connect ("$servername","$dbuser","$dbpassword");
    if(!$link){die("Could not connect to MySQL");}
    mysql_select_db("$dbname",$link) or die ("could not open db".mysql_error());
    }


    ?>

    ---------------------------------------------------------------------

    Sono presenti nella tabella student_adv ben 56 record. Voglio visualizzare 10 record per pagina.
    Le pagine sono 6: quindi 6x10=60(di cui 56 sono i record)

    Vi allego il codice della pagina php_paging.php:



    <?
    require "config.php"; // All database details will be included here

    $page_name="php_paging.php"; // If you use this code with a different page ( or file ) name then change this

    if(!isset($start)) {
    $start = 0;
    }

    $eu = ($start -0);
    $limit = 10;
    $this = $eu + $limit;
    $back = $eu - $limit;
    $next = $eu + $limit;



    $query2=" SELECT * FROM student_adv ";
    $result2=mysql_query($query2);
    echo mysql_error();
    $nume=mysql_num_rows($result2);



    $bgcolor="#f1f1f1";
    echo "<TABLE width=50% align=center cellpadding=0 cellspacing=0> <tr>";
    echo "<td bgcolor='dfdfdf' ><font face='arial,verdana,helvetica' color='#000000' size='4'>ID</font></td>";

    echo "<td bgcolor='dfdfdf' ><font face='arial,verdana,helvetica' color='#000000' size='4'>Name</font></td>";
    echo "<td bgcolor='dfdfdf' ><font face='arial,verdana,helvetica' color='#000000' size='4'>Class</font></td>";
    echo "<td bgcolor='dfdfdf'><font face='arial,verdana,helvetica' color='#000000' size='4'>Mark</font></td></tr>";


    $query=" SELECT * FROM student_adv limit $eu, $limit ";
    $result=mysql_query($query);
    echo mysql_error();


    while($noticia = mysql_fetch_array($result))
    {
    if($bgcolor=='#f1f1f1'){$bgcolor='#ffffff';}
    else{$bgcolor='#f1f1f1';}

    echo "<tr>";
    echo "<td align=left bgcolor=$bgcolor id='title'><font face='Verdana' size='2'>$noticia[id]</font></td>";
    echo "<td align=left bgcolor=$bgcolor id='title'><font face='Verdana' size='2'>$noticia[name]</font></td>";
    echo "<td align=left bgcolor=$bgcolor id='title'><font face='Verdana' size='2'>$noticia[class]</font></td>";
    echo "<td align=left bgcolor=$bgcolor id='title'><font face='Verdana' size='2'>$noticia[mark]</font></td>";
    echo "</tr>";
    }
    echo "</table>";



    echo "<table align = 'center' width='50%'><tr><td align='left' width='20%'>";
    if($back>=0){
    print "<font face='Verdana' size='2'>PREV</font>";
    }



    echo "</td><td align=center width='30%'>";
    $l=1;
    for($i=0; $i < $nume;$i=$i+$limit){
    if($i <> $eu){

    echo " <font face='Verdana' size='2'>$l</font> ";
    }
    else { echo "<font face='Verdana' size='4' color=red>$l</font>";}
    $l=$l+1;
    }


    echo "</td><td align='right' width='30%'>";
    if($this < $nume){
    print "<font face='Verdana' size='2'>NEXT</font>";
    }
    echo "</td></tr></table>";


    ?>

    -----------------------------------------------------------------

    Il problema è che i links non visualizzano gli altri record. Come faccio? Dovrei far corrispondere il record n.11 al primo record della seconda pagina cosa che dovrebbe fare la clausola limit.

    E pensare che doveva essere la base per costruire il mio primo sistema di paging.

    Ciao e grazie

  2. #2
    non ho letto tutto il codice per questioni di tempo ma a occhio sbagli le query

    con limit devi tenere fisso il secondo numero e modificare solo il primo

    LIMIT 0,10 per i primi 10 record
    LIMIT 10,10 per i successivi
    LIMIT 20,10 ....
    LIMIT 30,10 ....

    e cosi via fino alla fine

    ciao

  3. #3
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    per sicurezza, quando qualcosa con le query va "storto" o inaspettatamente, fai l'echo della query che mandi in esecuzione... (o meglio, che credi di aver mandato in esecuzione.)
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  4. #4
    ma alla seconda pagina corrisponde il valore 10, alla terza il valore 20 , alla quarta il valore 30, alla quinta il valore 40 e alla sesta il valore 50. Questo non fa visualizzare tutti e 56 i record ma solo 50.
    Allora bisognerebbe fare in modo che alla prima pagina corrisponda il valore 10, alla seconda il valore 20 e così via.
    E poi come posso fare ad aggiornare $eu che è il valore che dovrebbe cambiare?

  5. #5
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    non fai mai il GET di start!


    Prova così:

    if (!isset($_GET['start'])) {
    $start = 0;
    }
    else {
    $start = $_GET['start'];
    }
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  6. #6
    ho provato a mettere $start=$_GET[$i]; ma non funziona.
    Devo passare il valore di $i.
    Mannaggia

  7. #7
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    Chi è $i?

    il signor $_GET prende gli argomenti passati in GET, ossia nella querystring

    esempio:
    codice:
    http://www.miosito.com/pagina.php?utente=Andrea1979&sez=php&post=1000
    La parte in grassetto è la querystring. Argomenti validi di $_GET saranno utente, sez, post

    ossia, potrai avere per esempio

    Codice PHP:
    $user $_GET['utente']; // ossia $user = "Andrea1979"
    $sez $_GET['sez'];
    $post $_GET['post'
    Invece qualcosa come
    Codice PHP:
    $prova $_GET['cicciopasticcio'
    Non darà alcun errore, ma semplicemente porrà $prova = "" visto che non esiste alcun argomento nella querystring chiamato "cicciopasticcio"

    C'è da capire che cosa sia $i... nel tuo caso, passi in querystring start=qualcosa, onde per cui andrai a recuperare $_GET['start']
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  8. #8
    è vero!....già
    Mi era sfuggito completamente che nella $_GET va messa la variabile e non la variabile $i che rappresenta le posizioni dei record. (es 10 è il record n.11,etc etc).

    $_GET['start'] e non $_GET[$i]

    Porca miseria!!! Che vergogna!!

    Dimenticavo: grazie

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 © 2024 vBulletin Solutions, Inc. All rights reserved.