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

    problema update query php

    ciao ,
    sto lavorando dietro ad un sistema per informatizzare dei questionari per la mia ditta e mi ritrovo, da quasi 3 giorni, davanti ad un problema che non riesco a superare.

    Il codice qui sotto dovrebbe, in teoria, aggiornare il numero di questionari compilati per ogni domanda.
    Ci sono questionari con 19 o 21 domande (controllo quello selezionato tamite una select, in caso si scelga 19 domande lo script da lo stesso errore).
    Lo so che è complicato ma dateci un'occhiata pls.

    $query1 = mysql_query("SELECT N°_questionari FROM $val_media");
    for ($i = 0; $i < 21; $i++) {
    $questionari[$i] = mysql_result($query1, $i, "N°_questionari"); //recupero il numero di questionari compilati

    echo $questionari[$i];
    }
    for ($i = 0; $i < 21; $i++) {
    $med = mysql_result($query2, $i, "media");
    $valori[$i] = $med * $questionari[$i]; //ripristino i punti totali
    }
    echo '|';
    for ($v = 0; $v < 4; $v++) { //controllo quale radiobutton è selezionato
    if ($_POST['r' . $v] == 1) {
    $v1 = $v1 + 1;
    $valori[$v] = $valori[$v] + 1;
    } elseif ($_POST['r' . $v] == 2) {
    $v2 = $v2 + 2;
    $valori[$v] = $valori[$v] + 2;
    } elseif ($_POST['r' . $v] == 3) {
    $v3 = $v3 + 3;
    $valori[$v] = $valori[$v] + 3;
    } elseif ($_POST['r' . $v] == 4) {
    $v4 = $v4 + 4;
    $valori[$v] = $valori[$v] + 4;
    } else {
    print "<script type=\"text/javascript\">";
    print "alert('Mancano delle risposte')"; //mostra un alert se ci sono dei radiobutton domande senza risposta

    print "</script>";
    die(); //interrompo lo script
    }
    $questionari[$v] = $questionari[$v]+1;
    $ris[$v] = $valori[$v] / $questionari[$v];
    }
    for ($y = 0; $y < 4; $y++) { //aggiorno la tabelle con la media per domanda
    echo $questionari[$i];
    mysql_query("UPDATE $val_media SET media = $ris[$y], N°_questionari = $questionari[$y] WHERE N°_domanda=$y");
    }

    se eseguo questo codice 3 volte mi stampa:
    1: 000000000000000000000|1111
    2: 111000000000000000000|2221
    3: 221000000000000000000|3321

    quello prima dello '|' è quello che legge dalla tabella (di colore rosso) e quello dopo lo '|' ( evidenziato in verde) si vede quello che dovrebbe inserire nella tabella.
    la cosa che non capisco è perchè va decrescendo quando dovrebbe incrementare tutto univocamente (il punto 3 dovrebbe essere: 222200000000000000000|3333)
    potete aiutarmi.

    grazie in anticipo per l'aiuto.
    buona serata

  2. #2
    Utente di HTML.it
    Registrato dal
    Oct 2009
    Messaggi
    636
    non ho molto tempo, per ora posso solo consigliarti di mettere tutto il codice dentro tag [P H P] [/ P H P] (ovviamente senza spazi), così si mantiene l'indentazione e chi legge non esce pazzo. Se il codice di suo non fosse indentato indentalo. Pulisci un pò la parte degli if/elseif utilizzando switch case.

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.