campi checkbox

ci dev'essere un problema di collegamento, in quanto dopo aver selezionato il check, mi faccio visualizzare il dump ed il risultatao è questo:
PHP:
["lOA"]=> string(1) "0"

mi mette sempre 0
 
ciao
scusa una domanda nella variabile $lOA non si vede bene è un uno o una elle perche se è un uno in php i nomi di variabile non possono iniziare con un numero
 
Fatto, ma non è camboato nulla.

E' come se non avesse il collegamento al campo della tabella.

Sicuramente è una sciocchezza, ma non ho capito dove sbaglio
 
ciao
per prima cosa
prova a postare il form completo e come si valorizzano le eventuali variabili nei value cei campi di input.
delle volte (e non sarebbe la prima volta) l'errore nasce a monte
 
te lo invio spezzato perchè è lungo e potrebbe essere noioso da leggere.
La parte interessata è quella relativa agli Uffici.

PHP:
Quando richiamo questa pagina, se sono in variazione eseguoil codce qui sotto
PHP:
...
	} elseif (isset($_POST['Modifica'])){
		$cTipoAz = 'Modifica';
		$Campo = Ricerca( 'Uffici', $_POST['Prog'] );
			$lOA = $Campo[16] ? 'checked' : '' ;
...

Ricerca() fa ciò:
PHP:
Function Ricerca( $Tab, $Prog ) {
	$Conn = Connetti( true );
		// Costruisce la Query in relazione alla Tabella
		if ($Tab=='Assegnazioni') {
...
			} elseif ($Tab=='Uffici') {
				$cSql = "SELECT *, Comu.Descrizione AS cDesCo, Comu.Prov AS cProCo, Regi.Descrizione AS cDesRe   FROM Uffici
							LEFT OUTER JOIN Comuni AS Comu  ON Uffici.Comune = Comu.Progressivo
							LEFT OUTER JOIN Regioni AS Regi  ON Uffici.Regione = Regi.Progressivo
								WHERE Uffici.Progressivo = ?";
...

opo aver fatto ciò, c' il codice HTML, ti allego solo la parte del CHECK:
PHP:
<span class="Des">Accreditamento</span><?php Spazi(1);?>       <input type="checkbox" <?php echo $lOA; ?> class="Vis" name="lOA" value="<?php echo $Campo[16]; ?>" />

Clikkando su salva, richiama un'altra pagina web

Codice PHP:
PHP:
...
	} elseif (isset($_POST['Agg'])) {
		$lRis = Aggiorna( 'Uffici', $_POST );
...

La func Inserisci fa ciò:
PHP:
	Function Aggiorna( $Tab, $Var ) {
		$Conn = Connetti( true );
			// Costruisce la Query in relazione alla Tabella
			switch ($Tab) {
				case 'Assegnazioni':
...
				case 'Uffici':
					$cSql = 'UPDATE Uffici  SET Codice=?, Descrizione=?, Indirizzo=?, Comune=?, Cap=?, Regione=?, CodFiscale=?, PartitaIva=?, Telefono=?, 
							Fax=?, eMail=?, eMailAlternativa=?, Direttore=?, Intestazione=?, OrdineAccr=?, OAFunzionario=?, OACodice=? 
										WHERE Progressivo = ?';
					$aPara = array( $Var['Cod'], $Var['Des'], $Var['Ind'], $Var['Comu'], $Var['Cap'], $Var['Regi'], $Var['CoFi'], $Var['PaIv'], $Var['Tele'], 
									$Var['Fax'], $Var['eMa1'], $Var['eMa2'], $Var['Dire'], $Var['Inte'], $Var['lOA'], $Var['FuDe'], $Var['Codi'], $Var['Prog'] );
//var_dump($aPara);
					$cQry = null;
						$cQry = cQuery( $Conn, $cSql, $aPara );
...

Mi sa che altro non c'é
 
ciao
scusa ma sono un po' gnocco.
tu dici che non ti preleva i dati che dovrebbero essere inviati dalla (dalle?) checkbox, che immagino sia quella indicate nel codice
PHP:
<input type="checkbox" <?php echo $lOA; ?> class="Vis" name="lOA" value="<?php echo $Campo[16]; ?>" />
ma non vedo dove poi lo prelevi cioè un qualcosa del tipo

PHP:
$cek=$_POST['lOA'];
 
in
PHP:
$_POST['lOA']
c'è il contenuto della scelta fatta dall'utente

ed in
PHP:
Function Aggiorna( $Tab, $Var ) {
				case 'Uffici':
					$cSql = 'UPDATE Uffici  SET Codice=?, Descrizione=?, Indirizzo=?, Comune=?, Cap=?, Regione=?, CodFiscale=?, PartitaIva=?, Telefono=?, 
							Fax=?, eMail=?, eMailAlternativa=?, Direttore=?, Intestazione=?, OrdineAccr=?, OAFunzionario=?, OACodice=? 
										WHERE Progressivo = ?';
					$aPara = array( $Var['Cod'], $Var['Des'], $Var['Ind'], $Var['Comu'], $Var['Cap'], $Var['Regi'], $Var['CoFi'], $Var['PaIv'], $Var['Tele'], 
									$Var['Fax'], $Var['eMa1'], $Var['eMa2'], $Var['Dire'], $Var['Inte'], $Var['lOA'], $Var['FuDe'], $Var['Codi'], $Var['Prog'] );
					$cQry = null;
						$cQry = cQuery( $Conn, $cSql, $aPara );
					break;

o in
Function Inserisci( $Tab, $Var ) {
				case 'Uffici':
					$cSql = 'INSERT INTO Uffici (Codice, Descrizione, Indirizzo, Comune, Cap, Regione, CodFiscale, PartitaIva, Telefono, 
									Fax, eMail, eMailAlternativa, Direttore, Intestazione, OrdineAccr, OAFunzionario, OACodice) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)';
					$aPara = array( $Var['Cod'], $Var['Des'], $Var['Ind'], $Var['Comu'], $Var['Cap'], $Var['Regi'], $Var['CoFi'], $Var['PaIv'], $Var['Tele'], 
									$Var['Fax'], $Var['eMa1'], $Var['eMa2'], $Var['Dire'], $Var['Inte'], $Var['lOA'], $Var['FuDe'], $Var['Codi'] );
					$cQry = null;
						$cQry = cQuery( $Conn, $cSql, $aPara );
					break;
c'è il savataggio del dato.

Forse prima del salvataggio ci dev'essere un passaggio intermedio per il cambio del dato?
 
non se dico un sciocchezza, ma potrebbe dipendere dal default di quando creo la tabella, in quanto se metto 0 mi mette fisso zero, se metto null mi mette fisso null

E' possibile?
 
ciao
mi è venuto un dubbio
metti due var_dump uno per $var e rimettilo per $apara
PHP:
<?php
function Aggiorna( $Tab, $Var ) { 
        var_dump($Var);
		$Conn = Connetti( true ); 
            // Costruisce la Query in relazione alla Tabella 
            switch ($Tab) { 
                case 'Assegnazioni': 
//... 
                case 'Uffici': 
                    $cSql = 'UPDATE Uffici  SET Codice=?, Descrizione=?, Indirizzo=?, Comune=?, Cap=?, Regione=?, CodFiscale=?, PartitaIva=?, Telefono=?,  
                            Fax=?, eMail=?, eMailAlternativa=?, Direttore=?, Intestazione=?, OrdineAccr=?, OAFunzionario=?, OACodice=?  
                                        WHERE Progressivo = ?'; 
                    $aPara = array( $Var['Cod'], $Var['Des'], $Var['Ind'], $Var['Comu'], $Var['Cap'], $Var['Regi'], $Var['CoFi'], $Var['PaIv'], $Var['Tele'],  
                                    $Var['Fax'], $Var['eMa1'], $Var['eMa2'], $Var['Dire'], $Var['Inte'], $Var['lOA'], $Var['FuDe'], $Var['Codi'], $Var['Prog'] ); 
		var_dump($aPara); 
                    $cQry = null; 
                        $cQry = cQuery( $Conn, $cSql, $aPara ); 
//...  
?>
verifica cosa ti danno e postali completi, in teoria dovrebbero esser uguali , con in più in $var dovresti trovare anche il submit (o come hai chiamato il pulsante di submit)
ho una mezza idea
poi metti un altro var_dump e verifica anche quello
PHP:
<?php var_dump($Campo[16]);?>
 <input type="checkbox" <?php echo $lOA; ?> class="Vis" name="lOA" value="<?php echo $Campo[16]; ?>" />
 
avevo già effettuato una cosa del genere

Il risultatao sull'input è QUesto:
PHP:
string(1) "0" naturalmente se quando vado in variazione è selezionato é string(1) "0"

Quello prima dell'aggiornamento è Questo:
PHP:
array(18) { [0]=> string(5) "CAPE" [1]=> string(6) "C.A." [2]=> string(20) "Via Vecchia, 2" [3]=> string(0) "" [4]=> string(5) "65100" [5]=> string(0) "" [6]=> string(0) "" [7]=> string(0) "" [8]=> string(9) "085417701" [9]=> string(10) "0854177060" [10]=> string(30) "direpe@inre" [11]=> string(0) "" [12]=> string(20) ". MICHELE" [13]=> string(23) "Al Diret" [14]=> string(1) "0" [15]=> string(49) "DIRETTORE DRA" [16]=> string(10) "1000640201" [17]=> string(1) "7" } 
array(19) { ["Prog"]=> string(1) "7" ["Cod"]=> string(5) "CAPE" ["Des"]=> string(6) "C.A." ["Ind"]=> string(20) "Via Vecchia, 2" ["Comu"]=> string(0) "" ["Cap"]=> string(5) "65100" ["Regi"]=> string(0) "" ["CoFi"]=> string(0) "" ["PaIv"]=> string(0) "" ["Tele"]=> string(9) "08701" ["Fax"]=> string(10) "08560" ["eMa1"]=> string(30) "di@inure" ["eMa2"]=> string(0) "" ["Dire"]=> string(20) "MICHELE" ["Inte"]=> string(23) "Al Di." ["lOA"]=> string(1) "0" ["FuDe"]=> string(49) "VE AUTOVEICOLI DI PA" ["Codi"]=> string(10) "100061" ["Agg"]=> string(8) "Aggiorna" }

Sono fermamente convinto di aver fatto una grossa sciocchezza che è così data per scontata che non si riesce a trovare l'errore.
 
vedi che ti ho accorciato dei dati che sono provati, ma la sostnza é quella
 
ho rifatto i controllo che mi hai detto ed il dump è perfettamente uguale, a parte il progressivo che nel primo sta all'inizio e nel secondo in ultimo

Comunque znche se clikko sul ceck per lui è sempre zero
 
in
PHP:
$_POST['lOA']
c'è il contenuto della scelta fatta dall'utente

ed in
PHP:
Function Aggiorna( $Tab, $Var ) {
				case 'Uffici':
					$cSql = 'UPDATE Uffici  SET Codice=?, Descrizione=?, Indirizzo=?, Comune=?, Cap=?, Regione=?, CodFiscale=?, PartitaIva=?, Telefono=?, 
							Fax=?, eMail=?, eMailAlternativa=?, Direttore=?, Intestazione=?, OrdineAccr=?, OAFunzionario=?, OACodice=? 
										WHERE Progressivo = ?';
					$aPara = array( $Var['Cod'], $Var['Des'], $Var['Ind'], $Var['Comu'], $Var['Cap'], $Var['Regi'], $Var['CoFi'], $Var['PaIv'], $Var['Tele'], 
									$Var['Fax'], $Var['eMa1'], $Var['eMa2'], $Var['Dire'], $Var['Inte'], $Var['lOA'], $Var['FuDe'], $Var['Codi'], $Var['Prog'] );
					$cQry = null;
						$cQry = cQuery( $Conn, $cSql, $aPara );
					break;

o in
Function Inserisci( $Tab, $Var ) {
				case 'Uffici':
					$cSql = 'INSERT INTO Uffici (Codice, Descrizione, Indirizzo, Comune, Cap, Regione, CodFiscale, PartitaIva, Telefono, 
									Fax, eMail, eMailAlternativa, Direttore, Intestazione, OrdineAccr, OAFunzionario, OACodice) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)';
					$aPara = array( $Var['Cod'], $Var['Des'], $Var['Ind'], $Var['Comu'], $Var['Cap'], $Var['Regi'], $Var['CoFi'], $Var['PaIv'], $Var['Tele'], 
									$Var['Fax'], $Var['eMa1'], $Var['eMa2'], $Var['Dire'], $Var['Inte'], $Var['lOA'], $Var['FuDe'], $Var['Codi'] );
					$cQry = null;
						$cQry = cQuery( $Conn, $cSql, $aPara );
					break;
c'è il savataggio del dato.

Forse prima del salvataggio ci dev'essere un passaggio intermedio per il cambio del dato?

Ciao, ho provato a leggere la discussione, anche se è toppo avanzata.
Seho capito bene, non riesci a salvare la modifica di una checkbox se la modifichi,
prova prima della update a fare una cosa del genere
PHP:
$checked = '0';
if(isset($_POST['il nome della check']))
	{
		$checked = '1';
	}
Perchè questo, come diceva borgo non vedo la valorizzazione della modifica.
Ciao da minatore
 
ciao
quando mi hai postato i var_dump sei sicuro di averli copiati nell'ordine giusto?
al var_dump($Var) dici che risulta array(18) { [0]=> string(5) "CAPE" [1]=> string(6) "C.A." [2]=>....
non dovrebbe risultare un array vettoriale [0]..[1].... , ma un array associativo come dal secondo var_dump($aPara)
poi se i campi di input del form corrispondono ai campi di della query a che si serve fare il passaggio
$aPara = array( $Var['Cod'], $Var['Des'].....
dai un occhio allo script semplificato qui sotto e provalo, se noti con la Aggiorna_2 (vedi i risultati dei due var_dump) eliminando quello del submit
ottengo comunque l'array associativo senza l'ambaradan del $aPara, al massimo modifica la query mettendo i l'ordine dei campi della query come ti risultano nel $_POST
PHP:
<?php
function Aggiorna( $Var ) {
	var_dump($Var);echo "<br>";
	$aPara = array($Var['lOA'], $Var['Fax']);
	var_dump($aPara);echo "<br>";
}
function Aggiorna_2( $Var ) {
	var_dump($Var);echo "<br>";
	unset($Var['salva']);//elimino il post del submit
	//se guardi questo var_dump vedi che usare $aPara non ti serve
	//al massimo metti in ordine la query in modo che i campi coincidano
	var_dump($Var);echo "<br>";
	//queste righe NON servono
	$aPara = array($Var['lOA'], $Var['Fax']);
	var_dump($aPara);echo "<br>";
}
$Campo[16]=1;
//decommnetando la=0 e commentando la =1 il checkbox appare selezionato o deelezionato
//$check=0;
$check=1;
$check=$Campo[16] ? 'checked' : '';
if(isset($_POST['salva'])){
	//usando la prima function
	Aggiorna($_POST );
	echo "<br><br>";
	//usando la seconda function
	Aggiorna_2($_POST );
}
?>
<form name="form1" method="post" action="<?php echo $_SERVER['PHP_SELF'];?>">
  <p>
    fax <input name="Fax" type="text" id="Fax">
</p>
  <p>
    campo 16<input name="lOA" type="checkbox"<?php echo $check;?> id="lOA" value="<?php echo $Campo[16]; ?>">
</p>
  <p>
    <input name="salva" type="submit" id="salva" value="salva">
  </p>
</form>
 
ho inserito questo codice prima dell'aggiornamento:
PHP:
$_POST['lOA'] =  (isset($_POST['lOA'])) ? 1 : 0 ;

e funziona.
Quindi la checkbox va controllata (so che no si usa questo termine) sia in fase di visualizzazione ce di salvataggio.
Non so se sia corretto valorizzare la var del $_post.

Un ringraziamento ad entrambi, ma in particolare a borgo italia che mi ha sopportato per parecchio tempo e che mi aveva parlato di questa trasformazione, ma che purtroppo non avevo capito.

Di nuovo un grazie infinito
 

Discussioni simili