select che non rimane selected

Silen

Utente Attivo
24 Nov 2008
64
0
0
silen.netsons.org
salve, dopo essere riuscita a capire il problema di questo form ho provato a crearne uno simile per inserire nel database dei dati che hanno gli stessi criteri, così ho creato tabella e campi con valori impostandoli uguali a quelle che avevo già, poi ho aggiunto una pagina per gestire aggiunta, modifica, eliminazione, e sembra che sia riuscita a far funzionare tutto anche qui

ho infine aggiunto la relativa parte di codice nella pagina dove ci sono anche le altre due simili, e i dati li inserisce correttamente come array, ma quando vado a modificare non mi rimane selezionato i valori come "selected" nel form

questo è il codice della pagina del form con cui inserisco i valori
PHP:
<div><label id=\"personaggi\" for \"personaggi[]\"> ".CHARS." </label><select name=\"personaggi[]\" size=\"10\" multiple=\"multiple\"><option value=\"".NESSUNO."\" selected=\"selected\"> ".NESSUNO." </option>";
	$u=mysql_query("SELECT nome_char FROM personaggi ORDER BY fandom, nome_char ASC", $conn);
	while ($s=mysql_fetch_array($u)) {
	echo "<option value=\"$s[nome_char]\">$s[nome_char]</option>";
	}
	echo "</select><label id=\"type0\" for \"type0[]\"> ".TYPE_0." </label><select name=\"type0[]\" size=\"10\" multiple=\"multiple\"><option value=\"".NESSUNO."\" selected=\"selected\"> ".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]\">$t[nome_type]</option>";
	}
	echo "</select><label id=\"type1\" for \"type1[]\"> ".TYPE_1." </label><select name=\"type1[]\" size=\"10\" multiple=\"multiple\"><option value=\"".NESSUNA."\" selected=\"selected\"> ".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]\">$q[nome_type]</option>";
	}
	echo "</select></div>
e questo il pezzo di codice relativo all'inserimento nel database
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." ";
	$personaggi=array();
	foreach ($_POST['personaggi'] as $valore) {
	$personaggi[]=$valore;
	}
	foreach ($personaggi as $z) $pg.=$z." ";
mentre questo è quello del case di modifica
PHP:
<div><label id=\"personaggi\" for \"personaggi[]\"> ".CHARS." </label><select name=\"personaggi[]\" size=\"10\" multiple=\"multiple\"><option value=\"".NESSUNO."\"";
	if ($personaggi[0]==NESSUNO) echo "selected=\"selected\"";
	echo "> ".NESSUNO." </option>";
	$u=mysql_query("SELECT nome_char FROM personaggi ORDER BY fandom, nome_char ASC", $conn);
	while ($s=mysql_fetch_array($u)) {
	echo "<option value=\"$s[nome_char]\"";
	foreach ($personaggi as $z) {
	if ($z=="$s[nome_char]") echo "selected=\"selected\"";
	}
	echo ">$s[nome_char]</option>";
	}
	echo "</select><label id=\"type0\" for \"type0[]\"> ".TYPE_0." </label><select name=\"type0[]\" size=\"10\" 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 $x) {
	if ($x=="$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=\"10\" 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>
ed il relativo pezzo di codice per la modifica nel database è questo
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." ";
	$categoria=$_POST['categoria'];
	$personaggi=array();
	foreach ($_POST['personaggi'] as $valore) {
	$personaggi[]=$valore;
	}
	foreach ($personaggi as $z) $pg.=$z." ";
a me sembrano esattamente uguali sia nel metodo di selezione attraverso i due form sia nel metodo di inserimento/modifica valori nel database, e non riesco a trovare nessun errore, anche perché per TYPE_0 e TYPE_1 il selected=selected funziona perfettamente mentre per CHARS no; comunque, se nel form di modifica li riseleziono non c'è problema, se mi dimentico lascia l'array vuoto

se servisse le tabelle sono così composte
PHP:
mysql_query("CREATE TABLE `personaggi` (
  `id_char` int(11) NOT NULL auto_increment,
  `type` smallint(6) NOT NULL,
  `nome_type` varchar(200) NOT NULL,
  PRIMARY KEY  (`id_char`)
) 

mysql_query("CREATE TABLE `type` (
  `id_type` int(11) NOT NULL auto_increment,
  `type` smallint(6) NOT NULL,
  `nome_type` varchar(100) NOT NULL,
  PRIMARY KEY  (`id_type`)
)
mentre nella tabella storie i tre campi relativi sono così
PHP:
  `note_storia` text NOT NULL,
  `genere_storia` text NOT NULL,
  `personaggi` text NOT NULL,

dove sbaglio? :crying:
 
nessuno?

ma proprio nessuno che abbia un attimo per dare un'occhiata al codice che ho postato per dirmi cosa ci sia di diverso o errato? :(
 
risolto

mannaggia a me e quando mi perdo nei bicchieri d'acqua :incazz:

come per l'ultima volta, il problema non era nel codice che ho postato qui, ma a monte, nella select con cui estraevo i dati, perché non avevo sostituito la variabile correttamente

rimannaggia a me a quando cambio le cose e poi non mi ricordo perché non ho commentato il codice :incazz:

sarà meglio che continuo a studiare :book:

:byebye:
 
Quando il codice diventa troppo lungo o hai fatto delle correzioni di cui non sei sicuro ti conviene inserire dei commenti per tenere a mente i passaggi, prova, ti fanno risparmiare un sacco di tempo.:beer:
 

Discussioni simili