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>';
}
}
}
?>