Newsgroup: it.comp.www.php
Titolo: form e pagina php: come posso prendere il valore dei check?

Salve,
il problema di oggi è che non riesco, dopo aver chiamato una pagina php da
un form, a prendere i valori dei checkbox presenti
nel form stesso.
Mi spiego meglio. Ho una pagina php creata dinamicamente con tante righe
quante sono quelle che mi restituisce una query. Ogni riga è composta da un
check e altre informazioni che tiro su con la query. Ho pensato di fare una
matrice di controlli, in modo da rendermi la vita più semplice, quando nella
pagina chiamata dal form, devo vedere quale di questi è stato spuntato. Ogni
check assume come valore un codice, altro campo presente nella query. La
riga che mi crea i check nel form, l'ho scritta così:
#'<input type="checkbox" name="chk['.$i.']" value="'.$row["CD_CANALE"].'">'
in questo modo riesco a davere una cosa del genere:
#input type="checkbox" name="chk[1]" value="1"
#input type="checkbox" name="chk[2]" value="2"
Il valore di i è un valore incrementale, non necessariamente i ha lo stesso
valore di row["CD_CANALE"], qui è solo unn caso.
In questo modo la pagina con i check è sistemata.
Nella seconda pagina, quella cioè che chiamo dal form, per vedere quale
check nella pagina precedente è stato spuntato, ho scritto questo:
#for ($i = 1; $i <= n; $i++)
# if (isset($_POST["chk[$i]"])) {
# print "cd_canale: ".$_POST["chk[$i]"];
# }
#}
In pratica, faccio un ciclo partendo da 1 fino ad n dove n è il numero
massimo delle righe presenti in un pagina, numero che io so a priori perchè
visualizzo solo un tot di righe per pagina, nel caso in cui la query di cui
parlavo sopra mi ritorni un numero di record maggiore di n. La if è la parte
più interessante e quella che non funziona :) In pratica per vedere quale
check è stato spuntato vedo se esiste una variabile con nome chk[i] dove i è
una variabile che incremento con il ciclo for, e che mi serve proprio per
scorrere tutti i check. A vederla così sembra perfetta, almeno a me :) se
non fosse che nessun valore viene mai stampato quando faccio click sui
check. Ho visto dove stà l'errore, ma non so come risolvere. Credo che sia
sbagliato scrivere:
#$_POST["chkCanale[$i]"]
Infatti, se invece che fare una matrice, chiamo il check semplicemente chk
allora il $_POST[] funziona, però, giustamente, mi da solo il valore
dell'ultimo check spuntato.
Come si fa in questo caso??
Grazie, saluti...
--------------------------------
Inviato via 
http://usenet.libero.it

hai due possobilità
la prima:
chiami le variabili del check con nomi diversi
check_1 = 1
check_2 = 1
check_3 = 1
il nome della variabile check ad ogni riga lo componi cosi    check_name =
"check_" . $counter;
visto che ti ritornano solo quelli premuti, per controllare devi provare a
scorrerti però tutti i nomi.
seconda possibilità:
chiami le variabili check in questo modo
check[] = X
dove X è il numero della riga che stai costruendo.
Il post ti creerà un array sequenziale  in base al numero dei check premuti
ma.....
magia delle magie, ogni valore di check è la riga che è stata premuta.
ti basterà scorrere l'array per avere tutti le righe in cui è stato premuto
il check.
--
Cordialmente.
Carmelo Carchedi
Il mio e-mail non ha numeri,
ricordati di toglierli per rispondere privatamente.
Juniorbit Sas
www.juniorbit.it
la variabile di posto

 #}
l'array e' composto diversamente
non 
	$_POST["chk[1]"] 
ma 
	$_POST["chk"][1] // sottile
quindi:
if (isset($_POST["chk"][1]))
    echo $_POST["chk"][1];
else 
	echo "campo 1 non checked";
un semplice print_r($_POST) forse basta per capire la struttura.
-- 
I'm not a signature.

 "check_" . $counter;
Per ora di fatti avevo ovviato fatto cosě :P
Grazie per la risposta, proverň anche il secondo caso...che non č male!! :)
Saluti...


Grazie per la risposta...
Saluti...
