Version complète: sur le forum Webmaster Hub : Update et colonnes vides
Webmaster Hub > Création et exploitation de Sites Internet > Les langages du Net > PHP
furious Gontran
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 ?
Portekoi
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
furious Gontran
C'est un debut de reponse.

En fait comment faire pour que l'update se dise: je n'ais rien a modifié (la valeur='') donc je ne modifis rien.

Je suis obligé de passer par des if ?
Portekoi
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 smile.gif

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
Boo2M0rs0
Si tu veux absolument pas passer par les if lors du php, tu peux faire:

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


Mais c'est vraiment pas logique et beaucoup plus limité :/
Dan
Et en mettant:
SQL
update membre set nom = '$nom' where nom != 'NULL' and id = 2


ça ne marche pas ?
Boo2M0rs0
CITATION(Dan @ vendredi 10 juin 2005, 18h05)
Et en mettant:
SQL
update membre set nom = '$nom' where nom != 'NULL' and id = 2


ça ne marche pas ?
*

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.gif

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:
SQL
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.gif

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

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

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


au moins, tu auras tes infos à coups sur !

by
Anonymus
CITATION(furious Gontran @ vendredi 10 juin 2005, 15h51)
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 '
CODE
$text-error="Vous devez remplir tous les champs";

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

je pensais qu'il etait possible de faire ca simplement en SQL...
Mais maintenant que j'ais des if $valeur !="" partout ca marche...
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'information, la mise en page et les images, veuillez cliquer ici.