Champs vides dans une base mysql

Champs vides dans une base mysql - PHP - Programmation

Marsh Posté le 18-08-2005 à 15:24:30    

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
Reply

Marsh Posté le 18-08-2005 à 15:24:30   

Reply

Marsh Posté le 18-08-2005 à 15:36:58    

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...

Reply

Marsh Posté le 18-08-2005 à 15:37:00    

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. ....

Reply

Marsh Posté le 18-08-2005 à 15:38:33    

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.

Reply

Marsh Posté le 18-08-2005 à 15:53:19    

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)

Reply

Marsh Posté le 18-08-2005 à 16:12:28    

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

Reply

Marsh Posté le 18-08-2005 à 16:38:39    

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.

Reply

Marsh Posté le 18-08-2005 à 16:45:13    

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 ?

Reply

Marsh Posté le 18-08-2005 à 19:33:11    

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
Reply

Marsh Posté le 19-08-2005 à 17:11:46    

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

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed