boucle en php - PHP - Programmation
Marsh Posté le 19-07-2012 à 15:39:19
C'est un tableau ou une table SQL ?
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!
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...
Marsh Posté le 19-07-2012 à 16:36:40
Merise est mort
Marsh Posté le 19-07-2012 à 16:49:41
Mais tu as une ou 2 table ?
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
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)
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. |
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']";
}
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
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 |
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 )
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.
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...
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 :
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?