Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD
PHP & SGBD Forum d'entraide sur les SGBD avec PHP. Avant de poster : FAQ BDD, toutes les FAQ PHP, cours BDD et sources BDD
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 24/04/2007, 09h59   #1
Modérateur
 
Avatar de Dsphinx
 
Homme
Développeur Web
Inscription : septembre 2005
Messages : 1 032
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 032
Points : 754
Points : 754
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 !
Dsphinx est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/04/2007, 14h14   #2
Membre chevronné
 
Avatar de buzzkaido
 
Homme
Ingénieur développement logiciels
Inscription : juillet 2004
Messages : 817
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 31
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 : 817
Points : 636
Points : 636
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 :
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
buzzkaido est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/04/2007, 18h01   #3
Membre émérite
 
Avatar de sharrascript
 
Homme Franck
Développeur Web indépendant
Inscription : avril 2007
Messages : 678
Détails du profil
Informations personnelles :
Nom : Homme Franck
Âge : 31
Localisation : France, Rhône (Rhône Alpes)

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

Informations forums :
Inscription : avril 2007
Messages : 678
Points : 900
Points : 900
bonjour Dsphinx,

Donc en PHP cela pourrai donner:

Code :
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

++
sharrascript est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/04/2007, 07h18   #4
Modérateur
 
Avatar de Dsphinx
 
Homme
Développeur Web
Inscription : septembre 2005
Messages : 1 032
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 032
Points : 754
Points : 754
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é !
Dsphinx est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 15h53.


 
 
 
 
Partenaires

Hébergement Web