Effacer champs table

Résolu/Fermé
t671 Messages postés 1419 Date d'inscription lundi 25 février 2008 Statut Membre Dernière intervention 26 février 2024 - Modifié par t671 le 15/03/2012 à 19:24
t671 Messages postés 1419 Date d'inscription lundi 25 février 2008 Statut Membre Dernière intervention 26 février 2024 - 16 mars 2012 à 15:50
Bonjour,

Je veux effacer un champs d'une table mysql.
J'affiche un enregistrement avec ses champs.
Les champs, s'ils existent, s'affichent dans une "boîte", où l'on peut les modifier :
echo '<input name="date_naissance" type="text" id="date_naissance" value="'.$row['date_naissance'].'" size="40" maxlength="40"><br>';

Si le champs est vide, j'affiche différentes cases de choix pour définir le champs (choix par ascenseur) :
echo '<SELECT name="jour1"> 
  <OPTION VALUE=""></OPTION> 
  <OPTION VALUE="1">1</OPTION> 
  <OPTION VALUE="2">2</OPTION> 
  <OPTION VALUE="3">3</OPTION> ............... 


Si le champs existe, et que je veux l'effacer, je le sélectionne dans la boîte et "Suppr". Donc le champs est vide.
Par contre, au réaffichage de l'enregistrement, j'ai l'affichage d'une boîte vide, et non mes "différentes cases de choix".

Dans le script de maj de la base, je fais :
if (empty($date_naissance))          //***si date_naissance est vide 
{ 
$date_naissance = ("$nais_expression1 $nais_jour1 $nais_mois1 $nais_an1 $nais_expression2 $nais_jour2 $nais_mois2 $nais_an2");    //***date_naissance est formé par les différentes cases de choix, qui peuvent-être restées vides. 
$result=mysql_query("UPDATE individus SET date_naissance='$date_naissance', ............... 
} 


En fait, après suppression (vidage) d'un champs, celui-ci ne reste pas vraiment vide ! Il faudrait comme "initialiser" le champs pour le rendre vierge et qu'il soit reconnu "empty" !

Mais comment faire ?
Merci.

4 réponses

Bonsoir,

La valeur pour un champ vide en SQL n'est pas empty(c'est du php et non de la base de données) mais NULL(nul en anglais).


dariumius:
lors de la suppression tu place dans le champ 6654 et tu teste cette valeur.

Solution qui peut paraître valable mais oblige à alourdir le traitement(la présence au mieux d'une constante) alors qu'avec une valeur nulle il y a ce test mais pas besoin de 6654 qui ne veut rien dire et doit être retenu par PHP obligeant à du code inutile.
Le champ de la date de naissance doit autoriser ne valeur nulle.
1
t671 Messages postés 1419 Date d'inscription lundi 25 février 2008 Statut Membre Dernière intervention 26 février 2024 11
16 mars 2012 à 10:27
OK !!! Encore une fois, merci à vous tous ! ;o)

J'ai déclarer dans ma bd que le champs date_naissance (en varchar) pouvait être NULL. Je le teste, et s'il est vide ou qu'il n'existe pas, je lui affecte la valeur NULL.
Et avec cela ça fonctionne !

Par contre, je n'ai pas compris votre proposition d'affecter la valeur 6654 !!!???
Je pensais que cette valeur forçait le "clear" du champs, mais celle-ci reste une valeur réel !

Bref, encore merci à vous !!!!

A +
1
dariumis Messages postés 571 Date d'inscription mardi 16 mars 2010 Statut Membre Dernière intervention 18 avril 2018 63
Modifié par dariumis le 15/03/2012 à 22:03
Salut, ça vient effectivement du fait que le champs n'est pas vide, tu peux peut être mettre une valeur par défaut lors de la suppression pour pouvoir la tester par la suite. Je ne sait pas de quel type est le champs qui stock la date de naissance mais par exemple, lors de la suppression tu place dans le champ 6654 et tu teste cette valeur:
if ($date_naissance==6654){//......}  
0
t671 Messages postés 1419 Date d'inscription lundi 25 février 2008 Statut Membre Dernière intervention 26 février 2024 11
16 mars 2012 à 15:50
Le champs est défini en "varchar" dans la bd. Donc, la valeur NULL ne fonctionne pas vraiment (je pense que c'est pour cela).
Par contre, si le champs est nul (vide), je vais effectivement essayer en lui affectant une valeur quelconque (exemple 6654).
0