Page 1 sur 1

UPDATE d'un champ checkbox

Posté : 18 nov. 2008, 15:35
par Nad21
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

Posté : 18 nov. 2008, 15:37
par yaug
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 ?

Posté : 18 nov. 2008, 15:51
par AB

Posté : 18 nov. 2008, 15:52
par Nad21
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??

Posté : 18 nov. 2008, 15:58
par AB
As-tu lu le lien que je t'ai donné jusqu'au bout ?

Posté : 18 nov. 2008, 16:09
par Nad21
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

Posté : 18 nov. 2008, 16:14
par yaug
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.

Posté : 18 nov. 2008, 16:41
par Nad21
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";
}

Posté : 18 nov. 2008, 16:47
par yaug
peux tu montrer l'ensemble du code html et l'ensemble du code php?
Cela sera surement plus simple pour t'aider.
Merci.

Posté : 18 nov. 2008, 16:56
par Nad21
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à