IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Faire une liste des membres ! + trier par ordre !


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 8
    Par défaut Faire une liste des membres ! + trier par ordre !
    Salut tout le monde, je voudrais des indications pour faire une page de liste des membres. J'ai coder mon formulaire, comme je le voulais... mais pour la partie php, je ne c'est vraiment pas comment faire.

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    <form action="memberlist.php" method="post">
    <fieldset>
    <legend>Rechercher des membres</legend>
     
    <label for="pseudo">Pseudo :</label> 
    <input type="text" name="pseudo" id="pseudo" /> <br />
     
    <label for="tri" class="label_cote">Trier par...</label> 
    <select name="tri" id="tri">
    <option value="mbr_pseudo" selected="selected">Pseudo</option>
    <option value="mbr_id">ID de membre</option>
    <option value="mbr_date_insc">Date d'inscriptions</option>
    <option value="mbr_groupe">Groupe</option>
    </select><br />
     
    <label for="ordre">Ordre...</label> 
    <select name="ordre" id="ordre">
    <option value="asc" selected="selected">Croissant</option>
    <option value="desc">Décroissant</option>
    </select><br />
     
    <label for="groupe">Groupe :</label> 
    <select name="groupe" id="groupe">
    <option value="1">Admins</option>
    <option value="2">Bannis</option>
    <option value="3">Scripteurs</option>
    <option value="4">Moderateurs</option>
    <option value="5">Newser</option>
    <option value="6">Validateurs</option>
    <option value="0" selected="selected">Tous les groupes</option>
    </select><br />
     
    <input type="submit" value="Rechercher" name="recherche" id="recherche" />
    </fieldset>
    </form>

    Comme vous le voyez, je voudrais pouvoir trier les membres, par ordre croissant où décroissant. Pouvoir rechercher ceux qui ont un rang spéciale, etc...

    Si vous pouviez m'aider, vous serez super sympas
    Merci !

  2. #2
    Rédacteur
    Avatar de Halleck
    Homme Profil pro
    Consultant PHP
    Inscrit en
    Mars 2003
    Messages
    597
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Consultant PHP

    Informations forums :
    Inscription : Mars 2003
    Messages : 597
    Par défaut
    Salut,

    Ca dépend de l'origine de tes données, mais là j'imagine que ça vient d'une base de données, donc :

    - tout d'abord tu étudie les paramètres envoyées à ta page memberlist.php
    - puis tu les protège
    - enfin tu crée une requête à envoyer à ta base, avec ces critères

    Ex:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
    //
    // vérifier l'envoi des informations
    //
    if( !$_POST['tri']
    || !$_POST['ordre']
    || !$_POST['groupe']
    ) { return false; }
     
    //
    // protéger un minimum des injections
    //
    $tri = mysql_escape_string($_POST['tri']);
    $ordre= mysql_escape_string($_POST['ordre']);
    $groupe= mysql_escape_string($_POST['groupe']);
     
    //
    // créer la requête SQL
    //
    $sql = "SELECT * FROM `base_user` WHERE `groupe` = '$groupe' ORDER BY '$ordre' $tri;";
     
    // ensuite il suffit de traiter chaque valeur retour de la base, normalement. Le tri se fait dans le code SQL
    Le code n'est pas forcément exact, mais tu auras une idée comme ça

    Bon courage !

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 8
    Par défaut
    Bonjour, est merci pour ta réponse.
    Mais, j'ai une erreur à la ligne 80 !

    Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\Documents and Settings\Administrateur\Bureau\Webmascript\memberlist.php on line 80
    Mon code !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
    <?php
    if (isset($_POST['pseudo']) AND isset($_POST['tri']) AND isset($_POST['ordre']) AND isset($_POST['groupe']))
    {
        $pseudo = mysql_real_escape_string(htmlspecialchars($_POST['pseudo']));
    	$tri = mysql_escape_string($_POST['tri']);
    	$ordre = mysql_escape_string($_POST['ordre']);
    	$groupe = mysql_escape_string($_POST['groupe']);
     
     
    $retour = mysql_query('SELECT * FROM forum_membres WHERE `pseudo` = '.$pseudo.' AND `groupe` = '.$groupe.' ORDER BY '.$ordre.' '.$tri.'');
    while ($tt_membres = mysql_fetch_array($retour)) // On fait une boucle pour lister les news
    { //Debut de la boucle
    echo'
    <tr>
    <td>'.date('d/m/Y', $tt_membres['membre_inscrit']).'</td>
    <td>'.$tt_membres['membre_id'].'</td>
    <td>'.$tt_membres['membre_pseudo'].'</td>
    <td>'.$tt_membres['membre_rang'].'</td>
    </tr>
    </table>';
    } //Fin de la boucle
    }
    ?>
    Merci.

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Il doit manquer des guillemets dans ta requete.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $retour = mysql_query('SELECT * FROM forum_membres WHERE pseudo = "'.$pseudo.'" AND groupe = "'.$groupe.'" ORDER BY '.$ordre.' '.$tri.'') or exit(mysql_error());
    afficher les erreurs sql est une bonne idée en developpement
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 8
    Par défaut
    J'ai encore une erreur :

    Erreur de syntaxe près de 'desc mbr_pseudo' à la ligne 1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $retour = mysql_query('SELECT * FROM forum_membres WHERE membre_pseudo = "'.$pseudo.'" AND `groupe` = "'.$groupe.'" ORDER BY '.$ordre.' '.$tri.'') or exit(mysql_error());
    while ($tt_membres = mysql_fetch_array($retour)) // On fait une boucle pour lister

  6. #6
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut
    Est-ce que par hasard $ordre ne contiendrait pas ASC (ou DESC) et $tri le champ sur lequel tu souhaites trier ? Auquel cas tu as écrit ta requête à l'envers
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
     order by champ1 asc
    Donc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $retour = mysql_query('SELECT * FROM forum_membres WHERE membre_pseudo = "'.$pseudo.'" AND `groupe` = "'.$groupe.'" ORDER BY '.$tri.' '.$ordre.' ') or exit(mysql_error());
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

Discussions similaires

  1. [PR-2010] Supprimer les doublons d'une listbox et la trier par ordre croissant
    Par Antonin Boloch dans le forum Project
    Réponses: 2
    Dernier message: 07/05/2014, 16h56
  2. Réponses: 0
    Dernier message: 06/06/2012, 10h26
  3. Réponses: 0
    Dernier message: 08/06/2011, 13h45
  4. [MySQL] Une liste des membres avec php
    Par -Fly- dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 13/11/2010, 17h57
  5. Faire une liste avec deux éléments par ligne
    Par pc.bertineau dans le forum Mise en page CSS
    Réponses: 18
    Dernier message: 12/04/2007, 14h47

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo