La Communauté Webmaster  forum rss


  Forum-webmaster
  Technique - programmation
  PHP / MySQL
(Modérateurs: Shain, Jey, erwinol, Lilian, lauryv, ToToMaStEr)
  ordre
« Précédent Suivant »
Pages: [1] Descendre
Répondre    Aviser des réponses    Envoyer le sujet    Imprimer
  Auteur  Sujet: ordre  (Lu 727 fois)
ordre
« sur: le 11-06-2005 a 14:18:40 »
calenfeaion
Habitué
***

Hors-Ligne

Sexe: Male
Messages: 269





Voir le Profil    WWW
Répondre avec citation

Bonjour à tous,

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é

Auriez-vous une meilleur idée ?

Merci,
Calen

Rapporter au modérateur  

Re:ordre
« Répondre #1 sur: le 11-06-2005 a 14:57:18 »
MFred
Habitué
***

Hors-Ligne

Sexe: Male
Messages: 340



Gnih ?
331567679 331567679
Voir le Profil    E-Mail
Répondre avec citation

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 ?

Rapporter au modérateur  

"In a world without fences and walls, who needs Gates and Windows ?"


Jabber : mfred@jabber.fr / mfred.mail@gmail.com
Re:ordre
« Répondre #2 sur: le 11-06-2005 a 22:56:06 »
calenfeaion
Habitué
***

Hors-Ligne

Sexe: Male
Messages: 269





Voir le Profil    WWW
Répondre avec citation

En faite je voudrais les classés de façon arbitraire.
Puis pouvoir les monter/descendre à volontier.
Le script est bien sûr de moi

En faite je n'arrive pas à trouver une façon de le faire.

Rapporter au modérateur  

Re:ordre
« Répondre #3 sur: le 12-06-2005 a 13:15:38 »
erwinol
Iznogoud Deluxe
Modérateur Global
*****

Hors-Ligne

Sexe: Male
Messages: 1845



Que la FARCE soit avec toi

Voir le Profil    WWW
Répondre avec citation

Si tes partenaires sont dans ta DB il suffit de mentionner un numéro d'ordre à chaque tuple.

Ensuite lorsque tu déplaces un élément, tu incrémentes tous les éléments supérieurs et tu intercales l'élément que tu déplaces.

C'est vraiment tout bête.

Rapporter au modérateur  

MySeoBox soumet vos sites sur des milliers d'annuaire
Vous possédez un annuaire ? Gagnez de l'argent avec celui-ci grâce à l'affiliation MySeoBox !
Re:ordre
« Répondre #4 sur: le 12-06-2005 a 13:59:18 »
MFred
Habitué
***

Hors-Ligne

Sexe: Male
Messages: 340



Gnih ?
331567679 331567679
Voir le Profil    E-Mail
Répondre avec citation

Une solution :

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 » Rapporter au modérateur  

"In a world without fences and walls, who needs Gates and Windows ?"


Jabber : mfred@jabber.fr / mfred.mail@gmail.com
Re:ordre
« Répondre #5 sur: le 12-06-2005 a 14:13:54 »
calenfeaion
Habitué
***

Hors-Ligne

Sexe: Male
Messages: 269





Voir le Profil    WWW
Répondre avec citation

C'est justement le traitement qui pose problème

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

Bon je vais aller testé tout çà

Rapporter au modérateur  

Re:ordre
« Répondre #6 sur: le 12-06-2005 a 16:05:14 »
MFred
Habitué
***

Hors-Ligne

Sexe: Male
Messages: 340



Gnih ?
331567679 331567679
Voir le Profil    E-Mail
Répondre avec citation

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.

Rapporter au modérateur  

"In a world without fences and walls, who needs Gates and Windows ?"


Jabber : mfred@jabber.fr / mfred.mail@gmail.com
Re:ordre
« Répondre #7 sur: le 12-06-2005 a 19:43:57 »
calenfeaion
Habitué
***

