invalid argument foreach

Silen

Utente Attivo
24 Nov 2008
64
0
0
silen.netsons.org
salve, ho uno strano problema con questo codice

questo è il pezzo di form da cui vengono inseriti i dati

PHP:
	echo "<div><label id=\"type0[]\" for=\"type0[]\"> ".TYPE_0." </label>";
	echo "<select name=\"type0[]\" multiple=\"multiple\" size=\"5\">";
	echo "<option value=\" ".NESSUNO." \" \"selected\"> ".NESSUNO." </option>";
	$v=mysql_query("SELECT nome_type FROM type WHERE type='0' ORDER BY nome_type", $conn);
	while ($t=mysql_fetch_array($v)) {
	echo "<option value=\"".$t["nome_type"]."\">".$t["nome_type"]."</option>";
	}
	echo "</select></div>";
	echo "<div><label id=\"type1[]\" for=\"type1[]\"> ".TYPE_1." </label>";
	echo "<select name=\"type1[]\" multiple=\"multiple\" size=\"5\">";
	echo "<option value=\" ".NESSUNO." \" \"selected\"> ".NESSUNO." </option>";
	$r=mysql_query("SELECT nome_type FROM type WHERE type='1' ORDER BY nome_type", $conn);
	while ($q=mysql_fetch_array($r)) {
	echo "<option value=\"".$q["nome_type"]."\">".$q["nome_type"]."</option>";
	}
	echo "</select></div>";

e questo è il relativo pezzo di codice che poi mi produce l'output

PHP:
	$type0=array();
	foreach ($_POST['type0'] as $valore) {
	$type0[]=$valore;
	}
	foreach ($type0 as $x) $ty .= $x.", ";
	$type1=array();
	foreach ($_POST['type1'] as $valore) {
	$type1[]=$valore;
	}
	foreach ($type1 as $y) $typ .=$y.", ";

il problema è che questo form è ripetuto due volte, nel senso che è presente in due case di uno switch
il primo serve ad aggiungere mentre il secondo a modificare, cioè, per farvi capire a cosa serve a grandi linee:
io aggiungo con il form del case "new" e seleziono gli elementi 1,2,3 dal select; poi, una volta aggiunto mi rendo conto che gli elementi dovevano essere 1,2,5 quindi vado a usare il case "mod"

il "problema" è che mi viene restituito, quando vado a fare modifica, l'errore di cui in oggetto
e la cosa strana che non lo da quando invece aggiungo
:confused:
ringrazio anticipatamente chi mi illuminerà
 

michele.b26

Nuovo Utente
18 Dic 2008
27
0
0
In teroia è perché nel foreach usi uno scalare anziché un vettore.

Tu metti $_POST['type0'] e $_POST['type1'] al suo interno, invece la sitassi giusta dovrebbe essere solo $_POST.

Dopo metti $type1[] = $valore; anche qui fai un assegnamento di uno scalare ad un vettore, dovresti mettere un indice del tipo:

$type1[$i] = $valore;

In questi casi ti consiglio di usare un for, fai una cosa tipo:

PHP:
$len = sizeof($_POST);
for($i = 0; $i < $len; $i++){
[...]
}

Ciao.
 

Silen

Utente Attivo
24 Nov 2008
64
0
0
silen.netsons.org
grazie della risposta michele.b26
il tuo suggerimento mi è stato utile per andarmi a studiare l'utilizzo di for e foreach, e ho capito che nel mio caso va bene usare il secondo, perché io devo avere un array in quei due campi che inserisco e/o modifico con il form tramite input type0 e type1

infatti il problema stava a monte del codice dello script, cioè proprio nel form che non manteneva i vari valori che venivano inseriti
cioè nella pagina di inserimento mettevo "caso1, caso2, caso3", poi provavo a modificare e ho notato che, sebbene fossero stati memorizzati nel database, i valori non rimanevano selezionati nel form di modifica, quindi, se non li riselezionavo di nuovo, la modifica mi sovrascriveva quelli precedentemente insieriti con il nulla e l'array diventava vuoto dando quell'errore
inoltre ho letto che quell'errore che dava a me significa proprio che l'array è vuoto, cioè è piuttosto un avvertimento che un mancato funzionamento, ma tanto io quei campi non li avrò mai vuoti, almeno un elemento sempre ci sarà dentro l'array

posto il codice del form corretto, che magari serva a qualcun altro
PHP:
	echo "<div><label id=\"type0[]\" for \"type0[]\"> ".TYPE_0." </label><select name=\"type0[]\" size=\"5\" multiple=\"multiple\"><option 

