8791 sujets

Développement web côté serveur, CMS

Salut, j'ai un probleme vraiment con mais tres embetant Smiley ohwell .

J'essaye d'afficher deux liste deroulante en php qui recupere leurs informations dans deux table differentes de ma base de donnée.

Ici c'est un code exemple:

 <?php

mysql_connect("localhost", "root", "root");
mysql_select_db("gestion") or die("erreur de connexion au serveur $host");

$query = mysql_query("SELECT * FROM categorie");
echo '<select>';
while ($result = mysql_fetch_assoc($query)) {
     echo '<option value="'.$result['libq'].'">'.$result['libq'].'</option>';
}




$query = mysql_query("SELECT * FROM marque");
echo '<select>';
while ($result = mysql_fetch_assoc($query)) {
     echo '<option value="'.$result['libm'].'">'.$result['libm'].'</option>';
}
mysql_close($connect);

?>


Le soucis est que sur Firefox les deux listes s'affiche l'une a coté de l'autre sans espace et sur Safari une seule liste apparait contenant tous mes champs :s !

J'ai essayé de mettre un echo '<br>' entre les deux requetes mais aucun retour a la ligne, j'ai aussi essayé un echo " phrase d'exemple" mais elle n'apparait pas.

Je suis bloqué sur ca depuis deux jours Smiley ohwell .

Si vous pouviez m'aider Smiley biggrin .

Merci
Modifié par macbook-user (16 Dec 2010 - 11:03)
C'est pas un prob de php pur.
Est-ce que tu fermes les select car au vu de ton code ce n'est pas le cas Smiley smile
Merci pour la reponse, j'ai trouvé un autre code pour afficher une liste deroulante qui a l'air de mieu fonctionner, je le comprend mieu car comme tu dis les balises sont bien fermées dans celui ci:


<form>
   <select>
<?
$SQL = "SELECT * FROM marque";
$res = mysql_query($SQL);
while($val=mysql_fetch_array($res)) {
   echo "<option>".$val["libm"]."</option>\n";
}
?>
   </select>
</form>


Mais entre les balise option ici il n'y a qu'une variable qui apparait, quelle est la difference avec l'autre je ne comprend pas trop Smiley ohwell
la différence c'est que dans le 1er code tu attribues une valeur à chaque balise option mais pas dans le second. Sans valeur (value = "valeur") ton select ne servira a rien.

utilises la 1ere version d'écriture de balises option et c'est tout bon :
echo '<option value="'.$result['libq'].'">'.$result['libq'].'</option>';
Nukleo a écrit :
la différence c'est que dans le 1er code tu attribues une valeur à chaque balise option mais pas dans le second. Sans valeur (value = &quot;valeur&quot;) ton select ne servira a rien.

utilises la 1ere version d'écriture de balises option et c'est tout bon :
echo '&lt;option value=&quot;'.$result['libq'].'&quot;&gt;'.$result['libq'].'&lt;/option&gt;';



Merci pour la precision, j'ai utilisé la premiere solution en mettant les balise select et form autour comme ceci:
Categorie : 
<form>
	<select>
<?php

$query = mysql_query("SELECT * FROM categorie");
while ($result = mysql_fetch_assoc($query)) {
     echo '<option value="'.$result['libq'].'">'.$result['libq'].'</option>';
}



?>
	</select>
</form>


En fait ces deux listes sont dans un grand formulaire au format html:

<h3><u><strong> Ajout de produit </strong></u></h3>

<br>
  	<form action="ajout.php" method="post" id="form">

<br><br><br>

Categorie : 
<form>
	<select>
<?php

$query = mysql_query("SELECT * FROM categorie");
while ($result = mysql_fetch_assoc($query)) {
     echo '<option value="'.$result['libq'].'">'.$result['libq'].'</option>';
}



?>
	</select>
</form>


<br>
Marque:

<form>
   <select>
    
<?php


$query = mysql_query("SELECT * FROM marque");
while ($result = mysql_fetch_assoc($query)) {
     echo '<option value="'.$result['libm'].'">'.$result['libm'].'</option>';
}

?>
   </select>
</form>
<br>
Désignation :
<input name=designation type=text id="designation"  size=30>

<br><br><br>

Référence :
<input name=reference type=text id="reference"  size=30>
<br><br><br>

Code Barre :
<input name=codebarre type=text id="codebarre"  size=30>

<br><br><br>



Quantité :
<input name=quantite type=text id="quantite"  size=5>

<br><br><br>

Prix HT:
<input name=prixht type=text id="prixht"  size=5>
€

<br><br><br>

Commentaire:<br>
<textarea name="commentaire" rows="8" cols="35"></textarea>

<br><br>


<input type="submit" value="Ok" />	


</form>


Dans mon fichier ajout.php je recupere les valeurs du formulaire, et la ca coince a cause de mes deux listes deroulantes en php.

Au debut mon formulaire etait tout en html ( categorie & marque sous forme de liste deroulantes html) donc pour l'insertion dans la base de donnée aucun soucis je faisais comme ca:

<?php

mysql_connect("localhost", "root", "root");
mysql_select_db("gestion") or die("erreur de connexion au serveur $host");


// recupere les champs du formulaire dans des variables pour inserer dans la table

$categorie = $_POST['categorie'];

$marque = $_POST['marque']; 

$designation = $_POST['designation'];

$reference = $_POST['reference'];

$codebarre = $_POST['codebarre'];

$quantite = $_POST['quantite'];

$prixht = $_POST['prixht'];

$commentaire = $_POST['commentaire'];



//insert dans la table produit
$requete="insert into produit values ('','$categorie','$marque','$designation','$reference','$codebarre','$quantite','$prixht','$commentaire' )"; 

mysql_query ($requete);
 
mysql_close(); 


header("location:entree.html"); //retourne sur entree.html apres l'insertion
?>


Mais ca ne fonctionne plus a cause de marque & categorie, je dois mettre quoi comme variables ?

Merci
tes select ont besoin d'être només pour pouvoir récupérer les valeurs

<select name="categorie">...</select>

c'est ce nom qui sera récupérable dans ta variable $_POST
Merci pour la precision je test ca des que j'arrive Smiley lol


edit: Merci Nukleo!! Nikel ca fonctionne Smiley lol ! Je devais aussi enlever les balise <form> qui entourées mes listes et c'est nikel ca envoi dans la base de donnée Smiley lol . Une etape de faite Smiley smile , maintenant je dois trouver un moyen de faire un bouton a coté de marque et un a coté de categorie afin de pouvoir ajouté une marque ou une catagorie dans la table si celle ci n'est pas presente .
Modifié par macbook-user (16 Dec 2010 - 14:08)