Effacer champs table

Résolu
t671 Messages postés 1476 Date d'inscription   Statut Membre Dernière intervention   -  
t671 Messages postés 1476 Date d'inscription   Statut Membre Dernière intervention   -
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.
A voir également:

4 réponses

Bhurigan
 
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 1476 Date d'inscription   Statut Membre Dernière intervention   11
 
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   Statut Membre Dernière intervention   63
 
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 1476 Date d'inscription   Statut Membre Dernière intervention   11
 
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