Menu déroulant au sein d'une SQL

Eléphant du PHP | 65 Messages

28 juil. 2006, 08:25

Bonjour !

J'ai testé de mettre un menu déroulant dont les informations "internes" proviennent d'une requete SQL
Cependant je n'arrive pas à faire en sorte que tout se mettent dans un même menu déroulant. Il m'en fait pleins!
Malgré mes recherches je ne trouve pas la solution :/
<?php 
// on se connecte à MySQL 
$db = mysql_connect('***', '***', '***'); 

// on sélectionne la base 
mysql_select_db('Boosters',$db);

{ 
// on crée la requête SQL 
$sql = 'SELECT * FROM Boosters ORDER BY Reference_Booster ASC'; 
}

// on envoie la requête 
$req = mysql_query($sql) or die('Erreur SQL !<br><font size="2">'.$sql.'<br>'.mysql_error()); 

// on fait une boucle qui va faire un tour pour chaque enregistrement 
while($data = mysql_fetch_assoc($req)) 
    { 
    // on affiche les informations de l'enregistrement en cours 
    echo '<SELECT name="Type_Carte">
      <OPTION selected></OPTION>
      <OPTION value="'.$data['Nom_Booster'].'">'.$data['Nom_Booster'].'</OPTION>
    </SELECT>';
    } 

// on ferme la connexion à mysql 
mysql_close(); 
?>
Je m'en doutais que cela en crerai pleins mais je ne trouve pas la documentation adapté a ce problème :/

Quelqu'un pourrait-il m'aider ?

Merci :oops:

Mammouth du PHP | 1511 Messages

28 juil. 2006, 10:28

<?php 
// on se connecte à MySQL 
$db = mysql_connect('***', '***', '***'); 

// on sélectionne la base 
mysql_select_db('Boosters',$db);

{ 
// on crée la requête SQL 
$sql = 'SELECT * FROM Boosters ORDER BY Reference_Booster ASC'; 
}

// on envoie la requête 
$req = mysql_query($sql) or die('Erreur SQL !<br><font size="2">'.$sql.'<br>'.mysql_error()); 

// on fait une boucle qui va faire un tour pour chaque enregistrement 
while($data = mysql_fetch_assoc($req)) 
    { 
    // on affiche les informations de l'enregistrement en cours 
    echo '<SELECT name="Type_Carte">
      <OPTION selected></OPTION>
      <OPTION value="'.$data['Nom_Booster'].'">'.$data['Nom_Booster'].'</OPTION>';
    } 
echo '</SELECT>';
// on ferme la connexion à mysql 
mysql_close(); 
?>
Dans le script précedent, le problème est que tu as inclus un menu déroulant entier dans la boucle, aloirs qu'il ne fallait inclure que le parametre...
Donc la solution serait plutôt:
<?php 
// on se connecte à MySQL 
$db = mysql_connect('***', '***', '***'); 

// on sélectionne la base 
mysql_select_db('Boosters',$db);

{ 
// on crée la requête SQL 
$sql = 'SELECT * FROM Boosters ORDER BY Reference_Booster ASC'; 
}

// on envoie la requête 
$req = mysql_query($sql) or die('Erreur SQL !<br><font size="2">'.$sql.'<br>'.mysql_error()); 

// on fait une boucle qui va faire un tour pour chaque enregistrement 
echo '<SELECT name="Type_Carte">';
echo '<OPTION selected></OPTION>';
while($data = mysql_fetch_assoc($req)) 
    { 
    // on affiche les informations de l'enregistrement en cours 
      echo '<OPTION value="'.$data['Nom_Booster'].'">'.$data['Nom_Booster'].'</OPTION>';
    } 
echo '</SELECT>';
// on ferme la connexion à mysql 
mysql_close(); 
?>
c'est plus logique étant donné qu'il n'y a que l'option a repeter et non la liste déroulante ;)
@+

Eléphant du PHP | 65 Messages

28 juil. 2006, 10:47

Ok c'est cool merci je comprend mieux le principe j'en prend bonnes notes :wink:

Eléphant du PHP | 65 Messages

28 juil. 2006, 11:16

Est-ce normal qu'on ne puisse pas formaté le texte au sein de la selection ?

par exemple si je fais :
echo '<OPTION value="'.$data['Nom_Booster'].'">[b]'.$data['Nom_Booster'].'[/b]</OPTION>';
Ca ne marche pas il ne le met pas en gras...

Merci d'avance

EDIt : en effet même ici il ne l'affiche pas :/

Idem quand je veux mettre une image à l'intérieur, il ne veux rien afficher :cry:

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

28 juil. 2006, 12:04

Il n'y a rien qui dit de mettre du gras ici:
echo '<OPTION value="'.$data['Nom_Booster'].'">'.$data['Nom_Booster'].'</OPTION>';
Tu veux placer une image dans la liste SELECT ?!

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Eléphant du PHP | 65 Messages

28 juil. 2006, 12:56

sisi jte jure j'ai mis <b></b> mais il l'affiche pas :)

oui par exemple je veux qu'if affiche dans le menu déroulant :

l'image de la langue / reference / nom

or il arrive pas à afficher l'image

:oops:

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

28 juil. 2006, 13:23

Une liste ne supporte que du texte simple (sans formatage).

Tu peux mettre du gras mais en passant par du CSS et l'image c'est impossible.

Tu peux éventuellement construire une vrai fausse liste avec un div imitation liste toujours avec du CSS pour placer une image.

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute