[PHP/MySQL] Parser le résultat d'une BDD

Discussion dans 'Développement d'un site Web ou d'une appli mobile' créé par Msieurduss, 8 Juin 2006.

  1. Msieurduss
    Msieurduss Nouveau WRInaute
    Inscrit:
    30 Mai 2006
    Messages:
    11
    J'aime reçus:
    0
    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 ;)
    Code:
    			$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 !! :)
     
  2. Msieurduss
    Msieurduss Nouveau WRInaute
    Inscrit:
    30 Mai 2006
    Messages:
    11
    J'aime reçus:
    0
    Personne ne sait m'aider :cry: :cry: ?
     
  3. Malaiac
    Malaiac WRInaute occasionnel
    Inscrit:
    4 Mai 2005
    Messages:
    266
    J'aime reçus:
    0
    Je te conseille de séparer l'extraction et homogénéisation des données de la partie affichage.

    Avec des if !in_array , tu devrais t'en sortir
     
  4. Msieurduss
    Msieurduss Nouveau WRInaute
    Inscrit:
    30 Mai 2006
    Messages:
    11
    J'aime reçus:
    0
    Merci pour ta réponse :) !
    Alors, en faisant un test (avec un seul tableau, sans base de données pour commencer) avec ceci :

    Code:
    $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:
    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 ;) je suis toujours ouvert à tout éclairage de PHP possible ;)
     
  5. gomoz
    gomoz WRInaute discret
    Inscrit:
    29 Décembre 2004
    Messages:
    224
    J'aime reçus:
    0
    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.
     
Chargement...
Similar Threads - [PHP MySQL] Parser Forum Date
[PHP/MySQL] Choix du moteur MyISAM ou InnoDB ? Développement d'un site Web ou d'une appli mobile 14 Janvier 2017
[php/mysql] Eviter de faire 20 requêtes pour un affichage Développement d'un site Web ou d'une appli mobile 19 Janvier 2016
[PHP/MYSQL] Les articles les plus commentés Développement d'un site Web ou d'une appli mobile 22 Octobre 2011
[PHP/MySQL] Excepter une valeur dans un requête SQL en PHP Développement d'un site Web ou d'une appli mobile 18 Septembre 2010
[PHP/MySQL] Compter le nombre de checkbox cochées Développement d'un site Web ou d'une appli mobile 11 Septembre 2010
[PHP/MySQL] Augmenter la valeur de 1 sur une entrée INT Développement d'un site Web ou d'une appli mobile 3 Septembre 2010
[PHP/MYSQL] Besoin d'aide pour la simplification d'une requete Développement d'un site Web ou d'une appli mobile 9 Juillet 2009
[PHP/MYSQL] Action selon le contenu de la variable Développement d'un site Web ou d'une appli mobile 27 Mai 2009
[PHP/MySQL] Problème dans le tri Développement d'un site Web ou d'une appli mobile 26 Août 2008
[PHP/MySQL] Optimisation multiples requêtes Développement d'un site Web ou d'une appli mobile 24 Juin 2008
[php / mysql] Une grosse table ou plusieurs petites tables ? Développement d'un site Web ou d'une appli mobile 8 Avril 2008
[PHP/MYSQL] Une news par page Développement d'un site Web ou d'une appli mobile 20 Mars 2008
[PHP MYSQL] Affecter plusieurs enregistrements Développement d'un site Web ou d'une appli mobile 18 Décembre 2007
[php/MySQL] Tirage au sort avec pondération Développement d'un site Web ou d'une appli mobile 12 Décembre 2007
[résolu][php/MySQL] Problème d'appel à une base Développement d'un site Web ou d'une appli mobile 29 Août 2007
[PHP/MySQL] : se proteger des injections Développement d'un site Web ou d'une appli mobile 26 Avril 2007
[PHP-MySQL] : argument is not a valid MySQL ressource Développement d'un site Web ou d'une appli mobile 20 Février 2006
[phpMySQL] - Ecarter les colonnes vides Développement d'un site Web ou d'une appli mobile 8 Février 2006
[PHP MYSQL] Synchronisation des requêtes Administration d'un site Web 24 Juin 2005
[PHP/MYSQL] Besoin d'aide dans une requête Administration d'un site Web 17 Juin 2005