Probléme d'éxécution

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 : Probléme d'éxécution

par angebleu17 » 01 mars 2007, 15:13

Merci beaucoup, c'était bien ça... :wink:
je met le post en résolu !

par Truc » 01 mars 2007, 13:11

Salut,

Tu effectue les opération de modification de position après l'affichage des données.
Inverse les deux blocs "affichage", "traitement action"

Probléme d'éxécution

par angebleu17 » 01 mars 2007, 12:11

Bonjour,

J'ai enfin réussi a créer un code qui permet de monter ou decendre des questions. Par exemple :
Question 1 priorite = 3 (priorite correspond a la position de la question)
Question 2 priorite = 4

si je monte la question 2, sa priorite sera de 3, et la question 1 sa priorite sera de 4.

Le problème c'est que je dois cliquer deux fois pour monter pour que ça marche et pareil pour descendre ! mais je ne comprend pas trop pourquoi !! je vous met mon code :
<?
//Page de connexion
include('connexion.php');  // Appelle la page connexion

//Connexion 
$cn = mysql_connect($host,$user,$pass);
if (!$cn) echo mysql_error();

mysql_select_db($bdd); 

// Je récupére l'id du sondage choisi
if(isset($_GET['id2']))      		$id_sondage=$_GET['id2'];
else      $id_sondage="";

//Récupére l'action
if(isset($_GET['action']))      		$action=$_GET['action'];
else      $action="";

mysql_select_db($bdd); 

//Requete pour compter le nombre de questions suivant le sondage choisi
$requete2 = "SELECT count(id_question) FROM question WHERE id_sondage = '$id_sondage'";	
$resultat2 = mysql_query($requete2) or die ('Erreur SQL : impossible d\'effectuer la requête : <br />'.$requete2);
$total = mysql_num_rows($resultat2);
if ($total) 
{
	while($val= mysql_fetch_array($resultat2)) 
	{
	$nb_question = $val['count(id_question)'];
	}


//Afficher la liste des questions
$sql = "SELECT * FROM question WHERE id_sondage = '$id_sondage' ORDER BY priorite ASC ";	

$req = mysql_query($sql); 

$total = mysql_num_rows($req);

if ($total == 0)
	{
	echo'<u><p>Il n\'y a aucune question</p></u>';
	}
	elseif ($total > 0)
		{
		echo '<table border=0 ALIGN="CENTER"  CELLPADDING="0" CELLSPACING="1" class="admtable" >';

		//Affiche les titres des colonnes
		echo "<tr><th>ID</th><th>Titre</th><th>Modifier</th><th>Position</th></tr>";
		// on recupere le resultat sous forme d'un tableau
			while($valeur = mysql_fetch_array($req))
			{
			
			$id_question= $valeur['id_question'];
			$titre_question= $valeur['titre_question'];
			$priorite= $valeur['priorite'];		
			
			//Affiche les données sous forme de tableau
			echo'<tr><td width="150" align="center" class="fondgris">'.$id_question.'</td>
			<td width="150" align="center" class="fondgris">'.$titre_question.'</td>
			<td class="fondblanc"><a href="'.$_SERVER['PHP_SELF'].'?id='.$id_question.'&id2='.$id_sondage.'&position='.$priorite.'&action=plus">Monter</a> <a href="'.$_SERVER['PHP_SELF'].'?id='.$id_question.'&id2='.$id_sondage.'&position='.$priorite.'&action=moins">Descendre</a></td><td align ="center"class="fondblanc">'.$priorite.'</a></td></tr>';
			}
		}
			
//si l'action est de monter		
	if ($action == 'plus') 
	{
	//on récupére la position, et l'id du sondage et de la question
	if(isset($_GET['position']))      		$position=$_GET['position'];
	else      $position="";

	if(isset($_GET['id2']))      		$id_sondage=$_GET['id2'];
	else      $id_sondage="";

	if(isset($_GET['id']))      		$id_question=$_GET['id'];
	else      $id_question="";

		if ($position > 1 )
		{
		$position_moins = $position - 1;
		//Met a jour la table question donc - 1 a la priorite
		$sql3 = "UPDATE question SET priorite = '$position_moins' WHERE id_question = '$id_question' AND id_sondage = '$id_sondage'";

		//Récupére l'id de la question ou on fait + 1
		$requete2 = "SELECT * FROM question WHERE id_sondage = '$id_sondage' AND priorite = '$position_moins'";	
		$resultat2 = mysql_query($requete2) or die ('Erreur SQL : impossible d\'effectuer la requête : <br />'.$requete2);

		while($row = mysql_fetch_array($resultat2)) 
			{
			$id = $row[0];
			}


	 $sql4 = "UPDATE question SET priorite = '$position' WHERE id_question = '$id' AND id_sondage = '$id_sondage'";
	//Exécute les requête
	$req4 = mysql_query($sql4); 
	$req3 = mysql_query($sql3);
		}
			//sinon affiche message
			else
			{
			echo'<p></p>';
			echo '<table><tr></tr><tr><TD align ="left" valign="center"><u>La question est au maximum</td></u></tr></table>';
			}
		
	}	
	
	//Pareil pour moins
	if ($action == 'moins') 
	{

	if(isset($_GET['position']))      		$position=$_GET['position'];
	else      $position="";

	if(isset($_GET['id2']))      		$id_sondage=$_GET['id2'];
	else      $id_sondage="";

	if(isset($_GET['id']))      		$id_question=$_GET['id'];
	else      $id_question="";

		if ($position < $nb_question )
		{
		$position_plus = $position + 1;
		
		$sql3 = "UPDATE question SET priorite = '$position_plus' WHERE id_question = '$id_question' AND id_sondage = '$id_sondage'";

		$requete2 = "SELECT * FROM question WHERE id_sondage = '$id_sondage' AND priorite = '$position_plus'";	
		$resultat2 = mysql_query($requete2) or die ('Erreur SQL : impossible d\'effectuer la requête : <br />'.$requete2);

		while($row = mysql_fetch_array($resultat2)) 
			{
			$id = $row[0];
			}

		$sql4 = "UPDATE question SET priorite = '$position' WHERE id_question = '$id' AND id_sondage = '$id_sondage'";

		$req4 = mysql_query($sql4); 
		$req3 = mysql_query($sql3);
		}
			else
			{
			echo'<p></p>';
			echo '<table><tr></tr><tr><TD align ="left" valign="center"><u>La question est au minimum</td></u></tr></table>';
			}

	}
	
}	

?>