Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it L'avatar di cip999
    Registrato dal
    Aug 2014
    Messaggi
    12

    Pagina troncata dopo ciclo while

    Ciao a tutti, è da poco che mi sono avvicinato alla programmazione lato server (quindi PHP e MySQL) e, nello sviluppare un sito con contenuti dinamici, ho riscontrato un problema che non riesco a risolvere.
    Semplicemente, dovrei selezionare da un database gli ultimi tre post inseriti, e poi stamparne un'anteprima nella home page.

    Il problema si crea quando, dopo aver selezionato dalla tabella 'lezioni' i record che mi servono (e dopo aver eseguito un controllo condizionale per verificare se c'è almeno un post), mi accingo a stampare le anteprime attraverso un while: praticamente tutto il contenuto della pagina viene troncato al punto in cui si esce dal ciclo.
    L'indirizzo della pagina in questione è http://mathzero.altervista.org/

    Ecco qui il codice (o almeno la parte rilevante):
    codice HTML:
    <?php // Inclusione delle funzioni MySQL e connessione al db
      include("php_include/mysql_functions.inc.php");
      $MysqlObj = new MysqlClass("localhost", "mathzero", "", "my_mathzero");
      $MysqlObj->connetti();
    ?>
    
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//IT">
    <html>
    
    <!-- Roba varia -->
    
            <div class="section">
              <h1><a href="didattica.php" title="Didattica">Didattica</a></h1>
              <?php 
                // $MysqlObj->query() equivale a mysql_query()
                $result = $MysqlObj->query("SELECT * FROM lezioni ORDER BY data_pubb_lezione DESC LIMIT 3");
                if(mysql_num_rows($result) > 0) {
                  // $MysqlObj->estrai() equivale a mysql_fetch_object() 
                 while($result_obj = $MysqlObj->estrai($result)) {
                    $titolo = stripslashes($result_obj->titolo_lezione);
                    echo "<div class=\"post_preview\">\n";
                    echo "<h2>" . $titolo . "</h2>\n";
                    echo "</div>\n";
                  }
                }
                else {
                  echo "<p>Peccato, non ci sono ancora lezioni nella sezione <a href=\"didattica.php\" title=\"Didattica\">Didattica</a>.</p>";
                }
              ?>
    
    <!-- Da qui in poi non viene stampato nulla -->
    
            </div> <!-- close section "Didattica" -->
    
    <!-- Altra roba -->
    
    </html>
    Grazie in anticipo per l'aiuto.

    Ah, dimenticavo, nel while ho inserito solo l'echo che stampa il titolo, il resto non credo sia importante.
    Ultima modifica di cip999; 31-08-2014 a 19:05
    Due cose sono infinite: l'universo e la stupidità umana. Ma non sono sicuro della prima...
    Albert Einstein

  2. #2
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    Il tuo script non è impaginato bene.

    Comunque. Visto che usi funzioni non standard, Non è che hai un errore ma non se ne vede il testo ?
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  3. #3
    Utente di HTML.it L'avatar di cip999
    Registrato dal
    Aug 2014
    Messaggi
    12
    Quote Originariamente inviata da badaze Visualizza il messaggio
    Il tuo script non è impaginato bene.
    Già, l'avevo notato, ho fatto un copia-incolla e l'editor me l'ha sistemato tutto sulla stessa riga del commento... Ora dovrebbe essere a posto.

    Quote Originariamente inviata da badaze Visualizza il messaggio
    Comunque. Visto che usi funzioni non standard, Non è che hai un errore ma non se ne vede il testo ?
    Dunque, ho sostituito le due funzioni "di rimpiazzo" ($MysqlObj->query() e $MysqlObj->estrai()) con le rispettive funzioni standard mysql_query() e mysql_fetch_object(), e sorprendentemente il codice viene stampato per intero.
    Tramite ulteriori controlli mi sono poi accorto che l'errore è provocato, nello specifico, da estrai(), mentre l'altro metodo non causa problemi.
    Da qui sono arrivato al problema, che si trova nel file mysql_functions.inc.php e consiste in un or die(mysql_error()) di troppo che, quando la mysql_fetch_object restituiva FALSE, troncava il contenuto della pagina.

    Mille grazie per l'aiuto!
    Due cose sono infinite: l'universo e la stupidità umana. Ma non sono sicuro della prima...
    Albert Einstein

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.