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 :

Comment faire le tri des membres actifs dans un SELECT [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre régulier
    Inscrit en
    Octobre 2008
    Messages
    329
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 329
    Points : 97
    Points
    97
    Par défaut Comment faire le tri des membres actifs dans un SELECT
    Bonjour,

    Je suis en train de développer un affichage avec une pagination.

    Je fais un SELECT dans ma bdd avec pour variables la page en cours ($page) et le nombre d'enregistrements par page ($nb). Cela fonctionne mais je voudrais ne séléctionner que les membres actifs (actif = 1).

    Pour l'instant j'ai tenté un "if actif = 1" pour l'affichage.

    Mais il y a un problème : Si je séléctionne 12 enregistrements ($nb = 12), et si dans la sélection 2 membres ne sont pas actifs (actif = 0), ça ne m'affiche que 10 enregistrements au lieu de 12 sur la page.

    Il faudrait donc peut-être modifier le SELECT, ou faire un traitement après afin que si seulement 10 enregistrements sont actifs, on fasse un deuxième SELECT pour chercher 2 enregistrements actifs pour en avoir 12 au total.

    Je suis débutant et je ne sais pas comment faire...

    Voici le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    // Selection des enregistrements pour la page considérée
    $sql = 'SELECT id_membre, actif FROM identification LIMIT '.($page * $nb).','.$nb.''
    or die('Erreur MySQL : '.mysql_error());
     
    $query = mysql_query($sql, $connexion)
    or die('Erreur MySQL : '.mysql_error());
     
    while($list = mysql_fetch_assoc($query))
     
    // Si le membre est actif
     if ($list['actif'] == 1){
    // Affichage des enregistrements
    Merci de votre aide

  2. #2
    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 : 39
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Pourquoi ne pas simplement récupérer uniquement les membres actifs dans ta requête ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sql = 'SELECT id_membre, actif FROM identification  WHERE actif== 1 LIMIT '.($page * $nb).','.$nb.'';
    Au passage : utiliser or die (mysql_error()) c'est très bien, mais ce n'est pas la peine d'utiliser sur des fonctions/expressions qui ne dépendent pas de mysql (comme par exemple l'écriture de la requête au-dessus) Il ne faut pas abuser des bonnes choses

  3. #3
    Membre régulier
    Inscrit en
    Octobre 2008
    Messages
    329
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 329
    Points : 97
    Points
    97
    Par défaut To leave and let die
    OK merci ça marche !

    Je suis débutant je patauge encore un peu ! Il y avait juste une petite erreur (actif = 1 au lieu de actif ==1)

    Quant aux die j'ai tendance à en mettre un peu partout c'est vrai !

    Quel die n'est pas utile ? Le 1er ou le second ?

  4. #4
    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 : 39
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Le premier (pas de bol, tu n'as pas retiré le bon )
    En fait, c'est simple : tu peux utiliser or die(mysql_error()) lorsque tu utilises une fonction mysql_xxxxx.
    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mysql_query($sql) or die(mysql_error());

  5. #5
    Membre régulier
    Inscrit en
    Octobre 2008
    Messages
    329
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 329
    Points : 97
    Points
    97
    Par défaut La solution 2
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    // Selection des enregistrements pour la page considérée
    $sql = 'SELECT id_membre, actif FROM identification WHERE actif = 1 LIMIT '.($page * $nb).','.$nb.'';
     
    $query = mysql_query($sql, $connexion) or die('Erreur MySQL : '.mysql_error());
     
    while($list = mysql_fetch_assoc($query));
     
    // Affichage des enregistrements

  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 : 39
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Oui, enfin quand je dis que tu peux utiliser or die sur toutes les fonctions mysql_xxxxx, ça n'est pas non plus systématique.
    Lorsque tu fais while ($ligne = mysql_fetch_xxxx()) tu exploites déjà le renvoi de false en quittant la boucle. SI tu ajoutes un or die, ça signifie que lorsque tu finis la boucle, ça arrête le script (ce qui n'est pas nécessairement ce que tu souhaites )
    Donc, juste sur mysql_query, mysql_connect ou mysql_select_db (les fonctions susceptibles de renvoyer un message d'erreur) suffit

    Donc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    // Selection des enregistrements pour la page considérée
    $sql = 'SELECT id_membre, actif FROM identification WHERE actif = 1 LIMIT '.($page * $nb).','.$nb.'';
     
    $query = mysql_query($sql, $connexion) or die('Erreur MySQL : '.mysql_error());
     
    while($list = mysql_fetch_assoc($query))
    { 
    // Affichage des enregistrements
    }

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 07/06/2010, 03h13
  2. Réponses: 2
    Dernier message: 18/07/2008, 12h10
  3. Réponses: 5
    Dernier message: 03/09/2007, 20h36
  4. [MySQL] Php, je ne comprends pas comment faire pour introduire des données dans une table
    Par Liondd dans le forum PHP & Base de données
    Réponses: 23
    Dernier message: 14/12/2006, 12h53

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