Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2005
    Messaggi
    654

    Db estrae un solo record anzichè molteplici

    La select dovrebbe estrarre molteplici record (nel db ce ne sono una ventina alla data che ho immesso come prova). Invece di mostrarli tutti, mi visiona solo il primo che trova. L'errore dovrebbe essere nella select, ma a me sembra essere tutto a posto

    Codice PHP:
    $q "SELECT * FROM Valutazioni WHERE Valutazione_classe=$classe AND Valutazione_sezione='$sezione' AND Valutazione_fascia='$fascia' AND Valutazione_data_voto='$data' AND Registro_docente='{$_SESSION['login']}' ORDER BY Valutazione_alunno_cognome, Valutazione_alunno_nome";

                                
    $query mysql_query($q) or die(mysql_error());
                            
    $num mysql_num_rows($query);

                            
    $riga=2;
                                                                                 
    $contatore=1;
                            while(
    $row=mysql_fetch_array($query)){
                                
    $cognome=$row["Valutazione_alunno_cognome"];
                                
    $nome=$row["Valutazione_alunno_nome"];
                                
    $voto=$row["Valutazione_voto"];
                                
    $tipo=$row["Valutazione_tipologia"];
                                
    $materia=$row["Valutazione_materia_descrizione_estesa"];
                                
    $id=$row["ID"];

    //serve solo per colorare diversamente le righe
                                
    if($riga%2==0){
                                                              
    $tipor="tabDispari";
                                                            }else{
                                                              
    $tipor="tabPari";
                                                            }

                                    echo 
    "<tr>
                                        <td class='
    $tipor'>$cognome</td>
                                        <td class='
    $tipor'>$nome</td>
                                        <input type='hidden' name='id[]' value='
    $id'>
                                        <input type='hidden' name='contatore[]' value='
    $contatore'>";
                                        
    $contatore++;
                                        echo 
    "<td class='$tipor'><input type='text' name=voto[] value='$voto' size='10'></td>
                                        <td class='
    $tipor'><input type='text' name=data[] value='$data' size='15'></td>
                                        <td class='
    $tipor'><input type='text' name=tipo[] value='$tipo' size='10'></td>

                                    </tr>"
    ;
                            } 

  2. #2
    Utente di HTML.it L'avatar di marco80
    Registrato dal
    May 2005
    Messaggi
    1,357
    perche' nel while ad ogni giro definisci le variabili senza un indice e quindi si sorvrascrivono.
    Codice PHP:
                                                                                 $contatore=1;
                            while(
    $row=mysql_fetch_array($query)){
    $contatore++;
                                
    $cognome[$contatore]=$row["Valutazione_alunno_cognome"];
    .... 
    l errore dovrebbe stare qui.. sovrascrivi le variabili.

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2005
    Messaggi
    654
    Non credo sia lì il problema... :master:
    I valori li inserisco in un array più sotto, nei campi di input sottostanti. L'ho fatto in altre maschere e funzionava anche senza bisogno di inizializzarli all'esterno come mi hai proposto
    Comunque, curioso come sono, ho provato
    Non cambia nulla... in ogni caso ne visualizza uno solo

  4. #4
    tu hai usato mysql_fetch_array per visualizzare i campi. Ma subito dopo usi i nomi dei campi! usando mysql_fetch_array dovresti scrivere $row[0], $row[1] ecc e non $row["Valutazione_alunno_cognome"]; ecc ecc!
    quindi modifica la riga come segue:

    while($row=mysql_fetch_array($query, MYSQL_ASSOC)){

  5. #5
    Utente di HTML.it
    Registrato dal
    Dec 2005
    Messaggi
    654
    Fatto... ma niente di nuovo, mi mostra sempre e solo il primo
    In teoria non dovrebbe avere importanza se i valori vengono sovrascritti, perchè a ogni ciclo while la riga si riapre e dovrebbe stampare i nuovi valori

  6. #6
    hai provato a evdere quanti record sonoo stati estrattid alla query e fare un ciclo tipo

    $num = mysql_num_rows($query);
    echo $num;
    if ($num) {
    while (ecc ecc

  7. #7
    Utente di HTML.it
    Registrato dal
    Dec 2005
    Messaggi
    654
    Provato anche questo... $num=24
    Quindi la select funziona, è proprio nel while che sta il problema :master:
    Vedo se riesco ad aggirare il problema. Per intanto grazie a tutti per l'aiuto

  8. #8
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,923
    <style type="text/css">
    .colore1 {
    background-color:#ff0000;
    }
    .colore2 {
    background-color:#0000ff;
    }
    </style>

    Codice PHP:
    $q "SELECT * FROM Valutazioni WHERE Valutazione_classe=$classe AND Valutazione_sezione='$sezione' AND Valutazione_fascia='$fascia' AND Valutazione_data_voto='$data' AND Registro_docente='{$_SESSION['login']}' ORDER BY Valutazione_alunno_cognome, Valutazione_alunno_nome";

    $query mysql_query($q) or die(mysql_error());
    $class '';
    $str '<table>';
    while (
    $row mysql_fetch_assoc($query)) {
    $class $class == 'colore1' 'colore2' 'colore1';
    $str.= "<tr class=\"$class\">";
    $str.= "<td>$row[Valutazione_alunno_cognome]</td>";
    $str.= "<td>$row[Valutazione_alunno_nome]</td>";
    $str.= "<td>$row[Valutazione_voto]</td>";
    // eccetera
    $str.= '</tr>';
    }
    $str.= '</table>';
    echo 
    $str

  9. #9
    Utente di HTML.it
    Registrato dal
    Dec 2005
    Messaggi
    654
    Direi che il tuo metodo di colorare è un po' più efficiente
    Grazie per la precisazione

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.