Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1694 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Champs vides dans une base mysql

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Champs vides dans une base mysql

n°1178841
newtitus
Yeah Babe !
Posté le 18-08-2005 à 15:24:30  profilanswer
 

Bonjour à tous,
 
Je me heurte depuis un petit moment à un léger soucis.
 
J'ai une base mysql où un user doit sélectionner 3 couleurs, ma table est donc du type user,c1,c2,c3.
 
Il y a t il un moyen en Php de savoir combien de champs "couleurs" sont vides et lesquels ?
 
Par exemple que seuls c1 et c3 ne sont pas renseignés pour l'user untel ?
 
Je pense que cela ne doit pas être bien compliqué mais je tourne en rond.
 
Merci.
 
Je précise juste, après m'être relu, que les champs couleurs vont être beacoup plus nombreux et qu'il est fastidieu de gérer le cas par cas.


Message édité par newtitus le 18-08-2005 à 15:26:43
mood
Publicité
Posté le 18-08-2005 à 15:24:30  profilanswer
 

n°1178850
xtof_83
Freeride Spirit
Posté le 18-08-2005 à 15:36:58  profilanswer
 

Ben tu fais un select de tous les champs where user=$truc.
 
et la tu regarde si tes champs c1,c2,c3 sont vide or not...

n°1178851
betsamee
Asterisk Zeperyl
Posté le 18-08-2005 à 15:37:00  profilanswer
 

Code :
  1. $rsql="select ";
  2. for($i=1;$i<=$nbcouleurs;$i++)
  3. {
  4.   if($i>1) $rsql = $rsql.",";
  5. $rsql = $rsql."if(c$i,'','c$i est vide')";
  6. }
  7. $rsql=" FROM TaTable where user=$usr";
  8. ....

n°1178852
newtitus
Yeah Babe !
Posté le 18-08-2005 à 15:38:33  profilanswer
 

betsamee a écrit :

Code :
  1. $rsql="select ";
  2. for($i=1;$i<=$nbcouleurs;$i++)
  3. {
  4.   if($i>1) $rsql = $rsql.",";
  5. $rsql = $rsql."if(c$i,'','c$i est vide')";
  6. }
  7. $rsql=" FROM TaTable where user=$usr";
  8. ....



 
Ouhla, je ne comprends pas tout la, mais je vais regarder cela de près.
 
Merci.

n°1178860
betsamee
Asterisk Zeperyl
Posté le 18-08-2005 à 15:53:19  profilanswer
 

en gros tu construit une requete du type:

Code :
  1. select if(c1,'','c1 est vide'),if(c2,'','c2 est vide'),...,if(cn,'','cn est vide')
  2. from TaTable where user =$usr


 
de maniere dynamique dans ton code php
tu auras a un resultat du style
 
----------------------------------------
c1   | c2        | c3     | cn         |
----------------------------------------
     |c2 est vide|        |cn est vide |
----------------------------------------
 
que tu pourras exploiter
 
(la fonction if sous mysql =>  
if(condition,affichesitrue,affichesifalse)

n°1178877
naceroth
Posté le 18-08-2005 à 16:12:28  profilanswer
 

newtitus a écrit :

Bonjour à tous,
 
Je me heurte depuis un petit moment à un léger soucis.
 
J'ai une base mysql où un user doit sélectionner 3 couleurs, ma table est donc du type user,c1,c2,c3.
...
 
Je précise juste, après m'être relu, que les champs couleurs vont être beacoup plus nombreux et qu'il est fastidieu de gérer le cas par cas.


 
Marrant, deuxième réponse que je donne aujourd'hui, deuxième réponse identique :D
 
Ta table est mal concue, tu auras beaucoup moins de mal à gérer ça avec de multiples couples user(une id j'espère),couleur occupant chacun une ligne d'une table qu'une seule ligne user,c1,...,c128.
 
Deux avantages (sans chercher loin) : tu n'occupes pas de la place inutilement pour des champs vides (vu que si la couleur n'est pas définie => pas de couple user/couleur) et surtout tu ne t'amuses plus à vérifier si la couleur est vide puisque tu ne récupère que celles qui sont remplies :)

n°1178904
newtitus
Yeah Babe !
Posté le 18-08-2005 à 16:38:39  profilanswer
 

naceroth a écrit :

Marrant, deuxième réponse que je donne aujourd'hui, deuxième réponse identique :D
 
Ta table est mal concue, tu auras beaucoup moins de mal à gérer ça avec de multiples couples user(une id j'espère),couleur occupant chacun une ligne d'une table qu'une seule ligne user,c1,...,c128.
 
Deux avantages (sans chercher loin) : tu n'occupes pas de la place inutilement pour des champs vides (vu que si la couleur n'est pas définie => pas de couple user/couleur) et surtout tu ne t'amuses plus à vérifier si la couleur est vide puisque tu ne récupère que celles qui sont remplies :)


 
 :)  
 
Je ne peux que te remercier de vouloir m'aider.
 
Je crois par contre qu'il va falloir que je retourne à mes bouquins car j'ai beaucoup de mal à interpreter vos réponses.

n°1178912
newtitus
Yeah Babe !
Posté le 18-08-2005 à 16:45:13  profilanswer
 

Ok je crois avoir compris naceroth, en fait tu me dis que plutot de faire un ligne : user,c1,c2,c3, mieux vaut faire une ligne user,c1, puis une autre ligne user,c2...etc ?
 
Suis je dans le vrai ?

n°1179106
naceroth
Posté le 18-08-2005 à 19:33:11  profilanswer
 

Tout à fait dans le vrai même :)
 
Remarque quand même (parce que je l'avais pas précisé) que si l'ordre des couleurs a une importance, tu peux rajouter un champ pour le préciser style

Code :
  1. user  | c    | ordre
  2. --------------------
  3. 1     |blanc | 1
  4. 1     |bleu  | 3


 
ce qui correspondrait à un 1,blanc, ,bleu dans ta première version :)
 
//edit : marrant, j'ai pas l'impression que ce soit plus clair avec un exemple :D


Message édité par naceroth le 18-08-2005 à 19:33:58
n°1179780
newtitus
Yeah Babe !
Posté le 19-08-2005 à 17:11:46  profilanswer
 

Et pourtant ça l'est...
 
J'ai fait ce que tu m'as dit et depuis j'avance beaucoup mieux.
 
Merci encore.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Champs vides dans une base mysql

 

Sujets relatifs
[php 4 /mysql 4.1] hashage mdp ?table MySQL dans tableau (à 2 dimensions?)
[MySQL & PHP] Obtenir les valeurs que peut prendre un champs SETmenu basé sur une seul image
Bouquin sur PHP/MySQL[MySQL][MD5][Java] Fonction de "déhashage"
Deplacer fichier d'index des tables mysqlConnexion a une base de données externe ?
[MySQL] Requête sur 2 tables un peu tordue 
Plus de sujets relatifs à : Champs vides dans une base mysql


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR