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 :

Order by sans While


Sujet :

PHP & Base de données

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    277
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 277
    Points : 120
    Points
    120
    Par défaut Order by sans While
    Bonjour,
    Je n'arrive pas a construire correctement ce que je souhaite

    Actuellement ça fonctionne comme ça :

    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
     $result = $mysql->query("
    SELECT
    codeinsee,nom_client_1,nom_client_2
    FROM
            client_2012
    WHERE
            codeinsee= '".addslashes($codeinsee)."'
    /* ce order by ne peut pas fonctionner à cause de ma requete PHP qui sépare les 2 clients dans la requete Php */
    ORDER BY FIELD  (nom_client_1,nom_client_2) ASC      
          ");
       if($result)
         {    
      list(
    $codeinsee,$nom_client_1,$nom_client_2
    )=mysql_fetch_row($result) ;
    }
     
    //client 1
    if($nom_client_1 == 0) {
    $page->addhtml('Affiche : désolé pas de client N°1 pour le code insee '.$codeinsee.'');
    }
     
    if($nom_client_1 > 0) {
    $page->addhtml('
    Le nom du client N°1 est monsieur '.$nom_client_1.' pour le code insee '.$codeinsee.'
         ');
        }
     
    //client 2
    if($nom_client_2 == 0) {
    $page->addhtml('Affiche : désolé pas de client N°2 pour le code insee '.$codeinsee.'');
    }
     
    if($nom_client_2 > 0) {
    $page->addhtml('
    Le nom du client N°2 est monsieur '.$nom_client_2.' pour le code insee '.$codeinsee.'
         ');
        }
    Ces requêtes fonctionnent mais je ne peux pas faire un ORDER BY ENTRE $nom_client_1 ET $nom_client_2 !!!! Puisque ce n'est pas dans une boucle While

    Si j'utilise WHILE comme ça, lorsqu'il n'y aura pas de client N°2 le texte html restera affiché et c'est pas bon

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
       if($result)
         {
             WHILE(    
      list(
    $codeinsee,$nom_client_1,$nom_client_2
    )=mysql_fetch_row($result)) ;
    }
     
    if($result > 0) {
    $page->addhtml('
    Le nom du client N°1 est monsieur '.$nom_client_1.' pour le code insee '.$codeinsee.'
    PAS DE client N°2 '.$nom_client_2.' JE ME RETROUVE AVEC CE TEXTE HTML "PAS DE client N°2" QUI NE DOIT PAS ETRE ICI
         ');
        }
    Comment je peux faire pour que le texte Html soit invisible lorsqu'il n'y a pas de resultat avec $nom_client_2

  2. #2
    Modérateur
    Avatar de Gugelhupf
    Homme Profil pro
    Analyste Programmeur
    Inscrit en
    Décembre 2011
    Messages
    1 320
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Analyste Programmeur

    Informations forums :
    Inscription : Décembre 2011
    Messages : 1 320
    Points : 3 740
    Points
    3 740
    Billets dans le blog
    12
    Par défaut
    Tu te sers d'un "objet" $mysql pour utiliser la méthode query(), c'est du PDO ?
    Si c'est du PDO pourquoi est-ce que je vois la fonction mysql_fetch_row() ?
    Tu n'est pas obligé de te servir de list(), cela enlève de la lisibilité, utilise plutôt mysql_fetch_array() qui te renverra un tableau avec pour indice le nom de tes champs.

    Aussi je ne vois pas comment ta requête pourrait fonctionner avec un ODER BY FIELD, j'ai l'impression que tu l'as chopé sur internet.
    Utilise plutôt : ORDER BY nom_client_1, nom_client_2

    PS: Ton code n'est pas bien indenté (mal écrit), il faut que tu y fasse attention si tu ne veux pas faire fuir ton lecteur.
    N'hésitez pas à consulter la FAQ Java, lire les cours et tutoriels Java, et à poser vos questions sur les forums d'entraide Java

    Ma page Developpez | Mon profil Linkedin | Vous souhaitez me contacter ? Contacter Gokan EKINCI

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    277
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 277
    Points : 120
    Points
    120
    Par défaut
    C'est vrai que mon code n'est pas indenté et que l'utilisation de Order By sans FIELD c'est beaucoup mieux

    Mais cela ne donne aucune solution à mon problème



  4. #4
    Expert éminent
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Points : 7 762
    Points
    7 762
    Par défaut
    $result n'est pas un entier mais une ressource, la condition $result > 0 est donc systématiquement vraie, même s'il n'y a aucun résultat. Pour savoir le nombre d'enregistrements retournés par une requête, il faut utiliser mysql_num_rows.

    Au passage fait attention aux types de données que tu manipules quand tu fais des expressions booléennes.

Discussions similaires

  1. [MySQL] Parcourir sans While
    Par casper_mc dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 03/07/2009, 23h31
  2. sleep bloquant sans while
    Par Braillane dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 14/11/2008, 15h15
  3. une requete ORDER BY sans difference entre maj et min
    Par skillipo dans le forum Hibernate
    Réponses: 4
    Dernier message: 07/03/2008, 15h57
  4. Réponses: 1
    Dernier message: 17/08/2006, 21h27
  5. order by sans les valeurs NULL
    Par pendragon509 dans le forum Langage SQL
    Réponses: 4
    Dernier message: 21/10/2005, 13h31

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