[résolut] Problème lors de l'éxécution d'une requette

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [résolut] Problème lors de l'éxécution d'une requette

Re: Problème lors de l'éxécution d'une requette

par Fre3z69 » 17 févr. 2012, 06:09

finalement résolut, après m'avoir pris la tête 3 heures et chercher tout ce que je pouvez constater, je me suis apperçu que ma requete fonctionnait quand je supprimer des messages antérieurs au dernier, mais pas si je supprimer le dernier.

J'ai mal agencer cette dernière, de ce fait j'ai du la refaire.

La voici, si ça peux aider à comprendre certaines erreur:
	//récupère l'id du plus récent message de ce forum
	$lastforum=$cnx->prepare('SELECT post_id 
	FROM t_post 
	LEFT JOIN t_topic ON t_post.topic_id = t_topic.topic_id
	LEFT JOIN t_forum ON t_topic.forum_id = t_forum.forum_id
	WHERE t_forum.forum_id = :forum 
	ORDER BY post_id DESC LIMIT 0,1');
	$lastforum->bindValue(':forum',$forum,PDO::PARAM_INT);
	$lastforum->execute();
	$data=$lastforum->fetch();
	$last_post_forum=$data['post_id'];
	$lastforum->CloseCursor(); 
Voila, comme quoi à force de persévérance, on y arrive.

Comme dit l'adage, Confronté à la roche, le ruisseau l'emporte toujours, non par la force mais par la persévérance.

Cordialement

[résolut] Problème lors de l'éxécution d'une requette

par Fre3z69 » 17 févr. 2012, 03:41

Salutation à tous

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