Hors-Ligne

Sexe: Male
Messages: 269





Voir le Profil    WWW
Répondre avec citation

Bon, j'ai "déjà" écris çà :

Code:

<?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
                  
echo "<form action='index.php?p=part_ordre.php' method='POST'>";
                  
while ($ligne = mysql_fetch_assoc($select_part))
{   
  echo $ligne['nom'];
  echo "Position: <select name='position'>";
  $i = 0;
  while ($i<$num_part)
  {
    echo "<option value='$i'";
    if ($i == $ligne['id']) { echo 'selected="selected"';}
    echo ">$i</option>";
  }
echo "</select>";
}

echo "</form>";
}

Mais quand j'essaye d'afficher la page, sa met 3 ans (je sais pas, j'ai pas essayer ).
Alors je sais pas voir si sa marche...

Je me demande si j'ai pas fait une boucle infinie, mais çà n'a pas l'air...

Rapporter au modérateur  

Re:ordre
« Répondre #8 sur: le 12-06-2005 a 20:13:26 »
calenfeaion
Habitué
***

Hors-Ligne

Sexe: Male
Messages: 269





Voir le Profil    WWW
Répondre avec citation

MDR
J'avais belle et bien fait une boucle infinie
J'ai oublié de mettre
$i++;
Enfin voila, maintenant ça marche !

Plus qu'a faire le traitement...

Rapporter au modérateur  

Re:ordre
« Répondre #9 sur: le 13-06-2005 a 12:33:20 »
calenfeaion
Habitué
***

Hors-Ligne

Sexe: Male
Messages: 269





Voir le Profil    WWW
Répondre avec citation

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
                  
                  echo "<form action='index.php?p=part_ordre.php' method='POST'>\n";
                  echo "<table>\n";
                  echo "<tr><td><b>ID</b></td>\n
                          <td><b>Nom du partenaire</b></td>\n
                           <td><b>Position actuelle</b></td>\n
                          <td><b>Changement à effectuer</b></td>\n
                       </tr>\n";
                  $i = 0;
                  while ($ligne = mysql_fetch_assoc($result))
                  {
                    $i++;   
                    echo "<tr>\n
                          <td>".$ligne['id_partenaire']."</td>\n";
                    echo "<td>".$ligne['nom']."</td>\n";
                    echo "<td>".$ligne['ordre']."</td>\n";
                    echo "<td><select name='".$ligne['ordre']."'>\n";
                    $i2 = 0;
                    while ($i2<$num_part)
                    {
                          $i2++;
                        echo "<option value='$i2'";
                        if ($i == $i2) { echo 'selected="selected"';}
                        echo ">$i2</option>\n";
                     }
                    echo "</select>\n</td>\n
                             </tr>\n";
                  }
                  echo "<tr>\n
                        <td colspan='4'>\n
                        <input type='submit' name='submit' value='Effectuer les changements de positions'>\n
                        </td>\n
                       </tr\n>";
                  echo "</table>\n";
                  echo "</form>\n";
               }
            ?>

Pas faché d'être arrivé au bout moi

Rapporter au modérateur  

Répondre    Aviser des réponses    Envoyer le sujet    Imprimer
Pages: [1] Monter
« Précédent Suivant »
Sauter à: 

Votre statut : Invité
Vous devez être membre pour participer.
 
 
Let’s Encrypt : le certificat SSL gratuit
Tester votre site internet sur différents navigateurs
[WordPress] Des problèmes avec l’administration ?
Rappel : Mettez à jour vos CMS et vos sites E-commerce
Le .fr fête ses 25 années d’existence !
Mesurer votre audience en temps réel avec BubbleStat
Porter réclamation contre Google Panda ?
Zlio n’est plus …
 
 
 
 
 

Copyright (c) Devclic 2002 - 2026 - Tous droits réservés

creation site internet strasbourg