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 :

[SQL] Recherche dans table le nombre d'enregistrement en horizontale


Sujet :

PHP & Base de données

  1. #1
    Membre éclairé Avatar de Dsphinx
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2005
    Messages
    1 082
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 082
    Points : 884
    Points
    884
    Par défaut [SQL] Recherche dans table le nombre d'enregistrement en horizontale
    Bonjour, (pardon si le titre est mal exprimé mais c'est pas facile) j'ai une table dont la structure est comme suit:

    id
    car_1
    car_2
    car_3
    car_4
    car_5

    tout est en varchar, l'id permet d'identifier le produit et les car_1, car_2, etc sont les caractéristiques du produit ! Ma table pour contenir ceci:

    id : VOITURE
    car_1 : 4 roues
    car_2 : 5 places
    car_3 : peinture métalisée
    car_4 :
    car_5 :

    Ma question est que comme car_4 et car_5 sont vides, j'aimerais savoir le nombre de champ rempli pour l'id VOITURE ! Dans mon cas, il y a 3 champs utilisé et j'aimerais savoir quelle est la requete pour arriver à ce résultat ! La structure de la table ne peut être changée !

    Merci ! c'est pas facile !

  2. #2
    Membre éclairé
    Avatar de buzzkaido
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2004
    Messages
    821
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2004
    Messages : 821
    Points : 734
    Points
    734
    Par défaut
    Euh... plusieurs solutions :

    - soit tu recupere toute la ligne en PHP et tu compte les champs non vide (le plus simple)

    - soit tu compte avec une requete SQL pas tres propre

    Dans tout les cas, si tu as besoin de compter ça, il y a surement un souci dans le schema de ta base...

    La requete SQL ressemblerait à un truc dans ce genre :

    Code SQL : 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
     
    SELECT CASE
               WHEN (        'car_1' NOT NULL
                          AND 'car_2' NOT NULL
                          AND 'car_3' NOT NULL
                          AND 'car_4' NOT NULL
                          AND 'car_5' NOT NULL) THEN 5
               WHEN (        'car_1' NOT NULL
                          AND 'car_2' NOT NULL
                          AND 'car_3' NOT NULL
                          AND 'car_4' NOT NULL) THEN 4
               WHEN (        'car_1' NOT NULL
                          AND 'car_2' NOT NULL
                          AND 'car_3' NOT NULL) THEN 3
               WHEN (        'car_1' NOT NULL
                          AND 'car_2' NOT NULL) THEN 2
               WHEN ('car_1' NOT NULL) THEN 1
               ELSE 0
               END;
      FROM table
    WHERE id = 'voiture';

    Evidemment ce code ne marchera bien que si tes champs car_1,car_2,car_3,car_4,car_5 sont remplis dans l'ordre : ne pas avoir de truc comme ça :

    id : VOITURE
    car_1 : 4 roues
    car_2 :
    car_3 : peinture métalisée
    car_4 :
    car_5 : 5 places

    Sinon, il suffit de rajouter des conditions

  3. #3
    Membre éprouvé Avatar de sharrascript
    Homme Profil pro
    Développeur Web indépendant
    Inscrit en
    Avril 2007
    Messages
    678
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web indépendant

    Informations forums :
    Inscription : Avril 2007
    Messages : 678
    Points : 1 042
    Points
    1 042
    Par défaut
    bonjour Dsphinx,

    Donc en PHP cela pourrai donner:

    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
     
    $i=0;
    $sql = "SELECT * FROM Nom_table WHERE id = $id ";
    	$result = mysql_query ($sql)
    		or die ("execution requete impossible".mysql_error());
    	while ($ligne = mysql_fetch_array($result))
    	{extract ($ligne);
    	if ($car_1 == "")
                 {
                  $i += 1;
                  }
    	if ($car_2 == "")
                 {
                  $i += 1;
                  }
    	if ($car_3 == "")
                 {
                  $i += 1;
                  }
    	if ($car_4 == "")
                 {
                  $i += 1;
                  }
    	if ($car_5 == "")
                 {
                  $i += 1;
                  }
                 $nbr_null= 5 - $i;
                 echo $nbr_null;
    	}
    Il y a surement + simple

    ++

  4. #4
    Membre éclairé Avatar de Dsphinx
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2005
    Messages
    1 082
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 082
    Points : 884
    Points
    884
    Par défaut
    Merci a vous. Je me suis orienté vers la deuxième solution ! La première étant un peu plus compliqué ! Sauf qu'au lieu de faire des IF j'ai fais une boucle WHILE !

    Merci encore ca m'a bien aidé !

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

Discussions similaires

  1. [SQL Server 2008] optimisation recherche dans table
    Par dingo200 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 04/05/2009, 10h22
  2. Recherche dans table paradox
    Par petitcoucou31 dans le forum Bases de données
    Réponses: 4
    Dernier message: 07/11/2006, 23h16
  3. SQL SERVER 2000 remonter un nombre d'enregistrement
    Par pc152 dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 19/10/2006, 14h33
  4. [SQL] recherche dans une table
    Par H-bil dans le forum PHP & Base de données
    Réponses: 11
    Dernier message: 06/06/2006, 11h26
  5. recherche dans table maitre detail
    Par pierrot67 dans le forum Bases de données
    Réponses: 3
    Dernier message: 27/03/2006, 13h00

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