[PHP/MySQL] Parser le résultat d'une BDD
5 messages
• Page 1 sur 1
- Msieurduss
- Nouveau WRInaute

- Messages: 11
- Inscription: 30 Mai 2006
[PHP/MySQL] Parser le résultat d'une BDD
Bonjour à tous !
Voilà, j'ai une base de données avec, dedans, un champ "theme". Parfois, ce champ contient plusieurs mots. Les thèmes sont classés comme suit : theme1,theme2,theme3,... etc.
Je précise bien qu'ils sont comme cela dans la base...
Je voudrais les extraire et en faire une liste sur une page. S'il n'y avait qu'un seul thème à chaque fois, ça ne poserait aucun souci ! Mais là, je voudrais non seulement qu'il me les sépare s'il y en a plusieurs dans un même champ, et en plus qu'il ne me les répète pas (si par exemple j'ai un champ Theme1,Theme2 et un autre champ Theme2, j'aimerais qu'il ne me répète pas ce dernier puisqu'il est présent dans Theme1,Theme2).
Je ne sais pas du tout comment m'y prendre... J'ai bien essayé quelques petites manipulations avec les fonctions ereg (pour vérifier s'il y a ou non une virgule), explode pour parser le résultat... Mais rien à faire, je n'obtiens pas ce que je veux
.
Voici le code que j'ai bricolé, mais j'ai l'impression que je ne m'y prends pas du tout comme il faut
Merci d'avance !!
Voilà, j'ai une base de données avec, dedans, un champ "theme". Parfois, ce champ contient plusieurs mots. Les thèmes sont classés comme suit : theme1,theme2,theme3,... etc.
Je précise bien qu'ils sont comme cela dans la base...
Je voudrais les extraire et en faire une liste sur une page. S'il n'y avait qu'un seul thème à chaque fois, ça ne poserait aucun souci ! Mais là, je voudrais non seulement qu'il me les sépare s'il y en a plusieurs dans un même champ, et en plus qu'il ne me les répète pas (si par exemple j'ai un champ Theme1,Theme2 et un autre champ Theme2, j'aimerais qu'il ne me répète pas ce dernier puisqu'il est présent dans Theme1,Theme2).
Je ne sais pas du tout comment m'y prendre... J'ai bien essayé quelques petites manipulations avec les fonctions ereg (pour vérifier s'il y a ou non une virgule), explode pour parser le résultat... Mais rien à faire, je n'obtiens pas ce que je veux
Voici le code que j'ai bricolé, mais j'ai l'impression que je ne m'y prends pas du tout comme il faut
- Code: Tout sélectionner
$req=mysql_query("SELECT DISTINCT theme FROM table ORDER BY theme") or die ("Erreur de connexion a la BDD : ".mysql_error());
echo "<ul>";
$j=0;
while ($resultat=mysql_fetch_array($req)) {
$string[$j]=ereg(",",$resultat["theme"]);
if ($string[$j]) {
$resultat["theme"]=explode(",",$resultat["theme"]);
$i=0;
while($resultat["theme"][$i]) {
echo "<li><a href='carte.php?theme=".$resultat["theme"][$i]."'>".$resultat["theme"][$i]."</a></li>";
$i++;
}
} else {
echo "<li><a href='carte.php?theme=".$resultat["theme"][$i]."'>".$resultat["theme"][$i]."</a></li>";
}
}
echo "</ul>";
Merci d'avance !!
- Msieurduss
- Nouveau WRInaute

- Messages: 11
- Inscription: 30 Mai 2006
Merci pour ta réponse
!
Alors, en faisant un test (avec un seul tableau, sans base de données pour commencer) avec ceci :
J'obtiens effectivement ce que je veux.
Sauf que j'ai droit à un "Notice: Undefined offset: 5 in c:\program files\easyphp1-8\www\api googlemap\test.php on line 29" (normal me direz-vous
).
Je ne vois pas comment ne pas l'avoir... Comment écrire la même chose avec foreach ?
(le code suivant ne me renvoie que la première entrée du tableau :
Edit : en rajoutant un "isset" devant ma variable, dans le while, ça marche... Mouais, mais j'ai pas l'impression de faire les choses proprement
je suis toujours ouvert à tout éclairage de PHP possible 
Alors, en faisant un test (avec un seul tableau, sans base de données pour commencer) avec ceci :
- Code: Tout sélectionner
$var="theme1,theme2,theme3,theme4,theme1";
$var=explode(",",$var);
$tabl=array();
$i=0;
while ($var[$i]) {
if (!in_array($var[$i],$tabl)) {
array_push($tabl,$var[$i]);
echo $var[$i];
}
$i++;
}
J'obtiens effectivement ce que je veux.
Sauf que j'ai droit à un "Notice: Undefined offset: 5 in c:\program files\easyphp1-8\www\api googlemap\test.php on line 29" (normal me direz-vous
Je ne vois pas comment ne pas l'avoir... Comment écrire la même chose avec foreach ?
(le code suivant ne me renvoie que la première entrée du tableau :
- Code: Tout sélectionner
foreach ($var as $value) {
if (!in_array($var,$tabl)) {
array_push($tabl,$var);
echo $value;
}
$i++;
}
Edit : en rajoutant un "isset" devant ma variable, dans le while, ça marche... Mouais, mais j'ai pas l'impression de faire les choses proprement
- gomoz
- WRInaute discret

- Messages: 230
- Inscription: 29 Déc 2004
moi je ferai
$data1="theme1,theme2,theme3";
$data2="theme5,theme2";
$tab_of_themes = array_unique(array_merge(explode(',',$data1),explode(',',$data2)));
Normalement c'est juste mais ca depend de comment tu traite les données ensuite.
$data1="theme1,theme2,theme3";
$data2="theme5,theme2";
$tab_of_themes = array_unique(array_merge(explode(',',$data1),explode(',',$data2)));
Normalement c'est juste mais ca depend de comment tu traite les données ensuite.
5 messages
• Page 1 sur 1
Lectures recommandées sur ce thème :
- Récupérer résultat requête php/mysql dans Flash Mx
- Php/MySQL Utiliser pls fois le résultat d'une seule requête
- parser et sauver un flux XML dans une bdd > je sèche
- Parser XML et Mysql
- Problème mise à jour BDD et affichage résultat après UPDATE
- Parser xml php
- parser un flux dotclear en php
- Saturation BDD MySQL
- BDD MySQL en Bulgare ?
- Parser XMl avec PHP 5
Consultez la description détaillée des produits ou services de Google suivants : Google Whack
Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités


