Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & MySQL
PHP & MySQL Forum d'entraide sur les fonctions MySQL avec PHP. Avant de poster -> FAQ MySQL, Cours MySQL et Sources MySQL. Pour les questions concernant le moteur MySQL plutôt que les fonctions PHP, merci d'utiliser le forum MySQL.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 03/06/2011, 19h48   #1
Nouveau Membre du Club
 
Homme
Inscription : décembre 2009
Messages : 144
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : décembre 2009
Messages : 144
Points : 30
Points : 30
Par défaut Update avec 2 conditions

Bonjour,

Je souhaites updater une table, mais voilà je dois faire un update en tenant compte du "Transaction_ID" et de la "Category".
Le code ci-dessous affiche bien ma table mais ne modifie rien, pourriez vous m'orienter. Merci par avance

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 
//Query
$affiche= "SELECT * FROM Details ORDER BY Category ASC";
//Execution Query
$res=mysql_query($affiche);		
while($li=mysql_fetch_assoc($res)){		
echo "<tr>
<td name='txtcategory'>".$li['Category']."</td>
<td name='txtvalue'><input class='norm' size='10' name='txtvalue' value=".$li['Value']."></td>
</tr>";
}
//Update Query
$sql = "UPDATE `details` SET   `Value` =  '{$_POST['txtvalue']}' 
WHERE `Transaction_ID` = '1' AND `Category` = '{$_POST['txtcat']}' "; 				
mysql_query($sql) or die(mysql_error()); 
echo (mysql_affected_rows()) ? "Modifications effectuees.<br />" : "Aucune modification n'a ete enregistree <br />";
?>
Budy123 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/06/2011, 20h07   #2
Membre régulier
 
Avatar de 2h15Crew
 
Homme Valentin
Étudiant
Inscription : mai 2011
Messages : 79
Détails du profil
Informations personnelles :
Nom : Homme Valentin
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : mai 2011
Messages : 79
Points : 97
Points : 97
Ton attribut Transaction_ID c'est ta clé primaire ?
2h15Crew est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/06/2011, 20h10   #3
Rédacteur/Modérateur
 
Avatar de MaitrePylos
 
Homme Gérard Ernaelsten
DBA & Dev PHP
Inscription : juin 2005
Messages : 3 174
Détails du profil
Informations personnelles :
Nom : Homme Gérard Ernaelsten
Âge : 39
Localisation : Belgique

Informations professionnelles :
Activité : DBA & Dev PHP
Secteur : Service public

Informations forums :
Inscription : juin 2005
Messages : 3 174
Points : 6 460
Points : 6 460
Bonjour,

D'où vient le ?
MaitrePylos est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/06/2011, 20h11   #4
Nouveau Membre du Club
 
Homme
Inscription : décembre 2009
Messages : 144
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : décembre 2009
Messages : 144
Points : 30
Points : 30
Oui c'est la clé primaire.
Et je souhaites updater chaque valeur des lignes (ex: A, B, C) de la transaction_ID "1" par exemple.
Budy123 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/06/2011, 20h14   #5
Membre régulier
 
Avatar de 2h15Crew
 
Homme Valentin
Étudiant
Inscription : mai 2011
Messages : 79
Détails du profil
Informations personnelles :
Nom : Homme Valentin
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : mai 2011
Messages : 79
Points : 97
Points : 97
Si c'est ta clé primaire, pourquoi utiliser deux conditions dans ta requête ?
2h15Crew est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/06/2011, 20h16   #6
Nouveau Membre du Club
 
Homme
Inscription : décembre 2009
Messages : 144
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : décembre 2009
Messages : 144
Points : 30
Points : 30
le est le noim de mon input afin de récuprer la valeur de cette input après modification.
Budy123 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/06/2011, 20h18   #7
Nouveau Membre du Club
 
Homme
Inscription : décembre 2009
Messages : 144
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : décembre 2009
Messages : 144
Points : 30
Points : 30
2h15Crew,

J'utilise deux condtion dans ma requete car j'ai plusieur ligne à updater sur un meme Transaction_ID:
exemple:

Transaction_ID Category Value
1 A 8
1 B 9
1 C 5
Budy123 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/06/2011, 20h23   #8
Membre régulier
 
Avatar de 2h15Crew
 
