Aller au contenu

Update sur plusieurs lignes au champs identiques


iiifff

Sujets conseillés

Bonsoir,

Est-ce qu'il possible de mettre à jour une série de champs en un seul update ?

C'est à dire j'ai une table avec plusieurs lignes qui ont les mêmes champs: numero.

exemple: id=1, numero=10, nom=paul, prénom=pierre, valide=non

id=2, numero=10, nom=dupont, prénom=michel, valide=non

id=3, numero=12, nom= durand, prénom=paul, valide=non

un formulaire envoie les champs: valide et numero

Donc, est-il possible de mettre à jour la table avec une requête du type

mysql_db_query($sql_bdd,"UPDATE table SET valide='$valide' WHERE numero='$num",$db_link);

le but étant par exemple de mettre à jour les lignes dont le numero=10, en une seule fois ?

(chuis pas sûre que j'arrive à être assez clair là... :whistling: )

Avec ce que j'ai fait, le champ ne se met pas à jour, mais il devient vide...

MERCI :)

Lien vers le commentaire
Partager sur d’autres sites

S'il devient vide, c'est qu'il se met à jour :D

Seulement, les données que tu envoies ne sont pas celles que tu crois.

Il faudrait voir du coté de la variable $valide, ce qu'elle renvoie. Elle est peut etre vide.

Affiches ta requète, au lieu de l'envoyer à la base de données, tu auras peut etre des surprises.

Anonymus.

Lien vers le commentaire
Partager sur d’autres sites

...

C'est à dire j'ai une table avec plusieurs lignes qui ont les mêmes champs: numero.

...

Donc, est-il possible de mettre à jour la table avec une requête du type

mysql_db_query($sql_bdd,"UPDATE table SET valide='$valide' WHERE numero='$num",$db_link);

le but étant par exemple de mettre à jour les lignes dont le numero=10, en une seule fois ?

...

MERCI :)

<{POST_SNAPBACK}>

Salut,

1) Oui ta requète est bien conçue pour mettre à jour TOUTES les lignes ayany la colonne numero à 10.

2) Je crois avoir repéré une erreur dans ta requète : tu mets une apostrophe devant le champ numero (pourquoi d'ailleurs ? c'est un nombre), que tu ne refermes pas (tu ne refermes que la double quote de début de chaîne.

Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

Oui, il y a avait bien une erreur se syntaxe dans la déclaration de la variable "valide".

Excusez-moi, je n'ai pas le code exact sous les yeux maintenant, mais je cherche juste à savoir si ce que je veux faire est possible et quel genre de méthode je dois chercher.

Car en fais en fait c'est quelque chose de plus compliqué que je cherche à faire.

Si on rajoute deux champs sur cette table -table-

id=1, nom=paul, prénom=pierre, valide=oui, numero_film1=10, rest=1

id=2, nom=paul, prénom=pierre, valide=oui, numero_film1=11, rest=5

id=2, nom=dupont, prénom=michel, valide=non, numero_film1=12, rest=3

est il possible de mettre à jour une autre table -quantite-, "en cascade" , qui aurait les champs:

id=1, titre=Brazil, description= etc...,quantite: 10, numero_film= 10

id=2,titre=Le sens de la vie, description=etc, quantite:8, numero_film= 11

id=3,titre=La vie de Brian, description=etc...,quantite=10, numero_film= 12

Donc je voudrai créer un update que remplace quantite par $rest where numero_film=numero_film1 là où dans table valide=oui

Donc un truc du genre:

select dans table where valide=oui

while ...

{numero_film1=$data[numero_film1];

rest=$data[rest];

update quantite set quantite=$rest where valide=oui and numero_film=numero_film1;}

j'ai peur que cette requete mette partout un seul et même $rest et pas les $rest correspondant au $numero_film

N'y a-t-il pas moyen de créer des relations entre table au niveau mysql ?

:blink:

Merci

Lien vers le commentaire
Partager sur d’autres sites

1) Il y a moyen de créer des relations entre des tables : c'est le principe de la base de dnnées et ce n'est pas spécifique à MySql. On peut même faire que la modification d'une table influe sur une autre (cf tables InnoDB par exemple)

2) Ca devrait donner un truc du genre (pas testé) :

update film set quantite = pe.rest 
from film fi inner join persone pe on pe.numero_film1 = fi.numero_film
where pe.valide = 'oui'

Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

Finalement je m'en suis sortie sans inner join, en imbriquant plusieurs while , remontant différents champs un à un (i, puis i+1, etc...) et en limitant le nombre de résultats updatés.

La requête est sans doute plus lourde à traiter, mais bon pour l'instant ça suffira.

Merci en tout cas de m'avoir orienté vers le "inner join", que je vais étudier parce que ça m'a l'air très pratique.

Bonnes fêtes à tous. :)

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