Visualizzazione dei risultati da 1 a 9 su 9

Discussione: dov'è l'errore

  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2007
    Messaggi
    104

    dov'è l'errore

    Ciao a tutti,
    ho realizzato per un compito all'università un programma che doveva visualizzare tutte le opere presenti in un catalogo che erano state realizzate secondo una determinata tecnica artistica scelta dall'utente in fase di esecuzione.
    Invece di comportarsi come dovrebbe il codice permette di visualizzare solo degli elementi invece di visualizzarli tutti. Per esempio se ci sono tre opere realizzate con una determinata tecnica esso ne visualizza solo 2; se sono 4 ne visualizza tre e cosi via.
    Guardando il codice non riesco a trovare l'errore, qualcuno potrebbe darmi una mano?

    Codice PHP:
    <?php
                                


        
    // Seta i valori delle variabili con il contenuto dei campi
        
    $tecnica=$_REQUEST['tecnica'];
                                
                                    
        
    // Controllo che sia stato inserito qualcosa
        
    if ((trim($tecnica) == "" ) )
               echo 
    "Il campo tecnica deve essere riempito, <a href=vis_x_tecnica.php> Indietro </a>";
            
    // altrimaenti procedo
        
    else
        {

            
    // -------------------- Mi connetto a Mysql------------------------------------------                                            $host = 'localhost';
            
    $user 'root';
            
    $password '';
            
    $db_name 'catalogo';
                                        
            
    // Provo a connettermi, se non riesco scrivo messsaggio di errore
            
    $db mysql_connect($host,$user,$password) or die("Non riesco a connettermi");
                                        
            
    // Cerco il DB, se non lo trovo scrivo messaggio d'errore
            
    mysql_select_db($db_name$db) or die("Non riesco a trovare il database");


                                        
            
    // Trovo i dati richiesti
            
    $sql1="SELECT A.nome, A.cognome, O.titolo, O.anno_esecuzione, O.proprieta FROM opera O, artista           A WHERE O.tecnica = '$tecnica' AND O.artista = A.codice";
            
    // Se la select non va a buon fine stampo massaggio d'errore
             
    $res1=mysql_query($sql1$db) or die ("ERRORE: ".mysql_error());
            
    // Altrimanti chiamo la funzione per contare il numero di tuple restituite dalla select
             
    $num1=mysql_num_rows($res1);    
                                            
            if(
    $num1)
            { 
                
    $row1 mysql_fetch_array($res1);
                  echo 
    "<h3 align = center> Opere eseguita in tecnica $tecnica </h3> 
     
    "
    ;
                  while (
    $row1 mysql_fetch_array($res1))
                {    
                    echo 
    "Artista: $row1[0] $row1[1], titolo: $row1[2], anno d'esecuzione: $row1[3], propriet�: $row1[4]  
    "
    ;
                }
            }
            else
            {
            }    
                                            
        }
                                        
                                        


    ?>
    Nogero

  2. #2
    ti fumi il primo record prima del while.... poi visto che conti i record non ti basare sul false/true ma verifica che ci siano dei record. Siccome poi usi l'indice numerico per stampare il result set, usa mysql_fetch_row() per logica scelta.

    Codice PHP:

    ..... omissis

            
    if($num1 0)
            {
                  echo 
    "<h3 align = center> Opere eseguita in tecnica $tecnica </h3> 
     
    "
    ;
      
                  while (
    $row1 mysql_fetch_row($res1))
                {    
                    echo 
    "Artista: $row1[0] $row1[1], titolo: $row1[2], anno d'esecuzione: $row1[3], propriet�: $row1[4]  
    "
    ;
                }
            }
            else
            {
            } 

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2007
    Messaggi
    104
    Grazie mille piero.mac, mi sei stato di grande aiuto.

    Ma in pratica avrei potuto ascrivere anche:
    Codice PHP:
    if($num10)
            {
                  echo 
    "<h3 align = center> Opere eseguita in tecnica $tecnica </h3> 
     
    "
    ;
                  while (
    $row1 mysql_fetch_array($res1))
                {    
                    echo 
    "Artista: $row1[0] $row1[1], titolo: $row1[2], anno d'esecuzione: $row1[3], propriet�: $row1[4]  
    "
    ;
                }
            }
            else
            {
            } 
    ?
    L'errore grave consisteva nel mettere
    Codice PHP:
    $row1 mysql_fetch_array($res1
    prima del while giusto?
    Nogero

  4. #4
    assolutamente no.

    l'errore E' quello che ti segno in neretto:
    codice:
            if($num1)
            {
               $row1 = mysql_fetch_array($res1); 
                  echo "<h3 align = center> Opere eseguita in tecnica $tecnica </h3> 
     
    ";
                  while ($row1 = mysql_fetch_array($res1))
    questa riga ti estrae il primo record del result set ottenuto. che pero' tu non provvedi a stampare. Successivamente quando inizi il ciclo while il puntatore del result set si sara' gia' spostato al secondo record. In pratica ti fumavi sempre il primo record estratto.


    @ edit... ok ho frainteso io ora. si, e' corretto quello che hai detto.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  5. #5
    Utente di HTML.it
    Registrato dal
    Mar 2007
    Messaggi
    104
    Appunto, quindi se io non metto quella riga di codice risolvo l'errore?
    Forse mi sono spiegato male ma intendevo dire:
    Se io elimino quella riga di codice non estraggo il primo record del result set ottenuto e quindi quando vado ad usare il ciclo while avendole tutte posso partire dal primo record giusto?
    Nogero

  6. #6
    Originariamente inviato da nogero
    Appunto, quindi se io non metto quella riga di codice risolvo l'errore?
    Forse mi sono spiegato male ma intendevo dire:
    Se io elimino quella riga di codice non estraggo il primo record del result set ottenuto e quindi quando vado ad usare il ciclo while avendole tutte posso partire dal primo record giusto?
    corretto.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  7. #7
    Utente di HTML.it
    Registrato dal
    Mar 2007
    Messaggi
    104
    Ok, allora grazie mille ancora per l'aiuto!
    Nogero

  8. #8
    Originariamente inviato da nogero
    Ok, allora grazie mille ancora per l'aiuto!
    La prossima volta pero' stai attento al titolo del thread.... se passava un moderatore ti chiudeva il thread per "titolo inconsistente".

    Vedi il regolamento in rilievo.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  9. #9
    Originariamente inviato da piero.mac
    La prossima volta pero' stai attento al titolo del thread.... se passava un moderatore ti chiudeva il thread per "titolo inconsistente".

    Vedi il regolamento in rilievo.
    Addio Aldo, amico mio... [03/12/70 - 16/08/03]

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.