• User Newbie

    Problemi con passaggio array tramite form

    Ciao,

    Allora, ho qualche problemino a far stampare il valore desiderato all'array che passo tramite form.

    ecco il form che uso:codice PHP:
    <form method="POST" ACTION="gestore_esercizi_box2.php" enctype="multipart/form-data" >
    <input type="checkbox" id="esercizio[]" name="esercizio[]" value=0 /> cyclette<br><br>
    <input type="checkbox" id="esercizio[]" name="esercizio[]" value=1 /> bici su strada<br><br>
    <input type="checkbox" id="esercizio[]" name="esercizio[]" value=2 /> corsa<br><br>
    <input type="checkbox" id="esercizio[]" name="esercizio[]" value=3 /> nuoto<br><br>
    <input type="checkbox" id="esercizio[]" name="esercizio[]" value=4 /> passeggiata<br><br>
    <input type="checkbox" id="esercizio[]" name="esercizio[]" value=5 /> sesso<br><br>
    <input type="submit" name="submit" value="Calcola"> </form>

    ecco file.php:

    codice PHP: <?php
    $array_box=array( 0 => 'cyclette',
    1 => 'bici',
    2 => 'corsa',
    3 => 'nuoto',
    4 => 'passeggiata',
    5 => 'sesso'
    );
    // echo 'dopo array box';

    $array_ore=array( 0 => '3 ore e 30 minuti',
    1 => '2 ore e 30 minuti',
    2 => '4 ore e 30 minuti' ,
    3 => '5 ore e 30 minuti',
    4 => '12 ore e 30 minuti',
    5 => '7 ore');

    // echo 'dopo array ore';
    echo "<pre>";
    echo $_POST['esercizio'];
    echo "</pre>";
    // exit;
    if (is_array($_POST) && ($_POST) > 1){
    // echo '<br>_post ok';
    $valore_esercizio = $_POST['esercizio'];
    echo 'valore_esercizio: '.$valore_esercizio.' <br>';
    print_r($_POST); // echo ' <br>assegnamento s_post ok<br> '; $name_esercizio=$array_box[$valore_esercizio]; //echo 'assegnamento array con valore esercizio';
    echo '<br>nome esercizio: '.$name_esercizio;
    $ore=$array_ore[$valore_esercizio];
    }

    if (isSet($ore)){
    // $message = "occorrono ".$ore." di ".$name_esercizio;
    $message = "occorrono ".$array_ore[$valore_esercizio]." di ".$array_box[$valore_esercizio];
    }
    else {
    $message = "Non è stata selezionata nessuna voce";
    }

    ?>

      <html> 
      <head> 
        <style type ="text/css"> 
    
        BODY, P {color:black; font-family:verdana; font-size:10 pt} 
        H1      {color:black; font-family:arial; font-size:12 pt} 
    
        </style> 
        </head> 
    
        <body> 
                        <table border=0 cellpading=30 width=100%> 
                        <tr> 
                        <td bgcolor="green" ALIGN =CENTER VALINGN=TOP WIDTH=150> 
                        </td> 
                        <td bgcolor="#FFFFFF" ALIGN =left VALINGN=TOP WIDTH=83%> 
                        <H1>Calcolatore di esercizi</H1> 
                        <P>Il calcolatore di esercizi dice:<br><?php echo $message; ?> </P> 
                        <br> 
                        </td> 
                        </tr> 
                       </table> 
                        <br> 
                        <br><br> 
                        <center> <a href="calcolatore_esercizi.html"> Torna indietro </a><center> 
                        </body> 
        </html> 
    

    ecco l'output:

    Array

    valore_esercizio: Array
    Array ( [esercizio] => Array ( [0] => 0 [1] => 1 [2] => 2 [3] => 3 [submit] => Calcola )
    nome esercizio:

                   **Clacolatore di esercizi**          
    
                   Il calcolatore di esercizi dice:
                   Non è stata selezionata nessuna voce 
    
    
    
    
                                                                 Torna indietro  
    

    Ogni suggerimento è fortemente gradito!!! :smile5: Grazie


  • User

    Che risultato vuoi ottenere ?


  • User Newbie

    Ciao, io scelgo l'esercizio da una pagina html, la scelta è gestita con checkbox

    mi deve restituire quante ore occorrono per bruciare 500 g di grasso con quell'esercizio.

    Ma non riesce a prendermi l'esercizio e quindi a non restituirmi nè l'ora nè l'esercizio.


  • ModSenior

    Ciao Z_E_P,

    $valore_esercizio è un array mentre tu lo utilizzi come una variabile.


  • User Newbie

    Ciao, mi rendo conto che $valore_esercizio è un array, magari sbaglio ad usarlo

    avete o hai un alternativa a questo?

    $valore_esercizio = $_POST['esercizio'];
    $name_esercizio=$array_box[$valore_esercizio];
    $ore=$array_ore[$valore_esercizio];

    Cioè l'informazione che passo tramite form (array) la devo poi confrontare con il mio array $array_box, per poi stampare il messaggio giusto.

    Grazie


  • User

    [PHP]
    $array_box=array( 0 => 'cyclette',
    1 => 'bici',
    2 => 'corsa',
    3 => 'nuoto',
    4 => 'passeggiata',
    5 => 'sesso'
    ); ;

    $array_ore = array( 0 => '3 ore e 30 minuti',
    1 => '2 ore e 30 minuti',
    2 => '4 ore e 30 minuti' ,
    3 => '5 ore e 30 minuti',
    4 => '12 ore e 30 minuti',
    5 => '7 ore');

    //ti dovrebbe mostrare l'esercizio
    echo $array_box[$_POST['esercizio']];
    //ti dovrebbe mostrare quante ore
    echo $array_ore[$_POST['exercizio']];
    [/PHP]


  • User Newbie

    Ho tolto tutto è ho scritto direttamente

    $message = "occorrono ".$array_ore[$_POST['esercizio']]." di ".$array_box[$_POST['esercizio']];

    niente da fare mi restituisce "occorrono di..." senza valorizzare
    forse sbaglio il form ma mi sembra strano, perche dall'output in base ai vari echo mi sembra giusto...

    ps: avrò qualche problema con qualche configurazione php?


  • ModSenior

    Se $valore_esercizio è un array va usato come tale quindi devi decidere quale indice usare o ciclare l'array a seconda di cosa devi fare.


  • User

    Forse è meglio così, nel if controllo se è stato premuto submit e se il valore inviato nel $_POST['esercizio'] è numerico.
    Forse htmlspecialchars e strip_tags non dovevo metteri, ma per sicurezza.
    Non l'ho provato, per dirti che funziona al 100% ma dovrebbe funzionare.

    [PHP]
    if($_POST['submit'] AND is_numeric($_POST['esercizio'])){

    $esercizio = htmlspecialchars(strip_tags($_POST['esercizio']));

    $array_box=array( 0 => 'cyclette',
    1 => 'bici',
    2 => 'corsa',
    3 => 'nuoto',
    4 => 'passeggiata',
    5 => 'sesso'
    ); ;

    $array_ore = array( 0 => '3 ore e 30 minuti',
    1 => '2 ore e 30 minuti',
    2 => '4 ore e 30 minuti' ,
    3 => '5 ore e 30 minuti',
    4 => '12 ore e 30 minuti',
    5 => '7 ore');

    $message = "occorrono ".$array_ore[$esercizio]." di ".$array_box[$esercizio];

    }
    [/PHP]


  • User Newbie

    Proverò, e vi farò sapere appena possibile 🙂

    Ciaooo


  • User Newbie

    if($_POST['submit'] AND is_numeric($_POST['esercizio'])){

    $esercizio = htmlspecialchars(strip_tags($_POST['esercizio']));

    $array_box=array( 0 => 'cyclette',
    1 => 'bici',
    2 => 'corsa',
    3 => 'nuoto',
    4 => 'passeggiata',
    5 => 'sesso'
    ); ;

    $array_ore = array( 0 => '3 ore e 30 minuti',
    1 => '2 ore e 30 minuti',
    2 => '4 ore e 30 minuti' ,
    3 => '5 ore e 30 minuti',
    4 => '12 ore e 30 minuti',
    5 => '7 ore');

    $message = "occorrono ".$array_ore[$esercizio]." di ".$array_box[$esercizio];

    }

    Niente da fare, credo che dovrò trovare un'altra soluzione, sicuramente meno elegante, avete idee? 🙂


  • User Newbie

    Alla fine ho risolto così

    [PHP]foreach ($valore_esercizio as $key => $valore)
    {
    $message= "che per bruciare 500 g di grasso occorrono ".$array_ore[$key]." di " .$valore_esercizio[$key];[/PHP]

    Grazie per l'aiuto

    Però adesso avrei il problema della valorizzazione dell'array multidimensionale

    [PHP]foreach ($valore_esercizio as $key1 => $v1) {
    // echo "$key1<br>";
    // echo "<br>$v1";
    foreach ($v1 as $key2 => $v2) {
    // echo"<br>$Key2";
    echo "<br>$v2";
    // $message= "che per bruciare 500 g di grasso occorrono ".$array_ore[$key1][$Key2]." di " .$valore_esercizio[$key1][$Key2];

    [/PHP]

    Output:

    Notice: Undefined variable: Key2 in /var/XXXXXXXX/ on line 68

    Notice: Undefined index: in /var/XXXXXXXX/ on line 68

    Notice: Undefined variable: Key2 in /var/XXXXXXXX/ on line 68

    Notice: Undefined index: in /var/XXXXXXXX/ on line 68
    BODY, P {color:black; font-family:verdana; font-size:10 pt} H1 {color:black; font-family:arial; font-size:12 pt} Calcolatore di esercizi

                         Il calcolatore di esercizi dice:
    

    che per bruciare 500 g di grasso occorrono di

    non valorizza niente e mi da errore sulla Key2