Je voudrais savoir géré l'ordre de mes partenaires. J'avais pensé a un système de chiffre et puis une requête qui sort les partenaires par ordre croissant. Mais je voudrais qu'il soit possible de les changé de place pars après et là je suis calé
Tu veux pouvoir les classer par quel critère : le nombre de visiteurs qu'ils t'apportent, l'ordre alphabétique ... ou tout simplement les classer dans un ordre que tu définis "arbitrairement" ? Tu utilises déjà un script pour gérer la liste de tes partenaires, ou tu l'as fais toi-même ?
Tu crées un champ TINYINT dans la table qui contient tes partenaires, nommé "position". Tu leur attribues pour commencer des numéros allant de 1 à 5 (si tu as 5 sites partenaires).
Ensuite, dans ta "zone d'administration", tu crées une page avec un formulaire, de ce style :
Code:
<?php // ... echo '<form method="post" action="trier_les_partenaires.php">'; $select_part=mysql_query('SELECT id,nom, position FROM table_des_partenaires ORDER BY position'); $num_part=mysql_num_rows($select_part); // Nombre de partenaires
while ($fetch=mysql_fetch_assoc($select_part)) { echo $fetch['nom'].' ; Position : <select name="position_partenaire_'.$fetch['id'].'">'; $i=0; while ($i<$num_part) { $i++; echo '<option value="'.$i.'" '; if ($i==$fetch['position']) { echo 'selected="selected"'; } echo '>'.$i.'</option>'; } echo '</select><br />'; } echo '</form>';
Après il faut construire la requete pour updater tout ca, sur la page trier_les_partenaires.php. Tu y arriveras ?
« Dernière Édition: le 12-06-2005 a 14:01:26 par Master-Bilbon »
J'avais déjà réfléchis à ton truc, erwinol. En faite si j'increment l'élèment à déplacé, je dois juste "décrementé" l'élèment juste au dessus comme sa:
// On monte le partenaire n°2 Partenaire 1 : n°1+1=2 // On increment l'élèment suppérieur. Partenaire 2 : n°2-1=1 // On décrement l'élèment à monter. Partenaire 3 : n°3
Et donc il ne faut pas incrementé TOUT les partenaires, ou alors j'ai mal compris
Merci pour ton truc Master-Bilbon, ça va surement mettre utile
Bah quand tu auras validé le formulaire, ca te renverra un tableau de ce genre : $_POST['position_partenaire_(id)']=(position) Il te suffit donc de parcourir le tableau et de mettre à jour chaque ligne grâce aux infos données. Si tu as (vraiment) beaucoup de partenaires et que tu changes le classement (très) régulièrement, ca risque de te faire beaucoup de requêtes. Dans ce cas, regarde du côté de la soluc' d'erwinol.
<?php if(isset($_POST['submit'])) { // On traite le formulaire
} else { // On affiche le formulaire
require("../modeles/mysql_connect.php"); $select_part = mysql_query('SELECT id_partenaire,nom, ordre FROM calen_partenaires ORDER BY ordre'); $num_part = mysql_num_rows($select_part); // Nombre de partenaires
Voila pour le code primaire, pour ceux que ça interresse En faite le plus dur c'était de sélectionner les formulaires dont les nom sont généré automatiquement, dont on ne connais donc pas le nom au traitement \ Enfin je me comprend
Code:
<?php if(isset($_POST['submit'])) { // On traite le formulaire require("../modeles/mysql_connect.php"); // Connexion à la base MySQL
$select_part = "SELECT id_partenaire,ordre,nom FROM calen_partenaires ORDER BY ordre;"; // Slection des partenaire
$result = mysql_query($select_part); // Execution de la requête
while ($ligne = mysql_fetch_assoc($result)) { $ordre = $_POST[$ligne['ordre']]; // On selectionne le nom du formulaire en fonction de l'ordre $id = $ligne['id_partenaire']; // On prend ID $rq = "UPDATE calen_partenaires SET ordre='$ordre' WHERE id_partenaire='$id';"; // On update
$result2 = mysql_query($rq); // On execute la requête
if($result2) // Et on la vérifiée { echo "<p>Changement de position pour l'ID ".$ligne['id_partenaire']." (".$ligne['nom'].")"." [ <font color='green'><b>OK</b></font> ]</p>"; } else { echo "Changement de position pour l'ID".$ligne['id_partenaire']." (".$ligne['nom'].")"."[ <font color='red'><b>ECHEC</b></font> ] <br>".mysql_error(); } } } else { // On affiche le formulaire require("../modeles/mysql_connect.php"); // Connexion à la base MySQL
$select_part = "SELECT id_partenaire,nom,ordre FROM calen_partenaires ORDER BY ordre;";
$result = mysql_query($select_part);
$num_part = mysql_num_rows($result); // Nombre de partenaires