Aller au contenu

Update et colonnes vides


furious Gontran

Sujets conseillés

Bonjour,

J'utilise Update pour les modifications de ma base.

Cependant je me trouve face a un epineux probleme:

Ca remplace les colonnes pleines par des colonnes vide si l'on n'inscris aucuns changements dans le formulaire...

Je pense que le null not null dans la base dois servir. mais je ne trouve pas comment dans ma doc.

J'ais vu la clause WHERE pour UPDATE mais je ne vois pas comment m'en servir.

Pouvez vous m'eclairez ?

Lien vers le commentaire
Partager sur d’autres sites

Salut,

Admettons que tu es une table membre ayant 3 champs :

ID -> numéro auto incrément et clé primaire

Nom -> varchar(30)

Prénom -> varchar(30)

Pour nom et prénom tu as défini la valeur 'null' par défaut.

Si tu fais :

update membre set nom = '', prenom = '' where id = 2

Nom et prénom auront pour valeur '' et pas null

Par contre, si tu fais :

update membre set nom = '' where id = 2

Nom aura pour valeur '' mais prenom aura pour valeur null.

Je sais pas trop si c'était ca ta question...

Portekoi

Lien vers le commentaire
Partager sur d’autres sites

Re,

L'update fait ce que tu lui dis. Donc, si tu lui dis,

- Je veux que la valeur de 'Nom' soit '' , il le fera :)

Maintenant, à toi de tester les valeurs en amont en fesant un truc du genre :

if ($nom)

{

$update = $update . " , nom = '" . $nom . "'"

}

if ($prenom)

{

$update = $update . " , prenom= '" . $prenom. "'"

}

Puis

$requete = "update membre set " . substr($update,0,3) . " where id = 2"

++

Portekoi

Lien vers le commentaire
Partager sur d’autres sites

Si tu veux absolument pas passer par les if lors du php, tu peux faire:

update membre set nom = '$nom' where '$nom' != '' AND id = 2

Mais c'est vraiment pas logique et beaucoup plus limité :/

Lien vers le commentaire
Partager sur d’autres sites

Et en mettant:

update membre set nom = '$nom' where nom != 'NULL' and id = 2

ça ne marche pas ?

<{POST_SNAPBACK}>

J'ai cru comprendre que c'est la nouvelle valeur qui ne doit pas être vide.De plus je crois que la valeur nulle ne doit pas être entourée d'apostrophes et de toute facon une chaine vide n'est pas considérée comme nulle :wacko:

Sinon je viens de découvrir un meilleur moyen que ce que j'avais écrit plus haut, il me semblait bizarre qu'il n'existe pas un equivalent de l'opérateur ? : sur sql, en fait il s'appèle if et on peut donc s'en servir dans cette situation:

UPDATE membre SET nom = IF ( '$nom' != '' , '$nom' , nom ) , prenom = IF ( '$prenom' != '' , '$prenom' , prenom ) WHERE id = 2

Attention nom est la valeur actuelle de l'enregistrement et '$nom' est la nouvelle valeur.

Mais en relisant le problème d'origine, je me demandes si il ne serait pas plus simple de remplir tous les champs par un script php, comme ça, l'utilisateur pourra voir l'ancienne valeur avant de la modifier et ce problème n'en est plus un :blink:

edit: aille les couleurs de mon sql sont assez bizarres :s pourtant je ne vois pas d'erreurs de syntaxes :wacko:

Modifié par Boo2M0rs0
Lien vers le commentaire
Partager sur d’autres sites

salut,

La plus simple des solutions à mon avis est de faire afficher tes valeurs dans ton formulaire:

exemple:

<input type='texte' value='<?php $sql[nom]; ?>'>

au moins, tu auras tes infos à coups sur !

by

Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

J'utilise Update pour les modifications de ma base.

Cependant je me trouve face a un epineux probleme:

Ca remplace les colonnes pleines par des colonnes vide si l'on n'inscris aucuns changements dans le formulaire...

Les changements du formulaire doivent être vérifiés avant l'insert dans la base de données.

Si tu as des colonnes de formulaire, tu verifies si elles sont vides ou pas. Si elles sont vides, effectivement, tu ne prends pas la peine d'aller dans la base de données pour les modifier. Tu renvoies le formulaire, avec un '

$text-error="Vous devez remplir tous les champs";

Si tous ls champs sont remplis, alors => base sql.

Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...