Visualizzazione dei risultati da 1 a 3 su 3

Discussione: php e db

  1. #1

    php e db

    Ciao ,
    è da ormai una settimana che mi trovo bloccato davanti ad un problema che non riesco a risolvere.
    Sto informatizzando i questionari per la mia ditta, per fare questo ho scelto di usare php e mysql.
    funziona tutto alla perfezione tranne il codice che posto qui sotto.
    Il problema sta nel fatto che quando lo eseguo quello che mi salva nel db è errato per 2 motivi:
    1. Salva i dati in modo decrescendo (vedi fondo domanda).
    2. Se il database ha 4 domande mi salva solo 3 risposte nel db.

    Codice PHP:
    $query1 mysql_query("SELECT N°_questionari FROM medieXdomanda");
    for (
    $i 0$i 4$i++) {
            
    $questionari[$i] = mysql_result($query1$i"N°_questionari");       //recupero il numero di questionari compilati per domanda
            
    echo $questionari[$i];
        }
        for (
    $i 0$i 4$i++) {
            
    $med mysql_result($query2$i"media");      //recupero la media ri risposte per domanda
            
    $valori[$i] = $med $questionari[$i];
        }

    echo 
    '|';
        for (
    $v 0$v 4$v++) {
            if (
    $_POST['r' $v] == 1) {                    //'r' concatenato con un numero è il nome della serie di radiobutton per domanda (domanda 1 -> r0,...)
                
    $v1 $v1 1;
                
    $valori[$v] = $valori[$v] + 1;
            } else if (
    $_POST['r' $v] == 2) {
                
    $v2 $v2 1;
                
    $valori[$v] = $valori[$v] + 2;
            } else if (
    $_POST['r' $v] == 3) {
                
    $v3 $v3 1;
                
    $valori[$v] = $valori[$v] + 3;
            } else if (
    $_POST['r' $v] == 4) {
                
    $v4 $v4 1;
                
    $valori[$v] = $valori[$v] + 4;
            } else {
                
    $v0 $v0 1;
                
    $valori[$v] = $valori[$v] + 0;
            }
            
    $questionari[$v] = $questionari[$v] + 1;
            
    $ris[$v] = $valori[$v] / $questionari[$v];     //calcolo la media
        
    }
        for (
    $y 0$y 4$y++) {
            echo 
    $questionari[$y];
            
    mysql_query("UPDATE $val_media SET media = $ris[$y], N°_questionari = $questionari[$y] WHERE N°_domanda=$y");
        } 
    Il codice non presenta errori di sintatti e la logica mi sembra corretta, allora dove sbaglio?

    Esempio di risultato se compilo un questionario:
    1: 000|1111
    2: 111|2221
    3: 221|3321
    4: 321|4321

    la cosa che non capisco è perchè va decrescendo quando dovrebbe incrementare tutto univocamente (il punto 4 dovrebbe essere: 333300000000000000000|4444)
    potete aiutarmi?
    Se non capite qualche cosa rispiego.
    Grazie in anticipo

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,508
    Perché usi for per scorrere il result set che viene ritornato dalle query?
    Ho capito che sai in anticipo il numero dei record che troverà, ma secondo me parte del problema sta comunque lì.

    Usa while.
    Per esempio
    Codice PHP:
    $query1 mysql_query("SELECT N°_questionari FROM medieXdomanda");
    while (
    $row mysql_fetch_assoc($query1))
    {
        echo 
    $row['N°_questionari'];
    }

    $i 0;
    while (
    $row mysql_fetch_assoc($query2))
    {
        
    $valori[$i] = $row['media'] * $questionari[$i];
        
    $i++;


    //e così via 
    Inoltre in questo modo il codice funzionerà anche se un domani le domande fossero 5, 6, 7,... 1000...

  3. #3
    Ho fatto questa scelta perchè mi trovo meglio con il for.
    Ho provato ad usare il while come mi hai consigliato ma il risultato non cambia.
    Le domande saranno, per quanto ne so io, sempre a numero fissso (19 o 21) e il numero sarà salvato in una variabile, se cambia il numero di domande la modifica dei for sarà la cosa meno importate dal momento che ho un database con 3 tabelle per ogni questionario.

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.