par
BaLiSTiK » 21 juil. 2010, 10:04
Bonjour,
Dans le cadre du développement de mon CMS Blog, j ai ajouté un systême +/- sur les article (comme c'est la mode en ce moment ^^).
Ma requête fonctionne nickel sous PostgreSQL mais pas sous MySQL. J ai plus ou moins compris pourquoi, sauf que je ne sais pas comment la modifier pour rendre cette requete SQL compatible avec les 2 SGBD.
Le principe est que lorsque que quelqu'un clique sur (+) ou (-), j'incrémente de 1 le champ dans la table en sélectionnant dans une sous-requête, la valeur enregistrée.
Les requetes telles quelles, fonctionnant avec postgres :
UPDATE ffb_articles SET vote_plus = (SELECT vote_plus FROM ffb_articles where id_article = x)+1 WHERE id_article = x;
UPDATE ffb_articles SET vote_moins = (SELECT vote_moins FROM ffb_articles where id_article = x)+1 WHERE id_article = x;
Code PHP de ma méthode
$sql = 'UPDATE ' . PFX . 'articles SET ';
switch($type){
case 'plus' :
$sql .= 'vote_plus = (SELECT vote_plus FROM ' . PFX . 'articles where id_article = '. $this->__getIdArticle() . ')+1';
break;
case 'moins' :
$sql .= 'vote_moins = (SELECT vote_moins FROM ' . PFX . 'articles where id_article = '. $this->__getIdArticle() . ')+1';
break;
}
$sql .= ' WHERE id_article ='.$this->__getIdArticle();
Une des solutions seraient de faire une première requete récupérant la valeur dans les champs mais je suis pas tres fan, je préfère tout récupérer en une fois.
Merci d'avance ^^