Bonjour,
Ceci est ma toute première contribution, qui n'aurait pu se faire sans Anthomicro et ... . Merci à eux donc.
Pour mon projet, j'avais besoin de créer un tableau, dans lequel les lignes pouvaient monter ou descendre dans le tableau, à volonté.
Le nom de la table est important ; tous les champs de la table se termin par "_nomdelatable" ; un champ "clt_nomdelatable" est nécessaire.
Cela se compose en 3 fichiers : list_divi.php (affichage du tableau), up.php (script de montée) et down.php (devinez ...) :
Source / Exemple :
code de list_divi.php :
<html>
<head>
<title></title>
</head>
<body>
<?php
/* Connexion et sélection de la base */
$link = mysql_connect("votre serveur", "login user", "password user")
or die("Impossible de se connecter");
// echo "Connexion réussie";
mysql_select_db("votre base") or die("Impossible de selectionner la base");
$query = "select * from divi order by clt_divi asc"; // ma table s'appelle comme ça
$result = mysql_query($query) or die("Query failed : $query");
?>
<table>
<?php
// création du tableau issu de la table
while ($divi = mysql_fetch_array($result)) { ?>
<tr>
<td bgcolor="<?php echo $divi['4']; ?>" colspan="1" rowspan="2"><a href="details.php?id_divi=<?php echo $divi['id_divi']; ?>"><img src="../images/details.gif" title="Afficher les détails" name="details" width="27" height="27" border="0" align="absmiddle" id="details"></a></td>
<td bgcolor="<?php echo $divi['4']; ?>" colspan="1" rowspan="2"><a href="update.php?id_divi=<?php echo $divi['id_divi']; ?>"><img src="../images/update.gif" title="Modifier l'enregistrement" name="details" width="27" height="27" border="0" align="absmiddle" id="details"></a></td>
<td bgcolor="<?php echo $divi['4']; ?>" colspan="1" rowspan="2"><a href="delete.php?id_divi=<?php echo $divi['id_divi']; ?>"><img src="../images/delete.gif" title="Supprimer l'enregistrement" name="details" width="27" height="27" border="0" align="absmiddle" id="details"></a></td>
<td bgcolor="<?php echo $divi['4']; ?>" colspan="1" rowspan="2"><?php echo $divi['1']; ?></td>
<td bgcolor="<?php echo $divi['4']; ?>" colspan="1" rowspan="2"><?php echo $divi['2']; ?></td>
<td bgcolor="<?php echo $divi['4']; ?>">
<form action='up.php' method='POST'> <?php /*formulaire pour monter une ligne*/ ?>
<input type='hidden' name="id_up" value="<?php echo $divi['0']; ?>" size="2"> <?php /*envoi de l'id de la ligne*/ ?>
<input type='hidden' name="clt_up" value="<?php echo $divi['3']; ?>" size="2"> <?php /*envoi du classement de la ligne*/ ?>
<input type='hidden' name="table_up" value="divi" size="2"> <?php /*envoi du nom de la table*/ ?>
<input type='image' src='../images/haut.gif' title='Monter' width='12' height='12' border='0' align='absmiddle'>
</form></td>
</tr>
<tr>
<td bgcolor="<?php echo $divi['4']; ?>">
<form action='down.php' method='POST'> <?php /*formulaire pour descendre une ligne*/ ?>
<input type='hidden' name="id_down" value="<?php echo $divi['0']; ?>" size="2"> <?php /*envoi de l'id de la ligne*/ ?>
<input type='hidden' name="clt_down" value="<?php echo $divi['3']; ?>" size="2"> <?php /*envoi du classement de la ligne*/ ?>
<input type='hidden' name="table_down" value="divi" size="2"> <?php /*envoi du nom de la table*/ ?>
<input type='image' src='../images/bas.gif' title='Descendre' width='12' height='12' border='0' align='absmiddle'>
</form>
</td>
</tr>
<?php } ?>
</table>
</body>
<?php
/* Fermeture de la connexion */
mysql_close($link);
?>
</html>
code du script up.php :
<?php
/* Connexion et sélection de la base */
$link = mysql_connect("votre serveur", "login user", "password user")
or die("Impossible de se connecter");
// echo "Connexion réussie";
mysql_select_db("votre base") or die("Impossible de selectionner la base");
// récupération des données poster par les mini-formulaires
$id = $_POST['id_up'];
$clt = $_POST['clt_up'];
$table = $_POST['table_up'];
//remplace clt_$table par clt_$table-1 pour la ligne considérée
$queryup1 = "UPDATE $table SET clt_$table=clt_$table-1 WHERE id_$table=$id";
$up1 = mysql_query($queryup1) or die("Query failed : $queryup1");
//remplace clt_$table par clt_$table+1 pour la ligne qui possédait le clt_$table remplacé par la première requete
$queryup2 = "UPDATE $table SET clt_$table=clt_$table+1 WHERE clt_$table=$clt-1 and id_$table != $id";
$up2 = mysql_query($queryup2) or die("Query failed : $queryup2");
/* Fermeture de la connexion */
mysql_close($link);
// retour vers le tableau
?>
<script language="javascript">
<!--
document.location.href="./list_<?php echo $table; ?>.php"
//-->
</script>
code du script down.php :
<?php
/* Connexion et sélection de la base */
$link = mysql_connect("votre serveur", "login user", "password user")
or die("Impossible de se connecter");
// echo "Connexion réussie";
mysql_select_db("votre base") or die("Impossible de selectionner la base");
// récupération des données poster par les mini-formulaires
$id = $_POST['id_down'];
$clt = $_POST['clt_down'];
$table = $_POST['table_down'];
//remplace clt_$table par clt_$table+1 pour la ligne considérée
$querydown1 = "UPDATE $table SET clt_$table=clt_$table+1 WHERE id_$table=$id";
$down1 = mysql_query($querydown1) or die("Query failed : $querydown1");
//remplace clt_$table par clt_$table-1 pour la ligne qui possédait le clt_$table remplacé par la première requete
$querydown2 = "UPDATE $table SET clt_$table=clt_$table-1 WHERE clt_$table=$clt+1 and id_$table != $id";
$down2 = mysql_query($querydown2) or die("Query failed : $querydown2");
/* Fermeture de la connexion */
mysql_close($link);
// retour vers le tableau
?>
<script language="javascript">
<!--
document.location.href="./list_<?php echo $table; ?>.php"
//-->
</script>
Conclusion :
Bon ce n'est pas parfait. Il y a des redondances. Ce n'est franchement pas optimisé mais ça marche. L'idéale serait de ne pas recharger la page "list_divi.php" ....
Encore une fois, c'est ma première contrib.