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

    L'update mi fa impazzire...

    Ho seguito questo post di Piero http://forum.html.it/forum/showthrea...hreadid=810119 . E' molto ben fatto, ma alcuni passaggi per me sono un po' complicati.
    Devo fare update multipli, cioè devo visualizzare i record di un database in base alla classe, alla sezione e alla fascia scelti, quindi aggiornare i record modificati. La visualizzazione appare in una tabella.

    Questo è il codice (molto lungo, ma lo posto tutto perchè già mi trovo in difficoltà). E' presente nella stessa pagina il form e la destinazione (dove viene fatto l'update).

    Codice PHP:
                <?php
                    
    include("../config.php");

                
    $z=0;
                echo 
    "<form action='$_SERVER[PHP_SELF]' method='post'>            
                <table width='80%' cellpadding='3' cellspacing='1' border='0' class='sfondomenu' align='center'>
                    <tr>
                    <th>Inserimento dei voti per classe</th>
                    </tr>
                        <tr class='row1'>
                            <td align='center' nowrap>
                            <table class='sottomenu' cellpadding='5' cellspacing='0' border='0' width='50%' align='center'>

                            <tr>
                            <td class='tabSup'>Cognome</td>
                                <td class='tabSup'>Nome</td>
                                <td class='tabSup'>Data voto</td>
                                <td class='tabSup'>Voto</td>
                                <td class='tabSup'>Tipologia Voto</td>
                            </tr>"
    ;

                            
    $classe=$_POST['classe'];
                            
    $sezione=$_POST['sezione'];
                            
    $fascia=$_POST['fascia'];
                            
    $materia=$_POST['materia'];

                            
    $q "SELECT * FROM Valutazioni WHERE Valutazione_classe='$classe' AND Valutazione_sezione='$sezione' AND Valutazione_fascia='$fascia' AND Valutazione_materia_descrizione_estesa='$materia'";
                                
    $query mysql_query($q) or die(mysql_error());
                            
    $num mysql_num_rows($query);
                            
    $z=0;
                            for(
    $i=0;$i<$num;$i++){;
                                
    $cognome=mysql_result($query,$i"Valutazione_alunno_cognome");
                                
    $nome=mysql_result($query,$i"Valutazione_alunno_nome");
                                
    $voto=mysql_result($query,$i"Valutazione_voto");
                                
    $data=mysql_result($query,$i"Valutazione_data_voto");
                                
    $tipo=mysql_result($query,$i"Valutazione_tipologia");
                                if(
    $i%2==0){
                                    echo 
    "<tr>";
                                        echo 
    "<input type='hidden' name=id[$z] value='$i'>";
                                        echo 
    "<td class="."tabDispari".">$cognome</td>";
                                        echo 
    "<td class="."tabDispari".">$nome</td>";
                                        echo 
    "<td class="."tabDispari"."><input type='text' name=newdata[$z] value='$data'></td></td>";
                                        echo 
    "<td class="."tabDispari"."><input type='text' name=newvoto[$z] value='$voto'></td></td>";
                                        echo 
    "<td class="."tabDispari"."><input type='text' name=newtipo[$z] value='$tipo'></td></td>";

                                    }
                                else{
                                    echo 
    "<tr>";
                                        echo 
    "<input type='hidden' name=id[$z] value='$i'>";
                                        echo 
    "<td class="."tabPari".">$cognome</td>";
                                        echo 
    "<td class="."tabPari".">$nome</td>";
                                        echo 
    "<td class="."tabPari"."><input type='text' name=newdata[$z] value='$data'></td></td>";
                                        echo 
    "<td class="."tabPari"."><input type='text' name=newvoto[$z] value='$voto'></td></td>";
                                        echo 
    "<td class="."tabPari"."><input type='text' name=newtipo[$z] value='$tipo'></td></td>";
                                    echo 
    "</tr>";
                                    }
                                
    $z=$z+1;
                            }

                    echo 
    "<tr>
                                    <td align='center' nowrap>
                            <input type='submit' class='button' value='Modifica selezionato'>
                                    </td>
                    </tr>

                            </table>
                            </td>
                        </tr>
                        <tr>
                            <td class='cat'></td>
                        </tr>
                </form> 
                </table> "
    ;


    //Destinazione

    if(!empty($_POST)){
        foreach(
    $_POST as $key => $value ) {
                  
    $campo[] = $key;
        }
        foreach(
    $_POST[$campo[0]] as $key0 => $val0 ) {
                  
    $id[] = $val0;   }

        foreach(
    $_POST[$campo[1]] as $key1 => $val1 ) {
                  
    $newdata[] = $val1;   }


        foreach(
    $_POST[$campo[2]] as $key2 => $val2 ) {
                  
    $newvoto[] = $val2;   }


        foreach(
    $_POST[$campo[3]] as $key3 => $val3 ) {
                  
    $newtipo[] = $val3;   }

        for(
    $i 0$i count($id); $i++) {
            echo 
    $query "update Valutazioni set Valutazione_data='$newdata[$z]', Valutazione_tipologia='$newtipo[$z]', Valutazione_voto= '$newvoto[$z]' where id = '$id[$z]'
    "
    ;
        }

    }

            
    $query mysql_query($q) or die(mysql_error());
        
    $num=mysql_affected_rows();
        if(
    $num>0)
            echo 
    "

    Il record è stato modificato correttamente</p>"
    ;
        else
            echo 
    "

    Errore nella modifica</p>"
    ;
            echo 
    "

    Premere sul [url="
    ."]link[/url] per visualizzare di nuovo i risultati</p>";

                            
    mysql_close($db);
                        
    ?>

    Mi dà questi errori:

    Warning: Invalid argument supplied for foreach() in /onlineschool/Docenti/insVotiT.php on line 171

    Warning: Invalid argument supplied for foreach() in /onlineschool/Docenti/insVotiT.php on line 174

    Warning: Invalid argument supplied for foreach() in /onlineschool/Docenti/insVotiT.php on line 178

    Warning: Invalid argument supplied for foreach() in /onlineschool/Docenti/insVotiT.php on line 182

    Errore nella modifica


    Quella parte dei foreach è per me arabo.
    Sto fondendo nel cercare di risolverlo... qualcuno mi può dare una mano?

  2. #2
    e' arabo pure per me....

    l'array $_POST e' quello che ricevi dal form. Stampalo per vedere come e' formato. Dopo di che organizzi un foreach ad hoc!...

    per stamparlo metti ad inizio pagina

    echo "<pre>";
    print_r($_POST);

    per il resto dello script si evidenzia l'uso di mysql_result() sconsigliato gia' da svariate release. Usa mysql_fetch_assoc() in un ciclo while invece di for.

    Per evidenziare righe di colore diverso esistono metodi piu' semplici, tipo:

    $color = $color == "#FFFFFF" ? "#000000" : "#FFFFFF";
    echo '<tr bgcolor='. $color . '>';

    senza dover ripetere tutto il form.

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

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2005
    Messaggi
    654
    Grazie, dopo averci sbattuto la testa (e grazie ad aiuti vari) sono riuscito a farlo funzionare

    Una domanda, visto che ci sei. Quella condizione che hai scritto, cioè
    $color = $color == "#FFFFFF" ? "#000000" : "#FFFFFF";
    cosa significa in pratica? Cioè, ho capito che prende o uno o l'altro colore, ma come faccio a fargli capire che deve prenderlo se una riga è dispari o pari?

  4. #4
    quale e' il criterio per cui una riga e' dispari o pari?....

    il primo che arriva e' dispari e il secondo e' pari?

    Allora metti un colore di start... e poi se lo cambiera' da solo una riga si e l'altra anche.

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

  5. #5
    Utente di HTML.it
    Registrato dal
    Dec 2005
    Messaggi
    654
    Sì, non aveva importanza chi fosse il dispari, l'importante è che colori ogni riga diversamente
    Grazie per la risposta

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.