[résolut] Problème lors de l'éxécution d'une requette
Posté : 17 févr. 2012, 03:41
Salutation à tous
Voici mon soucis.
D'après ceci:
Le hic c'est que cette requête ne fonctionne pas en php, alors qu'en sql directement via phpmyadmin, elle fonctionne:
Merci de votre aide, je suis à votre disposition pour d'éventuelles questions
Cordialement
Voici mon soucis.
D'après ceci:
<?php
//On supprime le post
$query=$cnx->prepare('DELETE FROM t_post WHERE post_id = :postid');
$query->bindValue(':postid',$postid,PDO::PARAM_INT);
$query->execute();
$query->CloseCursor();
//récupère l'id du plus récent message de ce topic
$query=$cnx->prepare('SELECT post_id
FROM t_post
WHERE topic_id = :topic
ORDER BY post_id DESC LIMIT 0,1');
$query->bindValue(':topic',$topic,PDO::PARAM_INT);
$query->execute();
$data=$query->fetch();
$topic_last_post=$data['post_id'];
$query->CloseCursor();
//récupère l'id du plus récent message de ce forum
$query=$cnx->prepare('SELECT post_id
FROM t_post
LEFT JOIN t_topic ON topic_last_post = post_id
WHERE forum_id = :forum
ORDER BY post_id DESC');
$query->bindValue(':forum',$forum,PDO::PARAM_INT);
$query->execute();
$data=$query->fetch();
$last_post_forum=$data['post_id'];
$query->CloseCursor();
//On met à jour la valeur de topic_last_post
$query=$cnx->prepare('UPDATE t_topic SET topic_last_post = :last WHERE topic_id = :topic');
$query->bindValue(':last',$topic_last_post,PDO::PARAM_INT);
$query->bindValue(':topic',$topic,PDO::PARAM_INT);
$query->execute();
$query->CloseCursor();
//On met à jour forum_last_post
$query=$cnx->prepare('UPDATE t_forum SET forum_last_post = :last WHERE forum_id = :forum');
$query->bindValue(':last',$last_post_forum,PDO::PARAM_INT);
$query->bindValue(':forum',$forum,PDO::PARAM_INT);
$query->execute();
$query->CloseCursor();
// on séléctionne les messages restants dans le topic
$nbpost=$cnx->prepare('SELECT post_id FROM t_post
WHERE topic_id = :topic ');
$nbpost->bindValue(':topic',$topic,PDO::PARAM_INT);
$nbpost->execute();
// si il n'y a plus de message
if ($nbpost->rowCount()==0)
{
// on efface le topic
$query=$cnx->prepare('DELETE FROM t_topic WHERE topic_id = :topic');
$query->bindValue(':topic',$topic,PDO::PARAM_INT);
$query->execute();
$query->CloseCursor();
//Enfin le message
echo'<p><span class="reussi">Le message ainsi que le topic ont bien étés supprimés !</span></p>
<script type="text/javascript">
<!--
setTimeout(function()
{
window.location.href = "./index.php";
},2000);
// -->
</script>';
}
//si le topic existe toujours
else
{
// on défini l'url de retour
$url="voirtopic?topicid='.$topic.'";
//Enfin le message
echo'<p><span class="reussi">Le message a bien été supprimé !</span></p>
<script type="text/javascript">
<!--
setTimeout(function()
{
window.location.href = "voirtopic?topicid='.$topic.'";
},2000);
// -->
</script>';
}
/* debug */echo $last_post_forum;
$nbpost->CloseCursor();
?>
Je devrais pouvoir effacer les message, et mettre a jours le denier message dans t_topic et t_forum.Le hic c'est que cette requête ne fonctionne pas en php, alors qu'en sql directement via phpmyadmin, elle fonctionne:
//récupère l'id du plus récent message de ce forum
$query=$cnx->prepare('SELECT post_id
FROM t_post
LEFT JOIN t_topic ON topic_last_post = post_id
WHERE forum_id = :forum
ORDER BY post_id DESC');
$query->bindValue(':forum',$forum,PDO::PARAM_INT);
$query->execute();
$data=$query->fetch();
$last_post_forum=$data['post_id'];
$query->CloseCursor();
Pourriez vous m'indiquer les éventuelles erreur svp, sachant que je ne récupère pas $last_post_forum, et que tout le reste fonctionne, même la MAJ de t_forum (tester en dur)Merci de votre aide, je suis à votre disposition pour d'éventuelles questions
Cordialement