remplire un select via bdd

Mammouth du PHP | 620 Messages

16 sept. 2009, 17:31

je voudrait remplir un select en fonction d'un champ de ma base de données sql.
les données dans mon champ "types" sont par exemple : paysages villes montagnes paysages paysages autres ....
et dans mon select je voudrai automatiquement avoir : paysages montagnes autres villes

Actuellement je remplissait mon select moi meme mais je me suis dit pourquoi ne pas automatiser le chose.

--> mon code acutel est:
<form action="search.php" method="post">
Rechercher par 
<select name="rechercherpar">
<option>Paysages</option>
<option>Villes et Villages</option>
</select>
Mot clé
<input type="text" name="mot_cle">
<input type="submit" value="Rechercher">
</form>
comment automatiser le remplissage du select ?
Modifié en dernier par fabrice88250 le 16 sept. 2009, 18:19, modifié 1 fois.

ViPHP
AB
ViPHP | 5818 Messages

16 sept. 2009, 17:52

je voudrait remplir un select en fonction d'un champ de ma base de données sql.
les données dans mon champ "types" sont par exemple : paysages villes montagnes paysages paysages autres ....
et dans mon champ je voudrai automatiquement avoir : paysages montagnes autres
C'est possible ou pas possible, ça dépend. Tu veux faire quoi ? Enlever les doublons ?

Si oui ton exemple n'est pas bon car il devrait y avoir "ville" dans ton select.
Ou alors enlever les doublons et supprimer "ville" ?

L'automatisation est possible si tu arrives à la formaliser clairement.

Mammouth du PHP | 620 Messages

16 sept. 2009, 18:21

oui désolé j'ai edité.
et oui je voudrais evité les doublons dans mon select et donc ne recuperer dans que les types differents.

ViPHP
AB
ViPHP | 5818 Messages

16 sept. 2009, 18:39

Trivialement tu peux faire comme ceci :
$chaine = 'paysages villes montagnes paysages paysages autres';

$tab_mot = explode(' ',$chaine);
$tab_mot = array_unique($tab_mot);

// Vérification du tableau retourné :
echo '<pre>';
print_r($tab_mot);
echo '</pre>';

Mammouth du PHP | 620 Messages

16 sept. 2009, 19:25

n'ayant pas reussi avec ta methode j'ai trouvé une autre solution pour qu'il n'y ai pas de doublons
$sql = "SELECT DISTINCT type FROM IWgalerie"; // requéte SQL   
		$req = mysql_query($sql) or die('<u>Probleme SQL</u> : '.$sql.'<br>'.mysql_error());  // envoie de la requéte 

        while($resultat = mysql_fetch_array($req))   
		{
		echo $resultat['type'].'<br/>';
		}
du coup j'affiche bien juste les types et une seule fois mais je ne comprend pas comment avoir le resultat dans un select de mon formualire.

ViPHP
ViPHP | 2144 Messages

17 sept. 2009, 10:06

Il te reste juste à mixer ton code qui récupère les valeurs dans la db avec le code html de ton select:

Au lieu d'avoir les valeurs de tes options directement le code, tu vas utiliser celles qui proviennent de la db:
<form action="search.php" method="post">
Rechercher par
<select name="rechercherpar">
<?php
$sql = "SELECT DISTINCT type FROM IWgalerie"; // requéte SQL  
                $req = mysql_query($sql) or die('<u>Probleme SQL</u> : '.$sql.'<br>'.mysql_error());  // envoie de la requéte

        while($resultat = mysql_fetch_array($req))  
                {
                echo '<option>'.$resultat['type'].'</option';
                }
?>
</select>
<input type="text" name="mot_cle">
<input type="submit" value="Rechercher">
</form>