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

    [while] Problema risultato di una query

    Ciao a tutti,

    sto cercando di imparare a programmare in php, per ora le poche cose che ho letto credo di averle assimilate.

    Cercando di recuperare il contenuto di una tabella ho scritto questo codice:

    Codice PHP:
    <?php 
    //Istruzione per selezionare i dati, la variabile $risultato deve cambiare ad ogni
    //interrogazione di tabelle diverse

        
    $risultato mysql_query('SELECT *
                                          FROM nomi
                                          ORDER BY nome ASC'
                                           
    );
    //controllo per capire se ci sono errori nel recupero dei dati

        
    if($risultato == FALSE) {
            echo 
    "Errore nel recupero dei dati";} 

    //richiamare e stampare a video i dati.
    //con mysql_fetch_array($risultato) associo alla variabile $riga il risultato della 
    //query fatta con la variabile $risultato

        
    $riga mysql_fetch_array($risultato);
        while(
    mysql_fetch_array($risultato)) {
        echo 
    $riga['nome']. ", ".$riga['nato_il']. ", ".$riga['eta']."</ br> ";
        }

    ?>
    con il ciclo while cerco di stampare a video il risultato della query, ebbene mi duplica solo il primo record e non mi restituisce i 3 record corretti.

    Mi trovo infatti questo risultato:

    Andrea, 1998-04-10, 15 Andrea, 1998-04-10, 15

    ma non riesco a capire il perché, il codice l'ho praticamente ricopiato dal manuale per paura di aver scritto qualche caxxata.

    Ma nisba.

    Sapete aiutarmi?

  2. #2
    Utente di HTML.it
    Registrato dal
    Feb 2010
    Messaggi
    110
    scusate se mi accodo, ma ho un problema simile

    il codice è il seguente:

    codice:
     $risultato3 =@mysql_query("SELECT testomex FROM `messaggi`");
              
             if(!$risultato3)
               {
                 echo 'Problema con la selezione dei messaggi riprova';
               }
    
               else
               {
                while($row = mysql_fetch_array($risultato3));
                 {
                  echo '
    
    ';
                  echo '<table width="500" height="200" border="1">';
                  echo '  <tr>';
                  echo '<td>' . $row['testomex'] . '</td>';
                  echo '  </tr>';
                  echo '</table>';
                  echo '</p>';
                }
                }
    vorrei stampare il testo dei messaggi in una tabella...ma mi stampa una tabella vuota sbaglio qualcosa??

  3. #3
    io con quel codice vorrei solo ottenere questo risultato:

    Andrea, 1998-04-10, 15 Anna, 1998-06-20, 15, Enzo, 1998-01-18, 15

    che poi sono i 3 record della tabella nomi.

    perché mi compare solo il primo record per 2 volte?

  4. #4
    Utente di HTML.it
    Registrato dal
    Feb 2010
    Messaggi
    110
    si quello l'avevo preso da phpmyadmin, perchè ad un certo punto pensavo di aver fatto qualche errore...ad ogni modo inserendo num e la condizione da te suggerita, il risultato non cambia, questo vuol dire che non ottengo risultati dalla query...ma mi sembra strano

  5. #5
    Utente di HTML.it
    Registrato dal
    Feb 2010
    Messaggi
    110
    è un pò lungo...ma per lo più sono controlli

    codice:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
            "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    
    <title> The Box</title>
    
    </head>
    <body>
    
    <?php 
     
      if(!isset($_POST['nome'])): ?>
     
      //effettuo l'accesso
     
       <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
            <label> Nome utente
            
     <input type="text" name="nome" size="40" maxlenght="200"/>
            
     et&agrave: 
            
    <input type="number" name="eta" size="3" maxlenght="3" />
            
     password: 
            
    <input type="password" name="pass" maxlenght="16" />
            <input type="submit" value="invia" />
            </label>
          </form>
    	
     <?php else: ?>
     
    //se è un utente registrato
    
         <h1> Benvenuto <?php echo $_POST['nome']; ?> </h1>
         
    <h2>Leggi tutti i messaggi del nostro sito </h2>
          
          <?php
    
    
        $dbcn = @mysql_connect( 'localhost', 'boxmex', 'password');
    	  if(!$dbcn)
    	  { echo 'connessione non riuscita';
                exit();
    	  }
    	
    
     
     echo '
    
    ';
    	   if(!@mysql_select_db('my_box'))
    	   {echo 'errore durante la connessione al database';
    	    exit();
    	    }
      
       $nome1= $_POST['nome'];
       $passw= $_POST['pass'];
       
    //controllo se l'utente è registrato
    
      $risultato1= @mysql_query("SELECT nome FROM utenti WHERE password = '$passw'");
      $risultato2=mysql_fetch_array($risultato1);
           if($risultato2['nome'] != $nome1)
            {
             echo 'password errata prova di nuovo a fare il login';
             echo $risultato2;
            }
           else
           { 
              
             $risultato3 =@mysql_query("SELECT testomex FROM messaggi");
               if(!$risultato3)
               {
                 echo 'Problema con la selezione dei messaggi riprova';
               }
               else
               {
               $num = mysql_num_rows($risultato3);
               
               if(num > 0)
               {
                echo 'ok'; // controllo se entro nel ciclo
    
               while($row = mysql_fetch_array($risultato3));
                {
                  echo '
    
    ';
                  echo '<table width="500" height="200" border="1">';
                  echo '  <tr>';
                  echo '<td>' . $row['testomex'] . '<td>';
                  echo '  </tr>';
                  echo '</table>';
                  echo '</p>';
                  }
                }
                }
            }   
            
          
      ?>
       
        <?php endif; ?>  
    
    </div>
    
    </body>
    </html>

  6. #6
    Utente di HTML.it
    Registrato dal
    Feb 2010
    Messaggi
    110
    Ok con queste modifiche funziona :-)
    grazie per l'aiuto

  7. #7
    Originariamente inviato da darkhero
    è ovvio dal codice che hai scritto che ti compare il record due volte, hai provato il mio codice? quello funziona , studiati quello xD
    ti chiedo scusa e ti ringrazio. non avevo notato che il quote era diverso sei stato gentilissimo, in pratica dovevo usare la funzione mysql_num_rows e non mysql_fetch_array.

    non capisco però il motivo per cui nel manuale usano quella per stampare i risultati della query.

    grazie mille!

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.