Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 23

Discussione: da form a php

  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    13

    AIUTO PHP: da form a php

    Un ringraziamento anticipato a chi mi aiuterà...

    Devo far capire al mio script php di prendere i dati per l'array alunni (la chiave è il nome e il voto il valore) da un form (ma in realtà sono più form che vanno a formare l'intero array come mostra l'immagine qui sotto)


    voglio che i dati del form vadano a formare l'array come mostra l'immagine qui sotto


    lo so che devo usare get o post, ma potreste cortesemente spiegarmi passo passo come (sia lato html che php)?

    grazie mille

  2. #2
    Per prima cosa è inutile che metti titoli come quello che hai messo che è anche vietato dal regolamento.

    Detto questo passiamo a risolvere il tuo problema:
    per prima cosa devi creare due array con indice incrementale:

    quindi il nome dei tuoi campi saranno:

    nomi[] e voti[]

    Passiamo ora a capire un momento come recuperare i valori passati da un form che utilizzi il metodo post. Il procedimento è molto semplice: quando il form viene inviato php memorizza i valori in un array globale chiamato $_POST.
    Gli indici sono formati dal nome dei campi mentre i valori sono quelli inseriti nel campo stesso.
    Se, quindi, hai un campo nome per recuperarne il valore dovrai utilizzare questa variabile: $_POST['nome'] che avrà come valore ciò che hai inserito nel campo.

    La cosa, però diventa più complicata nel tuo caso poichè tutti i campi dove inserire il voto avranno il nome voti e quelli dove inserire il nome si chiameranno nomi.
    Dovrai, quindi, dare una sorta di id per evitare che i valori si sovrascrivano. Come fare? Nel modo in cui ti ho detto sopra: nomi[] e voti. Con questa sintassi, nfatti, php assegna un valore incrementale automaticamente. Il risultato sarà un array multidimensionale che avrà come prima chiave "nomi" o "voti" e come seconda chiave il valore incrementale che, ricorda bene, parte da 0 ed arriva al numero totale di campi.

    Se vorrai conoscere il nome ed il voto del quarto alunno, quindi, ti basterà scrivere $_POST['nomi'][4].

    Però siamo ancora a metà: infatti hai due array e tu ne vuoi uno solo. Come fare allora?

    Semplice.

    Basta scrorrere i due array e creare con i valori un unico array in questo modo:
    Codice PHP:
    for ($i $i count($_POST['nomi']) ; $i++)
       {
          
    $alunni[$i]['nome'] = $_POST['nomi'][$i];
          
    $alunni[$i]['voto'] = $_POST['voti'][$i];
       } 
    Ti spiego cosa c'è scritto:
    $i è una variabile che memorizza il numero del ciclo e di conseguenza il numero dell'alunno "processato".

    Utilizzando $i, quindi, potrai far riferimento ad un ben determinato alunno.

    Ora, il valore iniziale di $i è 0. Il for continuerà il ciclo aumentando il valore di $i di uno ($i++) fin quando $i è minore rispetto al numero totale di alunni ( count($_POST['nomi']) ).

    Fatto, hai ottenuto il tuo array. Se non hai capit qualcosa dimmeo che te lo spiego meglio. Ciao!

  3. #3
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    13
    Originariamente inviato da mircov


    CUT

    Fatto, hai ottenuto il tuo array. Se non hai capit qualcosa dimmeo che te lo spiego meglio. Ciao!
    grazie mille, ora leggo bene...

    mi scuso per il titolo del thread, avevo talmente fretta che ho ignorato completamente gli sticky di questa sezione..

  4. #4
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    13
    devo aver fatto qualche erroe ...ricapitolando

    questo è il form della pagina web...

    <form method="POST" action="/mioprogDIN.php"="text" name="nome"></input>


    Studente1

    <input name="voti[]" type="text" value="voto" maxlength="2">
    <input name="nomi[]" type="text" value="Cognome Nome"></input>
    </p>


    Studente2

    <input name="voti[]" type="text" value="voto" maxlength="2">
    <input name="nomi[]" type="text" value="Cognome Nome">
    e avanti...

    </p>


    <input type="submit"
    value="EFFETTUA ELABORAZIONE"></input>


    ---

    e lo scrpt php è giusto così?

    Codice PHP:
    <?php
    for ($i $i count($_POST['nomi']) ; $i++) 
       { 
          
    $alunni[$i]['nome'] = $_POST['nomi'][$i]; 
          
    $alunni[$i]['voto'] = $_POST['voti'][$i]; 
       }

                
       
    //voto minimo voto massimo
                
    $min $alunni[$_POST['nomi'][1]];
                
    $max $alunni[$_POST['nomi'][1]];
                foreach(
    $alunni as $val)
                {
                    if( 
    $min $val )
                        
    $min $val;
                    if( 
    $max $val )
                        
    $max $val;
                }
                ;
                echo 
    "<h3>Il voto minimo è stato $min . Ha/hanno preso questo voto:</h3>";
    ?>
    mi da parecchi errori..

  5. #5
    Utente di HTML.it L'avatar di nabozzz
    Registrato dal
    Nov 2004
    Messaggi
    145
    <form method="POST" action="/mioprogDIN.php"="text" name="nome"></input>


    Studente1

    <input name="voti[]" type="text" value="voto" maxlength="2">
    <input name="nomi[]" type="text" value="Cognome Nome">
    </p>
    No...
    codice:
    <input name="voti[0]" type="text" maxlength="2">
    <input name="nomi[0]" type="text">
    
    <input name="voti[1]" type="text" maxlength="2">
    <input name="nomi[1]" type="text">
    Non devi impostare il value qui... il value sarà quello che verrà inserito nel campo testo.

  6. #6
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    13
    ok ci riprovo...ma da ancora errori


    l'html dell'invio dati...

    [/code]
    <form method="POST" action="/mioprogDIN.php"="text" name="nome"></input>


    Studente1

    <input name="voti[0]" type="text" maxlength="2">
    <input name="nomi[0]" type="text" ></input>
    </p>


    Studente2

    <input name="voti[1]" type="text" maxlength="2">
    <input name="nomi[1]" type="text">
    </p>


    Studente

    <input name="voti[2]" type="text" maxlength="2">
    <input name="nomi[2]" type="text" >
    </p>




    <input type="submit"
    value="EFFETTUA ELABORAZIONE"></input>
    </p>
    </form>
    [/CODE]


    il codice php

    Codice PHP:
    <?php 
                 
    for ($i $i count($_POST['nomi']) ; $i++) 
       { 
          
    $alunni[$i]['nome'] = $_POST['nomi'][$i]; 
          
    $alunni[$i]['voto'] = $_POST['voti'][$i]; 
       }
     
    //voto minimo voto massimo
                
    $min $alunni[$_POST['nomi'][1]];
                
    $max $alunni[$_POST['nomi'][1]];
                foreach(
    $alunni as $val)
                {
                    if( 
    $min $val )
                        
    $min $val;
                    if( 
    $max $val )
                        
    $max $val;
                }
                ;
                echo 
    "<h3>Il voto minimo è stato $min . Ha/hanno preso questo voto:</h3>";

        

                function 
    suff($var
    {
        return(
    $var == 18);
    }
    echo 


    "
    ;

    print_r(array_filter($alunni"suff"));


    ?>
    gli errori segnalati
    ----

    Notice: Undefined index: Marco masd in c:\programmi\easyphp1-8\www\mioprogdin.php on line 16

    Notice: Undefined index: Marco masd in c:\programmi\easyphp1-8\www\mioprogdin.php on line 17

    Il voto minimo è stato . Ha/hanno preso questo voto:
    Array ( )
    ----

    agghh...

  7. #7
    No, io non utilizzerei il tuo metodo (che non ho capito :master: ).

    Io farei così
    1) Voto massimo e voto minimo + numero di alunni che li hanno avuti
    Codice PHP:
    $maxVote 0;
    $minVote 0;

    for (
    $i 0$i count($alunni); $i++)
       {
          
    // Voto massimo
          
    if ($alunni[$i]['voto'] > $maxVote)
            {
               
    $maxVote $alunni[$i]['voto'];
            }

         
    // Voto minimo
         
    if ($alunni[$i]['voto'] < $minVote)
           {
              
    $minVote $alunni[$i]['voto'];
           }
       } 
    Per adesso accontentati del voto massimo e di quello minimo: sto pensando ad un modo per implementare anche quanti alunni hanno avuto il voto massimo utilizzando sempre lo stesso cisclo for senza crearne un altro.

  8. #8
    Codice PHP:
    $maxVote 0
    $minVote 0
    $totMax 0;
    $totMin 0;
    for (
    $i 0$i count($alunni); $i++) 
       { 
          
    // Voto massimo 
          
    if ($alunni[$i]['voto'] > $maxVote
            { 
               
    $maxVote $alunni[$i]['voto'];
               
    $totMax 0;
            }

         
    // Quanti alunni l'hanno preso
         
    if ($alunni[$i]['voto'] == $totMax)
           {
              
    $totMax++;
           }

         
    // Voto minimo 
         
    if ($alunni[$i]['voto'] < $minVote
           { 
              
    $minVote $alunni[$i]['voto'];
              
    $totMin 0;
           }

         
    // Quanti alunni l'hanno preso
         
    if ($alunni[$i]['voto'] == $totMin)
           {
              
    $totMin++;
           }
       } 
    Ecco, adesso dovrebbe calcolarti anche quanti alunni hanno preso il voto massimo e quanti il voto minimo.

  9. #9
    Utente di HTML.it L'avatar di chris
    Registrato dal
    Sep 1999
    Messaggi
    1,568
    "Nei prossimi tre anni col mio governo vogliamo vincere anche il cancro, che colpisce ogni anno 250.000 italiani e riguarda quasi due milioni di nostri concittadini"

  10. #10
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    13
    EDIT: Mi correggo :rollo: , ecco cosa succede a fare troppo copia incolla .

    Che istruzioni devo dare allo script per far stampre studenti con il voto max e con il voto min nella stessa pagina?

    echo "" ????


    il php...

    Codice PHP:

    <?php  
     
     
    for ($i $i count($_POST['nomi']) ; $i++) 
       { 
          
    $alunni[$i]['nome'] = $_POST['nomi'][$i]; 
          
    $alunni[$i]['voto'] = $_POST['voti'][$i]; 
       }

     
     
    $maxVote 0;  
    $minVote 0;  
    $totMax 0
    $totMin 0
    for (
    $i 0$i count($alunni); $i++)  
       {  
          
    // Voto massimo 
          
    if ($alunni[$i]['voto'] > $maxVote)  
            {  
               
    $maxVote $alunni[$i]['voto']; 
               
    $totMax 0
            } 

         
    // Quanti alunni l'hanno preso 
         
    if ($alunni[$i]['voto'] == $totMax
           { 
              
    $totMax++; 
           } 

         
    // Voto minimo 
         
    if ($alunni[$i]['voto'] < $minVote)  
           {  
              
    $minVote $alunni[$i]['voto']; 
              
    $totMin 0
           } 

         
    // Quanti alunni l'hanno preso 
         
    if ($alunni[$i]['voto'] == $totMin
           { 
              
    $totMin++; 
           } 
       }

    ?>

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.