Liste déroulante! NEED HELP !

BaO
Invité n'ayant pas de compte PHPfrance

01 juin 2005, 18:25

Bonjour,
Je suis un débutant en php (cela va faire une semaine que je travaille en PHP ).

J'ai une liste déroulante qui est alimenté par ma base.
Quand je selectionne un nom dans ma liste, je voudrais afficher les données de cette personne.
J'ai vu sur certains POST qu'on pouvais utilisé la fonction
onChange(); mais je ne sais pas comment crée mon script JS pr récuperer les données, ou l'id du nom selectionné.

Comment je pourrais faire??

MERCI d'avance.

Voici mon code :

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

Mammouth du PHP | 19672 Messages

01 juin 2005, 19:24

Il en manque un bout dans la partie html : et l'attribut value de la balise option ? elle sert à quoi à ton avis ?
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Petit nouveau ! | 3 Messages

01 juin 2005, 19:58

je ne sais pas ! :?

Mammouth du PHP | 19672 Messages

01 juin 2005, 20:51

Ok, donc tu ne débutes pas juste en php, le HTML est aussi un peu nouveau. Tu vas pas t'amuser.

Si tu veux récupérer quelque chose de ton formulaire, il faut que le contenu inscrit ou sélectionné dans le cas d'une liste soit identifié. Donc une balise option doit impérativement contenir un attribut value="" contenant la valeur que tu souhaites envoyer au traitement. Chaque balise option dans une liste aura en principe une valeur différente correspondant à ce qui est affiché.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

BFH
Eléphant du PHP | 214 Messages

01 juin 2005, 21:01

Je peux te donner un exemple tout fait t'aurais qu'a mettre le nom de tes champs à la place des miens mais tu doit attendre demain matin!

Sinon je te le dis vu que tu doit pas savoir : quand tu ecris du code utilise le bouton PHP situé au dessus de la zone de texte :
 ton code php !!
c'est plus facile comme ça pour les gens qui veulent lire ton post
Perdu dans la matrice avec un guide michelin ](*,) #-o
Adorateur de Cyrano
Parti puis revenu...

BFH
Eléphant du PHP | 214 Messages

02 juin 2005, 08:37

Tiens voila un truc qui fonctionne :
$query="SELECT * FROM ta_table WHERE tes_conditions";
$result=mysql_query($query);
?>
<table width="100%" border="0" cellspacing="0">
<tr><form method="get" action="Analyse2.php">	
<?/*Tout ce qui est dans le formulaire suivant sera envoyé à la page nommée Analyse2.php*/ ?>
<td rowspan="7">
<center><select name ="LI" size="20">
<?
while($row=mysql_fetch_assoc($result))
{
?>
<option value= "<?= $row['nom_champs_de_ta_table'];?>" >	
<?= $row["nom_champs_de_ta_table"]; ?>
</option><br>
<?
}
</select></center>
</td>	
</tr>
</form></table>
Voila je crois n'avoir rien oublié dans mon copié-collé, si t'as des questions n'hesite pas!
Perdu dans la matrice avec un guide michelin ](*,) #-o
Adorateur de Cyrano
Parti puis revenu...

Invité
Invité n'ayant pas de compte PHPfrance

02 juin 2005, 11:13

je vous remerci !!

Voici mon code :
<HTML><HEAD><TITLE>Formulaire Artiste</TITLE>
</HEAD>
<BODY>

<?
include("connex.php");

$target = "upload/image/";
$target10 = "upload/media/";
?>


