UPDATE d'un champ checkbox

Eléphant du PHP | 109 Messages

18 nov. 2008, 15:35

Bonjour
J'ai un formulaire dans lequel on peut inserer en ligne des petites annonces.
j'ai un champ checkbox dans lequel on coche si le prix est a débattre ou sinon on ne coche pas.

Code : Tout sélectionner

<input type="checkbox" name="debattre" value="oui"/>
ce qui me mets oui dans ma bdd, si c'est pas coché l'enregistrement est vide pour ce champs

par contre j'ai un formaulaire de modification des annonces et là ca bug
je n'arrive pas amodifier la boite a cocher
voilà mon code pour le formulaire d'update :

Code : Tout sélectionner

<input type="checkbox" name="debattre" <?php if($tab_pa[$i]["debattre"]=="oui") { echo 'checked="checked"'; } ?> />
par contre je n'arrive pas à recuperer la valeur de ce champs s'il a été changé....
merci de votre aide
Nadege

Eléphant du PHP | 353 Messages

18 nov. 2008, 15:37

Bonjour.

Hum...
Par "si il a été changé" tu entends surement décoché non ?
Je dirais à première vu que c'est normal.
Une checkbox non cochée n'est pas passé dans le $_POST.

Cela t'aide ?

ViPHP
AB
ViPHP | 5818 Messages

18 nov. 2008, 15:51


Eléphant du PHP | 109 Messages

18 nov. 2008, 15:52

oui ca m'aide je le savais pas
donc si j'ai bien coché quand j'ai en 1er lieu (oui dans ma bdd) je peux pas revenir sur non??

ya t'il une astuce pour changer une case a cocher??

ViPHP
AB
ViPHP | 5818 Messages

18 nov. 2008, 15:58

As-tu lu le lien que je t'ai donné jusqu'au bout ?

Eléphant du PHP | 109 Messages

18 nov. 2008, 16:09

non j''etais en trian d'ecrire quand tu a posté lé tien
j'ai regardé mais ca ne résout pas mon probleme
quand c'est pas coché ca ne renvoi aucune valeur donc ca ne peut pas me changer mon enregistrement puisque ca n'envoi rien

Eléphant du PHP | 353 Messages

18 nov. 2008, 16:14

hum.
A toi de faire quelques chose comme ceci alors :
if(empty($_POST['debattre'])){
$query = "UPDATE tatable SET tonchamp = NULL WHERE tacleprimaire = '$id";
mysql_query($query);
}
Tu véritifies si le champ n'est pas vide, si il l'est tu met alors le champ de la table à jour.

Eléphant du PHP | 109 Messages

18 nov. 2008, 16:41

maintenant quand je coche ou que je ne coche pas ca me modifie l'enregistrement en mettant 'on' dans tous les cas
j'ai juste ajouter le
if(empty($_POST['debattre'])){
$_POST['debattre']=="rien";
}

Eléphant du PHP | 353 Messages

18 nov. 2008, 16:47

peux tu montrer l'ensemble du code html et l'ensemble du code php?
Cela sera surement plus simple pour t'aider.
Merci.

Eléphant du PHP | 109 Messages

18 nov. 2008, 16:56

le probleme c'est que c'est une script complet je vais te donner les morceaux

formulaire :

Code : Tout sélectionner

<input type="checkbox" name="debattre" <?php if($tab_pa[$i]["debattre"]=="oui") { echo 'checked="checked"'; } ?> />
le form renvoi à un fichier update qui entre autre upload des fichiers photo donc tout le debut c'est pour les photos
if(empty($_POST['debattre'])){ 
 $_POST['debattre']==NULL;
}

$modif=modifier_pa($id,$_POST['date'],$_POST['titre'],$_POST['texte'],$_POST['prix'],$_POST['debattre'],$_POST['nom'],$_POST['email'],$nom_fichier);
la fonction modifier_pa se trouve dans un fichier special
function modifier_pa($id_pa,$date_pa,$titre_pa,$texte_pa,$prix_pa,$debattre_pa,$nom_pa,$email_pa,$nom_fichier){
	//vérification des paramètres passés
	$tab_erreur = array();
	if(is_null($date_pa)){
		$tab_erreur["date_pa"] = $date_pa;
	}
	if(is_null($titre_pa)){
		$tab_erreur["titre_pa"] = $titre_pa;
	}
	if(is_null($texte_pa)){
		$tab_erreur["texte_pa"] = $texte_pa;
	}
	if(is_null($nom_pa)){
		$tab_erreur["nom_pa"] = $nom_pa;
	}
	
	//affichage du tableau d'erreurs si elles existent
	$nb_erreur = count($tab_erreur);
	if($nb_erreur > 0){
		echo $tab_erreur;
exit();
	}
	
		(string)$maj_photo  =  ""; 
if( !empty($nom_fichier) ) 
{ 
   $maj_photo  =  ",photo='$nom_fichier'"; 
} 

	
	$up="UPDATE petitesannonces SET date='$date_pa', titre='$titre_pa',texte='$texte_pa',prix='$prix_pa',debattre='$debattre_pa',nom='$nom_pa',email='$email_pa' $maj_photo WHERE id=$id_pa";
	echo $up;
	$resultat=mysql_query($up);
	if ($resultat){
		return true;
	}
	else {
		return false;
	}
}
voilà