value=\"".NESSUNO."\"";
	if ($genere_storia[0]==NESSUNO) echo "selected=\"selected\"";
	echo ">".NESSUNO."</option>";
	$v=mysql_query("SELECT nome_type FROM type WHERE type='0' ORDER BY nome_type ASC", $conn);
	while ($t=mysql_fetch_array($v)) {
	echo "<option value=\"$t[nome_type]\"";
	foreach($genere_storia as $y) {
	if ($y=="$t[nome_type]") echo "selected=\"selected\"";
	}
	echo ">".$t[nome_type]."</option>";
	}
	echo "</select><label id=\"type1[]\" for \"type1[]\"> ".TYPE_1." </label><select name=\"type1[]\" size=\"5\" multiple=\"multiple\"><option 

value=\"".NESSUNA."\"";
	if ($note_storia[0]==NESSUNA) echo "selected=\"selected\"";
	echo ">".NESSUNA."</option>";
	$r=mysql_query("SELECT nome_type FROM type WHERE type='1' ORDER BY nome_type ASC", $conn);
	while ($q=mysql_fetch_array($r)) {
	echo "<option value=\"$q[nome_type]\"";
	foreach($note_storia as $y) {
	if ($y=="$q[nome_type]") echo "selected=\"selected\"";
	}
	echo ">".$q[nome_type]."</option>";
	}
	echo "</select></div>
 
Ultima modifica:

Silen

Utente Attivo
24 Nov 2008
64
0
0
silen.netsons.org
rettifica

no, ha funzionato per un pezzo, poi devo aver fatto qualche variazione che non ricordo e ora ritorno di nuovo allo stesso problema:

quando vado a modificare i dati inseriti, il form modifica non mi mantiene selezionati i valori letti dall'array del database

ogni aiuto sarà molto apprezzato

:(
 

Silen

Utente Attivo
24 Nov 2008
64
0
0
silen.netsons.org
risolto

problema risolto, il codice postato è corretto, solo c'erano due variabili invertite che non riuscivo a vedere nella query di modifica sul database :mavieni: finalmente ora funziona tutto

:book: sperando che a qualcun altro possa servire
 
Discussioni simili
Autore Titolo Forum Risposte Data
JackIlPazzo Warning: Invalid argument supplied for foreach() PHP 1
F Warning: Invalid argument supplied for foreach() PHP 3
otto9due SQLSTATE[HY093]: Invalid parameter number: parameter was not defined ? Perchè secondo voi? PHP 5
B [JAVA] java.io.StreamCorruptedException: invalid type code: AC Java 1
T [PHP] SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of PHP 1
M W3C Invalid Output HTML e CSS 9
Monital mysql_num_rows(): supplied argument is not a valid MySQL PHP 2
M Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in PHP 6
S Errori supplied argument ?!!??!?! PHP 1
V Somma foreach PHP 2
Z problemi con foreach insert into PHP 10
P Passare i risultati di un foreach in un modal. Help! PHP 2
I Eecuzione di javascript in ciclo foreach php. PHP 7
P Array da foreach PHP 2
T foreach e fetchAll dove recupero solo l'ultimo record PHP 5
Alex_70 foreach explode query PHP 3
P Jquery event nel foreach php jQuery 3
S [PHP] Ciclo foreach su più array PHP 2
maxnegri [PHP] Eliminare risultati duplicati da ciclo foreach ottenuti da una select php mysqli PHP 18
alessandra86 [PHP] Popolamento database con form ricorsivi - problema array (foreach ) PHP 5
M [PHP] Errore in ciclo foreach PHP 1
S Unire due foreach simili PHP 5
M Problema con ciclo foreach per chiusura apertura div in base al numero di record in database PHP 1
L Estrarre e muovere un campo da un foreach PHP 0
C query dentro foreach PHP 1
otto9due Problema if elseif o foreach.. o non capisco cosa non funzioni.. PHP 4
otto9due Questione di array.. I risultato del foreach non è quello che voglio.. PHP 4
otto9due Problema inserimento ciclo foreach o while in variabile PHP 1
M Alternativa a foreach ?! PHP 7
W foreach contenuto PHP 0
M Aiuto su come procedere con un ciclo foreach PHP 4
felino Foreach annidati: soluzione? PHP 1
N Problema aggiornamento dati con foreach PHP 1
M Ricostruire array evitando il foreach PHP 0
N Problema FOREACH() PHP 3
Monital intabellare array bidimensionale, foreach impazziti PHP 13
M Problema Foreach && While PHP 4
M ciclo foreach che non funziona PHP 5
Emix [RISOLTO]Impostare focus su textbox dopo foreach jQuery 16
nuovecode interrompere e riprendere un foreach PHP 1
M problema con ciclo foreach per estrarre dati da un database PHP 22
P Problema con array e foreach PHP 15
M elimina valori doppi in ciclo foreach PHP 3
C Risultati ciclo foreach in tabella PHP 13
nim inserire dati in tabella con ajax (ciclo foreach) Ajax 10
F Rinomina file multipli con foreach PHP 1
Athene Interazione tra il foreach e una tabella html PHP 12
F Foreach PHP PHP 10
F Foreach con link selezionato PHP 3
M Ciclo foreach dentro un ciclo while PHP 5

Discussioni simili