UPDATE avec plusieurs WHERE [Résolu]

Messages postés
9
Date d'inscription
dimanche 30 mars 2008
Statut
Membre
Dernière intervention
20 janvier 2010
- - Dernière réponse : darxen
Messages postés
9
Date d'inscription
dimanche 30 mars 2008
Statut
Membre
Dernière intervention
20 janvier 2010
- 13 janv. 2010 à 13:54
Bonjour,

J'aimerai optimiser mon nombre de requête a la base de donnée et je suis face un a probleme avec ma condition WHERE dans mon update.


Voici la version optimisé qui ne fonctionne pas:

$param = $_GET['param'];

$chaque_get = explode(",", $param );
$max = count( $chaque_get );

$i = 0;
$where = '';

while ($i<$max){
$where .'idEntretien '.$chaque_get[$i]. ' AND ';
$i++;
}
$where = substr($where, 0, -4);


$up = "UPDATE entretiens SET datePlannificationDebut='$DateDebut' , datePlannificationFin='$DateFin' , idTecPlannification = '$tech' WHERE $where ";
$query = mysql_query($up) or die (mysql_error());

Pour info : $param = 2,3

echo $up vaut : UPDATE entretiens SET datePlannificationDebut='2010-01-13' , datePlannificationFin='2010-01-20' , idTecPlannification = '5' WHERE idEntretien = 2 AND idEntretien = 3



Voici la version non optimisé qui fonctionne :




while ($i<$max){

$up = "UPDATE entretiens SET datePlannificationDebut='$DateDebut' , datePlannificationFin='$DateFin' , idTecPlannification = '$tech' WHERE idEntretien = '$chaque_get[$i]' ";
$query = mysql_query($up) or die (mysql_error());
$i++;
}


Ce while me fait des requete en boucle avec idEntretien 2 / idEntretien 3 ....etc (ce qui fonctionne très bien risque de générer bcp de requête par la suite)



Comme vous l'aurez compris si j'utilise plusieurs WHERE dans mon update, ça ne fonctionne pas.

S'agit il d'une erreur de syntaxe de ma part ?

Votre aide est la bien venu en tout cas.

Merci d'avance
Afficher la suite 

4 réponses

Meilleure réponse
Messages postés
197
Date d'inscription
mardi 20 janvier 2004
Statut
Membre
Dernière intervention
20 février 2013
1
3
Merci
bonjour,

peut être en remplacant WHERE idEntretien 2 AND idEntretien 3 par WHERE idEntretien = 2 OR idEntretien = 3. Avec un AND les 2 conditions doivent être bonnes, mais comment un champ peut-il être à la fois à la valeur 2 ET 3 ?


bonne journée

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 127 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_47
Messages postés
129
Date d'inscription
mercredi 16 février 2005
Statut
Membre
Dernière intervention
15 février 2010
4
0
Merci
echo $up vaut : UPDATE entretiens SET datePlannificationDebut= '2010-01-13' , datePlannificationFin='2010-01-20' , idTecPlannification = '5' WHERE idEntretien = 2 AND idEntretien = 3

Je vois ce que tu aimerais obtenir mais c'est impossible à faire de cette façon.
C'est pas logique d'ailleurs...
Si tu veux modifier idEntretien 2 et idEntretien 3, tu devras faire 2 requêtes.

En espérant avoir répondu à ta question, bonne continuation :)

___________________
Pyrrah
H4ck3r vaillant, rien d'impossible.
Si le problème est résolu, n'oubliez pas de cliquer sur "Problème résolu !". Merci !
Commenter la réponse de Pyrrah
Messages postés
129
Date d'inscription
mercredi 16 février 2005
Statut
Membre
Dernière intervention
15 février 2010
4
0
Merci
Puis j'ajoute à propos de :


Voici la version non optimisé qui fonctionne :

while ($i<$max){

$up = "UPDATE entretiens SET datePlannificationDebut='$DateDebut' , datePlannificationFin='$DateFin' , idTecPlannification = '$tech' WHERE idEntretien = '$chaque_get[$i]' ";
$query = mysql_query($up) or die (mysql_error());
$i++;
}


Ce while me fait des requete en boucle avec idEntretien 2 / idEntretien 3 ....etc (ce qui fonctionne très bien risque de générer bcp de requête par la suite)


Dans le pire des cas, tu pourras utiliser la fonction sleep(); (très utile, regarde dans le manuel PHP)

____________________
Pyrrah
H4ck3r vaillant, rien d'impossible.
Si le problème est résolu, n'oubliez pas de cliquer sur "Problème résolu !". Merci !
Commenter la réponse de Pyrrah
Messages postés
9
Date d'inscription
dimanche 30 mars 2008
Statut
Membre
Dernière intervention
20 janvier 2010
0
Merci
En effet j'aurai du utiliser un OR

Merci pour votre aide.
Commenter la réponse de darxen