boucle en php

boucle en php - PHP - Programmation

Marsh Posté le 19-07-2012 à 15:19:21    

bonjour à tous,
 
alors je vous expose mon probleme, j'ai une table qui se présente ainsi :
 
 

Code :
  1. Matable
  2. id                             code
  3. tomate                        rouge
  4. tomate                        verte
  5. rose                            blanche
  6. rose                            jaune
  7. ...                                             ...


Et je voudrais, remplir une "string" de cette maniere :
 
$MaString =
 
Ma valeur est "id" et ses couleurs sont "rouge"
et ses couleurs sont "verte"
... !!!
 
Ma valeur est "id2" et ses couleurs sont ""
.... !!!
 
;
voilà, je voudrai écrire une seule fois "id" mais avec tous ses codes?
auriez vous une idée de boucle à faire pour cela?

Reply

Marsh Posté le 19-07-2012 à 15:19:21   

Reply

Marsh Posté le 19-07-2012 à 15:39:19    

C'est un tableau ou une table SQL ?


---------------
www.pronovolley.fr Faites vos prono sur la ligue de Volley et défiez vos amis. Des cadeaux en fin d'année  www.levoll.fr
Reply

Marsh Posté le 19-07-2012 à 15:47:50    

Ce que je veux, c'est crée un script qui permet de reprendre les valeurs de ma table!

Reply

Marsh Posté le 19-07-2012 à 16:35:08    

Un id est unique : comment ça se fait qu'il y'a des entrées avec le même id du coup :??:
 
On devrait normalement avoir une table avec les ID et qq infos dessus et ne table couleur (en relation 1-n avec la première table), contenant les couleurs de chaque id...


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 19-07-2012 à 16:36:40    

Merise est mort :o


---------------
www.pronovolley.fr Faites vos prono sur la ligue de Volley et défiez vos amis. Des cadeaux en fin d'année  www.levoll.fr
Reply

Marsh Posté le 19-07-2012 à 16:47:37    

On va dire que Id n'est pas unique !!!! :)

Reply

Marsh Posté le 19-07-2012 à 16:49:41    

Mais tu as une ou 2 table ?


---------------
www.pronovolley.fr Faites vos prono sur la ligue de Volley et défiez vos amis. Des cadeaux en fin d'année  www.levoll.fr
Reply

Marsh Posté le 19-07-2012 à 17:09:35    

j'ai une seule table!!!

Reply

Marsh Posté le 19-07-2012 à 17:20:32    

Commence par faire un truc propre avec 2 tables une pour définir ton végétal et une autre pour attribué les couleurs.

 

C'est pas plus long de faire propre.

 

Ensuite tu fais une bête requête avec jointure:

 

Select v.nom_vegetal, c.couleur from vegetal v,couleur c
where v.id_vegetal=c.id_vegetal
order by 1

 


Message cité 1 fois
Message édité par KLeMiX le 19-07-2012 à 17:20:49

---------------
www.pronovolley.fr Faites vos prono sur la ligue de Volley et défiez vos amis. Des cadeaux en fin d'année  www.levoll.fr
Reply

Marsh Posté le 20-07-2012 à 21:55:06    

On devrait s'en sortir avec GROUP_CONCAT :)  
SELECT id, GROUP_CONCAT(code)
FROM MaTable$
GROUP BY id;
 
(à voir pour la syntaxe précise)


---------------
Doucement le matin, pas trop vite le soir.
Reply

Marsh Posté le 20-07-2012 à 21:55:06   

Reply

Marsh Posté le 21-07-2012 à 11:09:42    

KLeMiX a écrit :

Commence par faire un truc propre avec 2 tables une pour définir ton végétal et une autre pour attribué les couleurs.
 
C'est pas plus long de faire propre.
 
Ensuite tu fais une bête requête avec jointure:
 
Select v.nom_vegetal, c.couleur from vegetal v,couleur c
where v.id_vegetal=c.id_vegetal
order by 1
 
 


 
Pourquoi tu veux faire 2 tables pour stocker des données sur 2 colonnes ?
Une clé primaire serait suffisante... 3 colonnes, pkid, nom_vege, color_vege
 
Si mon php n'est pas trop rouillé, ça marcherait comme ça :
 
$sql = "select count(*) as total from matable";
$result = mysql_query($sql) or die(mysql_error());
$row = mysql_fetch_array($result);
$it=$row['total'];
 
for ($i=1;$i<=$it;$i++) {
     
$sql = "select nom_vege from matable where pkid=$i";
$result = mysql_query($sql) or die(mysql_error());
$row = mysql_fetch_array($result);
$mastring="Ma valeur est $row['nom_vege'] et ses couleurs sont $row['color_vege']";
}

Reply

Marsh Posté le 21-07-2012 à 11:36:35    

parce qu'il a dit qu'un végétal pouvait avoir plusieurs couleurs, donc relation 1-n, donc 2 tables :o


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 21-07-2012 à 13:22:45    

rufo a écrit :

parce qu'il a dit qu'un végétal pouvait avoir plusieurs couleurs, donc relation 1-n, donc 2 tables :o


 
ha ok, toutes mes excuses, j'avais pas vu qu'il y avait 2 couleurs... enfin, j'ai quand même l'impression d'utiliser un bazooka pour tuer un moustique  
 
C'est pas super nickel joli mais couleur1, couleur2 (avec couleur2 pouvant être NULL), ça le fait aussi surtout pour un débutant...
 
Tu rajoutes juste un  
 
if (is_null($row['color2'])) {
   $mastring="Ma valeur est $row['nom_vege'] et sa couleur est $row['color1]";  
} else {
   $mastring="Ma valeur est $row['nom_vege'] et ses couleurs sont $row['color1] et $row['color2]";
}
 
dans la boucle for...
 
Par contre, s'il y a plus de 2 couleurs, effectivement, il n'y pas le choix, il faut 2 tables + jointure (sans oublier la clé étrangère dans la table couleurs ;) )


Message édité par zebeps le 21-07-2012 à 13:25:22
Reply

Marsh Posté le 23-07-2012 à 13:38:35    

Et si demain tu rajoutes une 3 couleurs tu recodes tous ?? (les tomates sont vertes, rouges ou jaunes)
 
C'est pas plus long de faire propre des le début.


---------------
www.pronovolley.fr Faites vos prono sur la ligue de Volley et défiez vos amis. Des cadeaux en fin d'année  www.levoll.fr
Reply

Marsh Posté le 23-07-2012 à 14:05:55    

+1 pour la méthode propre. Ca lui apprendre les "bonnes manières" dès le début...


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Sujets relatifs:

Leave a Replay

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