Visualizzazione dei risultati da 1 a 8 su 8

Discussione: Correzione errore

  1. #1

    Correzione errore

    Ciao a tutti!
    io ho una pagina di news con vari articoli presi da questo codice php.
    Codice PHP:
    <?
    // Creo una variabile dove imposto il numero di record 
    // da mostrare in ogni pagina
    $x_pag 5;

    // Recupero il numero di pagina corrente.
    // Generalmente si utilizza una querystring
    $pag $_GET['pag'];

    // Controllo se $pag è valorizzato...
    // ...in caso contrario gli assegno valore 1
    if (!$pag$pag 1

    // Mi connetto al database
    $conn mysql_connect("NOME","NOME","Pass");
    mysql_select_db("NOME"$conn);

    // Uso mysql_num_rows per contare le righe presenti
    // all'interno della tabella news
    $all_rows mysql_num_rows(mysql_query("SELECT id FROM news"));

    // Tramite una semplice operazione matematica definisco
    // il numero totale di pagine
    $all_pages ceil($all_rows $x_pag);

    // Calcolo da quale record iniziare
    $first = ($pag 1) * $x_pag;

    // Recupero i record per la pagina corrente...
    // utilizzando LIMIT per partire da $first e contare fino a $x_pag
    $rs mysql_query("SELECT * FROM news ORDER BY id DESC 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 
    "<tr><td><font color=black>[b]" $row['titolo'] . "[/b]</font></td></tr>

    "
    ;
        echo 
    "<tr><td><font size=1><font color=black>[b]" $row['data'] . "[/b]

    </font></font></td></tr>"
    ;
        echo 
    "<tr><td><div align=justify>" $row['contenuto'] . "</div></td></tr>";
        echo 
    "<font color=blue>-------------------------------------------------------------------------------------------</font>";
        echo 
    "</tr></table>";
      }
    }else{
      echo 
    "Nessun record trovato!";
    }

    // Se le pagine totali sono più di 1...
    // stampo i link per andare avanti e indietro tra le diverse pagine!
    if ($all_pages 1){
      if (
    $pag 1){
        echo 
    "<a href=\"" $_SERVER['PHP_SELF'] . "?pag=" $pag "\">";
        echo 
    "Pagina Indietro</a>";
      } 
      if (
    $all_pages $pag){
        echo 
    "<a href=\"" $_SERVER['PHP_SELF'] . "?pag=" $pag "\">";
        echo 
    "Pagina Avanti</a>";
      } 
    }



    // Chiudo la connessione ad DB
    mysql_close($conn);
    ?>
    Il problema sta che alla fine nello stamparmi le pagine (es: pag 1 Pagina avanti) viene stampato questo
    codice:
    1">Pagina Avanti
    dove sbaglio?

  2. #2
    Utente di HTML.it
    Registrato dal
    Jan 2009
    Messaggi
    777
    scusami non riesco a vedere la parte di codice che ti stampa pag 1
    comunque il ragionamento postato nel codice è molto chiaro e se non ho avuto sviste sembra scritto correttamente....forse nella parte che ti stampa la pagina c'è qualcosa di sbagliato sintatticamente..

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2009
    Messaggi
    777
    ho raramente visto raccogliere i dati di query con for...
    perchè non usi meglio un while invece del for?
    in questo modo
    Codice PHP:
    while($row mysql_fetch_assoc($rs)){
    echo 
    "<table> ecce ecc ecc";


  4. #4
    grazie!
    quindi se sostituisco

    codice:
      for($x = 0; $x < $nr; $x++){
        $row = mysql_fetch_assoc($rs);
    con
    codice:
    while($row = mysql_fetch_assoc($rs)){
    dovrebbe funzionare?

  5. #5
    Utente di HTML.it
    Registrato dal
    Jan 2009
    Messaggi
    777
    il secondo messaggio che ti ho mandato era un'altra osservazione....

    per il tuo problema per come ho capito
    dovresti stampare
    pag 1 pagina avanti

    ok il codice per stampare pagina avanti c'è
    non riesco a vedere il codice per stampare pag 1

  6. #6
    Utente di HTML.it
    Registrato dal
    Jan 2009
    Messaggi
    777
    forse ho capito


    il tuo codice è questo
    Codice PHP:
    if ($all_pages $pag){
        echo 
    "<a href=\"" $_SERVER['PHP_SELF'] . "?pag=" $pag "\">";
        echo 
    "Pagina Avanti</a>"
    lui ti stampa 1>Pagina Avanti...
    guarda caso la parte che sta dopo il +
    consiglio:
    fai l'operazione a parte invece di inserirla nel link
    in questo modo
    Codice PHP:
    if ($all_pages 1){
    $prec$pag 1;
    $succ$pag 1;
      if (
    $pag 1){
        echo 
    "<a href=\"" $_SERVER['PHP_SELF'] . "?pag=" $prec "\">";
        echo 
    "Pagina Indietro</a>";
      } 
      if (
    $all_pages $pag){
        echo 
    "<a href=\"" $_SERVER['PHP_SELF'] . "?pag=" $succ "\">";
        echo 
    "Pagina Avanti</a>";
      } 


  7. #7
    Utente di HTML.it L'avatar di Secta
    Registrato dal
    May 2002
    Messaggi
    365
    Metti $pag +1 tra parentesi.

    Comunque se posso permettermi... perché usi tutti quei echo? Prova a combinarli e ad usarne uno soltanto.
    "Dai diamanti non nasce niente, dal letame nascon fiori."
    Fabrizio De Andrè

  8. #8
    @amphioxus
    Grazie mille per il codice modificato! adesso funziona!
    Ho messo $pag - 1 tra parentesi come ha detto @secta e funziona...
    Se volevi vedere il risultato ti rimando direttamente alla pagina www.basketorsi.com/news.php

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.