Homme Valentin
Étudiant
Inscription : mai 2011
Messages : 79
Détails du profil
Informations personnelles :
Nom : Homme Valentin
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : mai 2011
Messages : 79
Points : 97
Points : 97
Donc Transaction_ID n'est pas ta clé primaire...
Par défaut la clé primaire est unique.

Soit tu te facilites la vie et tu ajoutes un attribut clé primaire unique (pas une clé primaire composée de plusieurs attributs) et à ce moment là, tu auras une unique condition dans ta requête.

Sinon, tu as vérifié que la valeur de ton
était correcte ?
2h15Crew est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/06/2011, 20h39   #9
Nouveau Membre du Club
 
Homme
Inscription : décembre 2009
Messages : 144
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : décembre 2009
Messages : 144
Points : 30
Points : 30
Non, comment je peu la vérifier?
ca doit etre pour cela que j'ai un message d'erreur.
Citation:
Notice: Undefined index: txtcat in C:\wamp\www\DRS\Main\UDFDetail.php on line 72
Budy123 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/06/2011, 20h43   #10
Membre régulier
 
Avatar de 2h15Crew
 
Homme Valentin
Étudiant
Inscription : mai 2011
Messages : 79
Détails du profil
Informations personnelles :
Nom : Homme Valentin
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : mai 2011
Messages : 79
Points : 97
Points : 97
Tu peux la vérifier comme ça :
2h15Crew est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/06/2011, 20h45   #11
Nouveau Membre du Club
 
Homme
Inscription : décembre 2009
Messages : 144
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : décembre 2009
Messages : 144
Points : 30
Points : 30
Il me lmet le meme message d'erreur.
Citation:
Notice: Undefined index: txtcat in C:\wamp\www\DRS\Main\UDFDetail.php on line 73
Budy123 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/06/2011, 20h46   #12
Membre régulier
 
Avatar de 2h15Crew
 
Homme Valentin
Étudiant
Inscription : mai 2011
Messages : 79
Détails du profil
Informations personnelles :
Nom : Homme Valentin
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : mai 2011
Messages : 79
Points : 97
Points : 97
Met le echo avant d'executer la requête qui fait planter
2h15Crew est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/06/2011, 20h50   #13
Nouveau Membre du Club
 
Homme
Inscription : décembre 2009
Messages : 144
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : décembre 2009
Messages : 144
Points : 30
Points : 30
Meme résultat!
Budy123 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/06/2011, 20h54   #14
Rédacteur/Modérateur
 
Avatar de MaitrePylos
 
Homme Gérard Ernaelsten
DBA & Dev PHP
Inscription : juin 2005
Messages : 3 174
Détails du profil
Informations personnelles :
Nom : Homme Gérard Ernaelsten
Âge : 39
Localisation : Belgique

Informations professionnelles :
Activité : DBA & Dev PHP
Secteur : Service public

Informations forums :
Inscription : juin 2005
Messages : 3 174
Points : 6 460
Points : 6 460
Citation:
Envoyé par Budy123 Voir le message
le est le noim de mon input afin de récuprer la valeur de cette input après modification.

Ok et il se trouve où

Code :
1
2
3
4
5
6
7
 
while($li=mysql_fetch_assoc($res)){		
echo "<tr>
<td name='txtcategory'>".$li['Category']."</td>
<td name='txtvalue'><input class='norm' size='10' name='txtvalue' value=".$li['Value']."></td>
</tr>";
}
MaitrePylos est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/06/2011, 22h51   #15
Nouveau Membre du Club
 
Homme
Inscription : décembre 2009
Messages : 144
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : décembre 2009
Messages : 144
Points : 30
Points : 30
Autant pour moi je l'avais pas mis à jour, j'a
Budy123 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/06/2011, 22h55   #16
Nouveau Membre du Club
 
