Newsgroup: it.comp.www.php
Titolo: checkboxes con vero - falso

Ciao,
ho una tabella con tre campi che possono assumere valore 1/0
attraverso un form con tre corrispondenti checkboxes. Con il seguente
codice converto i valori dei checkboxes in 0/1:
(isset($AreeVulnerab[0])) ? $APIAgr=1 : $APIAgr=0;
(isset($AreeVulnerab[1])) ? $APINA=1 : $APINA=0;
(isset($AreeVulnerab[2])) ? $Ris_IDRICHE=1 : $Ris_IDRICHE=0;
il problema compare quando vado a eseguire la query:
INSERT INTO aree_vulnerabili_localizzazione_impatti  VALUES (NULL,'".
$id_procedimento."','".$APIAgr."','".$APINA."','".
$Ris_IDRICHE."',NULL)";
perchè se seleziono con check ad 1 la variabile $Ris_IDRICHE mi
aspetterei un inserimento del tipo: 0,0,1. Invece ottengo 1,0,0.
Se seleziono a 1 le ultime due variabili, mi aspetterei:0,1,1. Invece
ottengo: 1,1,0.
Non riesco a capire dove sto sbagliando, qualcuno può aiutarmi?
Grazie
geo

 Non riesco a capire dove sto sbagliando, qualcuno può aiutarmi?
Difficile perché non hai scritto il codice che usi per la form né come 
ottieni $AreeVulnerab.
Stampati $_POST o $_GET con print_r() e vedi quali sono i dati che 
vengono inviati.

Prova cos�:
$APIAgr=0;
$APINA=0;
$Ris_IDRICHE=0;
if($AreeVulnerab[0]) $APIAgr=1;
if($AreeVulnerab[1]) $APINA=1;
if($AreeVulnerab[2]) $Ris_IDRICHE=1;
-- 
EniGMistA

Grazie dei suggerimenti ma non riesco comunque ad uscirne. Uso smarty
per le interfacce. Qui posto la parte di php che penso sia
incriminata, modificato secondo il suggerimento di EniGMistA. Mi rendo
conto che non è codice raffinato ma sono alle prime armi.
$id_inserimento=$_POST['id_inserimento']; //identificatificativo
inserimento
$id_procedimento=$_POST['id_procedimento'];
$AreeVulnerab=$_POST['AreeVulnerab'];
$APIAgr=0;
$APINA=0;
$Ris_IDRICHE=0;
if($AreeVulnerab[0]) $APIAgr=1;
if($AreeVulnerab[1]) $APINA=1;
if($AreeVulnerab[2]) $Ris_IDRICHE=1;
[...]
if($_POST['action']=="add" AND !$stop)	{
	$id_procedimento=$_GET['id_procedimento'];
	$id_procedimento=mysql_real_escape_string(get_magic_quotes_gpc() ?
stripslashes($id_procedimento) : $id_procedimento);
	$APIAgr=mysql_real_escape_string(get_magic_quotes_gpc() ? stripslashes
($APIAgr) : $APIAgr);
	$APINA=mysql_real_escape_string(get_magic_quotes_gpc() ? stripslashes
($APINA) : $APINA);
	$Ris_IDRICHE=mysql_real_escape_string(get_magic_quotes_gpc() ?
stripslashes($Ris_IDRICHE) : $Ris_IDRICHE);
	//$user_id=mysql_real_escape_string(get_magic_quotes_gpc() ?
stripslashes($user_id) : $user_id);
	$query="INSERT INTO aree_vulnerabili_localizzazione_impatti
			  VALUES (NULL,'".$id_procedimento."','".$APIAgr."','".$APINA."','".
$Ris_IDRICHE."',NULL)";
	echo"--->".$query;
	$result=$connection->query($query);
	if(DB::isError($result))	{
		die("Could not query the database: <br>".$query. " ".DB::errorMessage
($result));
		}
	echo("OK.<br />");
	$stop=TRUE;
	}
}
	$smarty->assign('scelta', array(0=>'Aree di interesse agricolo',
1=>'Aree di interesse naturalistico',   2=>'Acquifero vulnerabile'));
/*****************Smarty:******************************/
{section name=mysec loop=$Vulnerabilit}
<br />
	<form action="modify_aree_vulnerabili.php?id_procedimento=
{$id_procedimento|escape}" method="POST">
		{if $user_id==$owner_id}
		<label>
		Aree vulnerabili:<br />
		{html_checkboxes name="AreeVulnerab" options=$scelta  separator="
" }
		</label>
		<input type="hidden" name="action" value="{$action|escape}"/>
		<input type="hidden" name="id_procedimento" value="{$id_procedimento|
escape}"/>
		<input type="hidden" name="id_inserimento" value="{$Vulnerabilit
[mysec].id_inserimento|escape}"/>
		<br /><br />
		<input type="submit" name="submit" value="Accetta"
target="modify_aree_vulnerabili.php"/>
		{/if}
	</form>
{/section}

 if($AreeVulnerab[2]) $Ris_IDRICHE=1;
cosa succede se usi $_POST['AreeVulnerab'] nelle condizioni?
Stampa $AreeVulnerab con print_r() per vederne il contenuto.

 Stampa $AreeVulnerab con print_r() per vederne il contenuto.
Con print_r($AreeVulnerabi), selezionando il secondo ed il terso check
ottengo: "Array ( [0] => 1 [1] => 2 )".  In pratica succede che il
primo valore non vuoto viene messo nel primo elemento dell'array e
così via. Così se seleziono l'ultimo check mi trovo il valore inserito
nel primo elemento dell'array. Non so proprio come uscirne.
Grazie
geo