- Home
- Categorie
- Coding e Sistemistica
- PHP
- Problemi con passaggio array tramite form
-
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!!! Grazie
-
Che risultato vuoi ottenere ?
-
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.
-
Ciao Z_E_P,
$valore_esercizio è un array mentre tu lo utilizzi come una variabile.
-
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
-
[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]
-
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?
-
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.
-
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]
-
Proverò, e vi farò sapere appena possibile
Ciaooo
-
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?
-
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 eserciziIl calcolatore di esercizi dice:
che per bruciare 500 g di grasso occorrono di
non valorizza niente e mi da errore sulla Key2