par
YADev » 07 juil. 2012, 19:52
Bonjour,
Dans une requête SQL, je dois mettre à jour un champ.
Dans ma clause WHERE, je dois dire "si l'ID est égal à". Rien de difficile :
WHERE poll_option_id = $row['poll_option_id']
Mais il se trouve qu'il ne s'agit pas d'un seul ID, j'en récupère plusieurs (6, 78, 34, ...) et j'aimerais savoir comment faire pour exécuter cette requête en les prenant tous en compte. On peux pas faire WHERE = 6,78,43 et quand je fais une boucle while ça marche pas...
$sql = 'SELECT poll_option_id
FROM ' . POLL_VOTES_TABLE . "
WHERE topic_id = '" . (int) $topic . "' AND vote_user_id = '" . (int) $supp . "'";
$result = $db->sql_query($sql);
while ($row = $db->sql_fetchrow($result))
{
$sql_change = 'UPDATE ' . POLL_OPTIONS_TABLE . ' o, ' . TOPICS_TABLE . " t
SET o.poll_option_total = o.poll_option_total -1, t.poll_last_vote = 0, t.poll_vote_change = 0
WHERE o.topic_id = '" . (int) $topic . "'
AND o.poll_option_id = '" . (int) $row['poll_option_id'] . "'
AND t.topic_id = '" . (int) $topic . "'";
$result_change = $db->sql_query($sql_change);
$db->sql_freeresult($sql_change);
}
Une idée ?

Bonjour,
Dans une requête SQL, je dois mettre à jour un champ.
Dans ma clause WHERE, je dois dire "si l'ID est égal à". Rien de difficile : [i]WHERE poll_option_id = $row['poll_option_id'][/i]
Mais il se trouve qu'il ne s'agit pas d'un seul ID, j'en récupère plusieurs (6, 78, 34, ...) et j'aimerais savoir comment faire pour exécuter cette requête en les prenant tous en compte. On peux pas faire WHERE = 6,78,43 et quand je fais une boucle while ça marche pas...
[php] $sql = 'SELECT poll_option_id
FROM ' . POLL_VOTES_TABLE . "
WHERE topic_id = '" . (int) $topic . "' AND vote_user_id = '" . (int) $supp . "'";
$result = $db->sql_query($sql);
while ($row = $db->sql_fetchrow($result))
{
$sql_change = 'UPDATE ' . POLL_OPTIONS_TABLE . ' o, ' . TOPICS_TABLE . " t
SET o.poll_option_total = o.poll_option_total -1, t.poll_last_vote = 0, t.poll_vote_change = 0
WHERE o.topic_id = '" . (int) $topic . "'
AND o.poll_option_id = '" . (int) $row['poll_option_id'] . "'
AND t.topic_id = '" . (int) $topic . "'";
$result_change = $db->sql_query($sql_change);
$db->sql_freeresult($sql_change);
}[/php]
Une idée ? :(