<center>
Formulaire ARTISTE
</center>
<br><br>
<table width=100% height=100%>
	<tr>
	 <td>
	
	  <form method="post" action="traitement_artiste2.php" enctype="multipart/form-data">
	  <input type="hidden" name="post" value="1"> 
        <table>

		
         <tr>
           <td>
		   <br>
		   <fieldset>
		    <legend>Artiste</legend>
             Sélectionner le nom de l'artiste : 
			<select name="nom_artiste" onChange="location.href='?nom_artiste='+this.options[this.selectedIndex].value">
			  <?
			    $SQL = "SELECT nom_artiste FROM artiste";
				$res = mysql_query($SQL);
				while($val=mysql_fetch_array($res)) 
				{
				echo "<option>".$val["nom_artiste"]."</option>\n";
				}
			  ?>
            </select>
		   </fieldset>
           </td>
         </tr>
		 <? echo $_GET["nom_artiste"]; ?>
		 <tr>
		  <td>
		  <br>
		   <fieldset>
		   <input type="hidden" name="posted" value="1">  
	         <legend>Envoi d'image</legend>
	         <p>
             <label for="photo">Sélectionner l'image : </label>
             <input type="file" name="photo">
             </p>
			 <p>
			 LISTE DES FICHIERS AJOUTES
			 <BR><TABLE border="1">
			 <tr>
				<TH>Nom</TH>
				<TH>Taille</TH>
				<TH>Date</TH>
			 </tr>
			 <? $dir = opendir('upload/image/');
				$SQL = "SELECT nom_artiste FROM artiste where nom_artiste like''";
				$res = mysql_query($SQL);
				while ($f = readdir($dir))
					if(is_file($target.$f)) 
					{
			 ?>
			 
			 
				<?

				   echo "<TR>";
				   echo "<TD>".$f."</TD>";
				   echo "<TD align=right>".filesize($target.$f)."octet</TD>";
				   echo "<TD>".date("d/m/Y H:i:s",filectime($target.$f))."</TD>";
				   echo "<TD><A href=supression.php?file=".$f.">Supprimer</a></TD>";
				   echo "</TR>";
				 

				?>
             <? 
			       }
                 closedir($dir); 
		     ?>
			 </TABLE>
			 </p>
		   </fieldset>
		</tr>
	
	
	     <tr>
           <td>
		   <br>
		   <fieldset>
		   <legend>Extrait de presse</legend>
		   Entrer l'extrait de pressse : <br>
           <textarea cols="100" rows="10" name="txt_extrait">Saisissez l'extrait de presse</textarea>
		   <br>
		   Entrer la source : <input type="text" name="txt_source">
		   </fieldset>
           </td>
         </tr>
		 
		 
         <tr>
           <td>
		   <br>
		   <fieldset>
		   <legend>Discographie</legend>
			Entrer la discographie : <br>
            <textarea cols="50" rows="5" name="txt_disco">Saisissez la discographie</textarea>
			</fieldset>
           </td>
         </tr>  

		 <tr>
		  <td>
		  <br>
		   <fieldset>
		   <input type="hidden" name="postemedia" value="2">  
	         <legend>Envoi de média</legend>
	         <p>
             <label for="media">Sélectionner un fichier audio ou vidéo : </label>
             <input type="file" name="media">
             </p>
			 <p>
			 LISTE DES FICHIERS AJOUTES
			 <BR><TABLE border="1">
			 <tr>
			  <TH>Nom</TH>
			  <TH>Taille</TH>
			  <TH>Date</TH>
			 </tr>
				
			 <? 
				$dir10 = opendir('upload/media/');
				$SQL10 = "SELECT nom_artiste FROM artiste";
				$res10 = mysql_query($SQL10);
				 while ($f10 = readdir($dir10))
					if(is_file($target10.$f10)) 
					{
			 ?>
			 
			 
			 <?
				   echo "<TR>";
				   echo "<TD>".$f10."</TD>";
				   echo "<TD align=right>".filesize($target10.$f10)."octet</TD>";
				   echo "<TD>".date("d/m/Y H:i:s",filectime($target10.$f10))."</TD>";
				   echo "<TD><A href=supression2.php?file=".$f10.">Supprimer</a></TD>";
				   echo "</TR>";
			 ?>

             <? 
			        }
                 closedir($dir10); 
		     ?>
			 </TABLE>
			 </p>
		   </fieldset>
		  </td> 
		</tr>
		<TR>
		 <TD>
		  <BR><center><input type="submit" value="Ajouter" /></center>
		 <TD>   
        </TR>
        </table>
    </form>
</td></tr></table>

</BODY></HTML>
[/php]

BFH
Eléphant du PHP | 214 Messages

02 juin 2005, 12:00

Je crois qu'il y a un problème dans ton code :
while($val=mysql_fetch_array($res)) 
{ 
 echo "<option>".$val["nom_artiste"]."</option>\n"; 
} 
il faudrait :
while($val=mysql_fetch_array($res)) 
{ 
?>
<option value="<?=$val['nom_artiste']?>"><?=$val['nom_artiste'] ;?>
</option>;  
<?
} 

Sinon quand tu choisis un artiste et que tu valide le formulaire tu ne retourne pas son nom! (ce qui est passablement dommage)
Perdu dans la matrice avec un guide michelin ](*,) #-o
Adorateur de Cyrano
Parti puis revenu...

Invité
Invité n'ayant pas de compte PHPfrance

02 juin 2005, 14:40

merci pour la correction,
je voudrais savoir comment je pourais faire ceci toujours avec la liste déroulante:

quand je clique sur l'entreprise Y, j'aimerai afficher l'adresse(ou autre donnée ) de l'entreprise Y, quand je clique sur l'entreprise Z,affichier l'adresse(ou autre donnée) de l'entreprise Z...etc


MERCI D'avance

BFH
Eléphant du PHP | 214 Messages

02 juin 2005, 14:46

Tu le veux sur la même page ou bien sur la page suivante?

J'annonce tout de suite si tu veux le truc sur la même page je crois que c'est pas du code php qu'il te faut de plus moi je sais pas faire.
par contre si tu veux l'adresse sur la page suivante ya pas de problèmes! :wink:
Perdu dans la matrice avec un guide michelin ](*,) #-o
Adorateur de Cyrano
Parti puis revenu...

Petit nouveau ! | 3 Messages

02 juin 2005, 15:01

OK !
j'aurai voulu sur la même page, mais je voudrais bien ta solution sur une autre page !

MERCI

BFH
Eléphant du PHP | 214 Messages

02 juin 2005, 15:32

<table border="0" width=100%">
<tr><form method="get" action="Analyse2.php"><?/*Tout ce qui est dans le formulaire suivant sera envoyé à la page nommée Analyse2.php*/ ?>
<td rowspan="7">
<center><select name ="ENTREPRISE" size="20"> //ici c'est important !
<?
$query="SELECT * FROM Table_Entreprise";
$result=mysql_query($query);				
while($row=mysql_fetch_assoc($result))		
{	
?>
<option value= "<?= $row[' ID_Entreprise];?>" ><?= $row["Nom_Entreprise"];?></option><br>
<?
}
?>
</select></center>
</tr>
</table>

ça c'est ta page.
Maintenant la page Analyse2.php
if(isset($_GET["ENTREPRISE"]))
{
$ENTREPRISE=$_GET["ENTREPRISE"];
}

$query="SELECT Ce_que_tu_veux FROM Table_Entreprise WHERE ID_Entreprise='".$ENTREPRISE."';
$result=mysql_query($query);
$row=mysql_fetch_assoc($result);

echo $row ['Champs_Adresse']
Voila, je crois n'avoir rien oublié test quand même
Perdu dans la matrice avec un guide michelin ](*,) #-o
Adorateur de Cyrano
Parti puis revenu...

Petit nouveau ! | 3 Messages

02 juin 2005, 15:39

merci je test ca!!