Newsgroup: it.comp.www.php
Titolo: Aquisizione dati da form

Ho un form con questo controllo che mi servirebbe per acquisizioni multiple.
<form name="form1" id="form1" method="post" action="page-2.php">
 <select name="Colori[]" size="3" multiple="multiple">
  <option>Bianco</option>
  <option>Rosso</option>
  <option>Verde</option>
</select>
<input type="submit" name="Submit" value="Submit" />
</form>
Quando premo su submit, in page-2.php mi viene questo errore:
Invalid argument supplied for foreach()
che non riesco a risolvere.
La linea che da l'errore � questa:
<?php
foreach($_REQUEST["Colori"] as $Co){echo $Co;}
?>
Grazie a chi vorr� darmi una mano.
Saluti
Leo

 
prova togliendo quelle due parentesi quadre quando espliciti il name 
della select, poi assegni un value ad ogni scelta, altrimenti non 
valorizzi il campo, e in ultimo usa gli apici normali quando ti 
riferisci alla variabile in REQUEST....in pratica cosï¿œ:
 > <form name="form1" id="form1" method="post" action="page-2.php">
 >  <select name="colori" size="3" multiple="multiple">
 >   <option value='bianco'>Bianco</option>
 >   <option value='rosso'>Rosso</option>
 >   <option value='verde'>Verde</option>
 > </select>
 > <input type="submit" name="Submit" value="Submit" />
 > </form>
<?php



Ho sostituito  <form name="form1" id="form1" method="post" 
action="page-2.php">
   <select name="colori" size="3" multiple="multiple">
    <option value='bianco'>Bianco</option>
    <option value='rosso'>Rosso</option>
    <option value='verde'>Verde</option>
  </select>
  <input type="submit" name="Submit" value="Submit" />
 </form>
e
<?php
 foreach($_REQUEST['Colori'] as $Co){echo $Co;}
 ?>
Ma non ne vuole sapere.
Non va il messaggio di errore � questo:
Warning: Invalid argument supplied for foreach()
Saluti
Leo

 della select,
Cosi` non funziona piu` il multiple... :)
Bye.

 Leo
Ho copincollato il codice del tuo primo messaggio, l'ho fatto
girare e funziona, non capisco il warning che ti esce...
che versione di php stai usando?
Comunque dovresti usare $_POST anziché $_REQUEST.

 foreach($_REQUEST["Colori"] as $Co){echo $Co;} ?>
Innanzitutto usa uno stile piu` "normale" per le variabili: tutte 
minuscole, quindi colori e co, non Colori e Co.
Poi prova cosi`:
$colori = $_POST["colori"];
if (!is_array($colori)) {
 $colori = array($colori);
}
foreach ($colori as $colore) {
 ...
}
Bye.

 
Prova a fare un print_r($_REQUEST['Colori']); prima del foreach per
vedere cosa c'è la dentro? 

 Grazie a chi vorrï¿œ darmi una mano.
Questo funziona:
http://www.onlinetools.org/tricks/using_multiple_select.php
Ciao,
luigi
-- 
/
+--[Luigi Rosa]--
\
Con un militare sai sempre dove stai, ma non con i politici,
nemmeno quelli del tuo Paese.
    --Tom Clancy, "Il cardinale del Cremlino"

 Comunque dovresti usare $_POST anzich� $_REQUEST.
Sto uasando PHP 5 in xampp. Che sia xampp che non me lo fa funzionare?
Leo

vedere cosa c'� la dentro?
Fatto
Nessun messaggio, quindi suppongo, stringa vuota?
Leo

 Nessun messaggio, quindi suppongo, stringa vuota?
Ma non era un array?
Prova da fare un var_dump di $_REQUEST (e magari anche di $_POST)
Ciao,
luigi
-- 
/
+--[Luigi Rosa]--
\
He was so narrow minded he could see through a keyhole with both eyes...

 $colori = $_POST["colori"];
mmmm...
$colori = isset($_POST["colori"]) ? $_POST["colori"] : "";


Fatto, da NULL
Com'� possibile?
Leo

 Com'ï¿œ possibile?
Uhm... se $_POST e' vuoto o lo svuoti tu con un'assegnazione non voluta (tipo un
'=' al posto di '==' in una if) o non si riempie.
Strana la cosa.
Ciao,
luigi
-- 
/
+--[Luigi Rosa]--
\
We've heard that a million monkeys at a million keyboards could
produce the Complete Works of Shakespeare; now, thanks to the
Internet, we know this is not true.
       --Robert Wilensky, University of California


Ho ririricontrollato ed errori di codesto genere non ce ne sono.
Un altro mi ha scritto che il mio esempio iniziale non funzionante sul suo 
PC funziona.
Chi sia qualcosa in xampp?
Ciao
Leo

 Chi sia qualcosa in xampp?
Non lo conosco, sorry.
Ciao,
luigi
-- 
/
+--[Luigi Rosa]--
\
Immanuel Kant but Kubla Khan.


Ottimo. funziona anche sul mio PC.
Rimane da capire dov'� l'errore in quello scritto da me.
Ciao
Leo

 Chi sia qualcosa in xampp?
cio� tu hai due pagine dove nella prima c'� SOLO quel form, nella
seconda SOLO quel ciclo, e non ti funzionano?

 ha scritto nel messaggio 
news:pan.2009.05.27....@inwind.it...

Si, sono pagine dove ho scritto solo quello per cercare di individuare 
l'errore.
Leo

 l'errore.
ed in tutto questo che dice il log del web server?

 Rimane da capire dov'ï¿œ l'errore in quello scritto da me.
Parti da quello che funziona e cambialo progressivamente per farlo arrivare alla
tua versione.
Ciao,
luigi
-- 
/
+--[Luigi Rosa]--
\
Never surrender dreams.
    --J. Michael Straczynski

Alessandro Pellizzari ha scritto:

avevo visto dopo il multiple...
comunque anche io ho copiaincollato il suo codice e mi gira, ho cambiato 
solo gli apici
ecco il codice funzionante, basta confrontarlo col codice originale e 
vedi le differenze
***********pagina "test.htm"
<form name="form1" id="form1" method="post" action="test2.php">
  <select name="colori[]" size="3" multiple="multiple">
   <option value='bianco'>Bianco</option>
   <option value='rosso'>Rosso</option>
   <option value='verde'>Verde</option>
</select>
<input type="submit" name="Submit" value="Submit" />
</form>
*********pagina "test2.php"
<?php
foreach($_REQUEST['colori'] as $Co){
echo $Co;
}
?>

    <option value='verde'>Verde</option>
ma certo, mancavano i campi value nelle singole option, seconde me c'�
stato un abbaglio generale e nessuno se ne � accorto (io in primis)
oggi abbiamo tutti sonno!

Redwiz ha scritto:

emh...veramente io gliel'avevo detto all'inizio, ma diceva che non 
funzionava uguale...


Grazie