Homme
Inscription : décembre 2009
Messages : 144
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : décembre 2009
Messages : 144
Points : 30
Points : 30
Autant pour moi j'avais modifié le code et je ne l'ais pas mis à jour, il s'agit en fait du $_POST['txtcategory']
Le code mis à jour, mais qui ne fonctionne toujours pas.
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 
<?php 
//Query
$affiche= "SELECT * FROM Details ORDER BY Category ASC";
//Execution Query
$res=mysql_query($affiche);		
while($li=mysql_fetch_assoc($res)){		
echo "<tr>
<td name='txtcategory'>".$li['Category']."</td>
<td name='txtvalue'><input class='norm' size='10' name='txtvalue' value=".$li['Value']."></td>
</tr>";
}
echo $_POST['txtcategory'];
//Update Query
$sql = "UPDATE `details` SET   `Value` =  '{$_POST['txtvalue']}' 
WHERE `Transaction_ID` = 1 AND `Category` = '{$_POST['txtcategory']}' "; 
echo $sql;
mysql_query($sql) or die(mysql_error()); 
echo (mysql_affected_rows()) ? "Modifications effectuees.<br />" : "Aucune modification n'a ete enregistree <br />";
?>
Budy123 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/06/2011, 23h14   #17
Nouveau Membre du Club
 
Homme
Inscription : décembre 2009
Messages : 144
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : décembre 2009
Messages : 144
Points : 30
Points : 30
Je dois avoir un soucis avec ma boucle, en théorie je devrais obtenir autant de ligne d'update que j'ai de category dans un meme numéro de Transaction_ID
Exemple:
Citation:
UPDATE `details` SET `Value` = '99' WHERE `Transaction_ID` = 1 AND `Category` = 'A';
UPDATE `details` SET `Value` = '97' WHERE `Transaction_ID` = 1 AND `Category` = 'B';
UPDATE `details` SET `Value` = '955' WHERE `Transaction_ID` = 1 AND `Category` = 'C';
Or je n'ai qu'une seul ligne qui s'affiche:
Citation:
UPDATE `details` SET `Value` = '8' WHERE `Transaction_ID` = 1 AND `Category` = ''
De plus la valeur "Value" récupérer ne correspond pas à la modif faite dans le champs input.
Budy123 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/06/2011, 00h17   #18
Membre émérite
 
Avatar de alain31tl
 
Alain
Inscription : novembre 2005
Messages : 897
Détails du profil
Informations personnelles :
Nom : Alain
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : novembre 2005
Messages : 897
Points : 910
Points : 910
Salut

Citation:
Envoyé par Budy123 Voir le message
Je dois avoir un soucis avec ma boucle, en théorie je devrais obtenir autant de ligne d'update que j'ai de category dans un meme numéro de Transaction_ID....
Non puisque ton update est isolé, et non pas dans ta boucle while de ta première requête.

Code :
1
2
3
4
5
6
7
while($li=mysql_fetch_assoc($res)){		
/////
/////
////
 
=>Update.....
}
Ensuite, est-ce normal que le nom de ta table soit différente dans tes 2 requêtes ?
=> Details
=> details
__________________
Ce n'est pas parce que les choses sont difficiles qu'on n'ose pas les entreprendre.
C'est parce qu'on n'ose pas les entreprendre qu'elles sont difficiles.
alain31tl est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/06/2011, 00h24   #19
Nouveau Membre du Club
 
Homme
Inscription : décembre 2009
Messages : 144
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : décembre 2009
Messages : 144
Points : 30
Points : 30
Bonsoir alain31tl,

Oui effectivement, en cherchant à droite à gauche je commprends qu'effectivement il n'y a pas de boucle dans mon update, je pense devoir utiliser un foreach, mais j'avoue ne pas trops savoir comment faire.
Pour le nom de la table elle s'écrit bien "details" c'est une erreur de ma part, mais visiblement le système ne m'en tiens pas rigeur, ca fonctionne avec les 2 ortographes
Budy123 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/06/2011, 00h28   #20
Membre émérite
 
Avatar de alain31tl
 
Alain
Inscription : novembre 2005
Messages : 897
Détails du profil
Informations personnelles :
Nom : Alain
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : novembre 2005
Messages : 897
Points : 910
Points : 910
En réalité et tel que tu as composé, c'est le dernier enregistrement de ta boucle qui est pris en compte par ton Update.
Cette requête, puisqu'isolée ne peut se souvenir que des dernières variables traitées.

Je crois que tu n'as pas compris.
Mais pourquoi tu ne fais pas comme je te l'ai suggéré ?
__________________
Ce n'est pas parce que les choses sont difficiles qu'on n'ose pas les entreprendre.
C'est parce qu'on n'ose pas les entreprendre qu'elles sont difficiles.
alain31tl est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 18h36.


 
 
 
 
Partenaires

Hébergement Web