afficher des données selon un select

Sabrina tech
Invité n'ayant pas de compte PHPfrance

20 avr. 2011, 12:19

BJR,

Je suis entrain de faire un programme pour emprunter un livre,
mon formulaire contient :
- Titre du livre ( un select dont les données viennent de ma base de données)
- Auteur : (champ texte )
- Cote : (champ texte)
- Date de sortie (champ texte )
- Date de retour (champ texte )

Mon problème consiste à : Je veux que l'auteur et la Cote (qui existent dans ma base de données) s'affiche automatiquement quand l'utilisateur sélectionne le livre à emprunter..

J'espère que c clair Et voici mon code du select si ca vous aident à m'aider
<?php
   echo '<select  name="select" class="Style2" >'."\n"; 
    //echo '<option value="-1">Choisir un livre<option>'."\n"; 
   
     // Récupération des informations triées par ordre alphabétique 
    include "connexion.php";
  
    $sql = "SELECT id,Titre  FROM livres ORDER BY Titre"; 
      $ReqLog = mysql_query($sql); 
   
        while ($resultat = mysql_fetch_row($ReqLog)) 
		{ 
      echo '<option value="'.$resultat[0].'">'.$resultat[1]; 
        echo '</option>'."\n"; 
	
      } 
   
echo '</select>'."\n"; 
?>		

J'attends vos réponses et Merci d'avance

ViPHP
xTG
ViPHP | 7331 Messages

20 avr. 2011, 12:46

Pas très bien compris ce que tu souhaitais.

L'utilisateur a déjà choisi son livre et tu veux que le select pointe dessus ?

Eléphant du PHP | 241 Messages

20 avr. 2011, 12:49

Salut,
Pas très bien compris ce que tu souhaitais.

L'utilisateur a déjà choisi son livre et tu veux que le select pointe dessus ?
Je pense que le <select> représente la liste de tous les livres et que l'utilisateur choisi un livre dans cette liste et qu'effectivement c'est au moment du choix que les infos s'affichent pour le livre sélectionné.

___________________________

il va falloir utiliser du javascript.
Tu peux dans tes <option> rajouter un onclick="", et ainsi faire l'action voulu, soit ouvrir une page, soit afficher du texte etc.

Le plus simple pour ce que tu veux faire est de créer un <div> qui contiendra le texte à afficher quand la personne choisira le livre dans la liste.
Une petite fonction javascript simple pour réaliser ceci :

Code : Tout sélectionner

<script type="text/javascript"> function affiche(descr,id) { if(document.getElementById) { document.getElementById(id).innerHTML = descr; } } </script>
Et le code php modifié :
<?php
    echo '<select  name="select" class="Style2" >'."\n"; 
     //echo '<option value="-1">Choisir un livre<option>'."\n"; 
    
      // Récupération des informations triées par ordre alphabétique 
     include "connexion.php";
   
     $sql = "SELECT id,Titre  FROM livres ORDER BY Titre"; 
       $ReqLog = mysql_query($sql); 
    
         while ($resultat = mysql_fetch_row($ReqLog)) 
                 { 
       echo '<option value="'.$resultat[0].'" onclick="affiche(\'Auteur :'.$resultat[2].'<br />Cote :'.$resultat[3].'\',\'descr\')">'.$resultat[1]; 
         echo '</option>'."\n"; 
         
       } 
    
echo '</select>'."\n"; 
?>
<div id="descr"></div>       
Par contre avec du CSS il faut penser à donner une taille au <div id="descr">

Sabrina tech
Invité n'ayant pas de compte PHPfrance

20 avr. 2011, 15:20

Merci pour ta réponse, Mais j'arrive pas à comprendre que fais cette fonction affiche et à quoi elle sert (je n'ai aucune idée sur le Java script)

Et pour etre plus claire, le <select> affiche la liste de tous les livres qui existent dans ma tables et dont l'utilisateur doit choisir un livre dans cette liste, et à ce moment, les infos (auteur et Cote) du livre sélectionné doivent s'afficher et bien sure venant de la même table.

Veuillez mieux m'explique :priere:

ViPHP
xTG
ViPHP | 7331 Messages

20 avr. 2011, 15:30

Dans ce cas c'est précisément ce pourquoi misterflo a répondu.
L'évènement onclick permet de lancer une fonction lors du clic sur l'élément.
Donc au clic sur un livre la fonction se lance pour remplir la div avec le contenu passé en paramètre à la fonction : les informations du livre.

Sabrina tech
Invité n'ayant pas de compte PHPfrance

20 avr. 2011, 16:14

OK mais j'ai pas compris ce que je dois faire,

J'ai ajouté la fonction affiche à mon code et j'ai modifié mon code comme a fais misterflo mais ca n'as pas marché,
aussi je veux savoir : la modification qu'à fais, dois etre sur le meme code ou un deuxième code ?

ViPHP
xTG
ViPHP | 7331 Messages

20 avr. 2011, 16:18

Les données ne sont pas échappées, de là doit provenir l'erreur...
echo '<option value="'.$resultat[0].'" onclick="affiche(\'Auteur :'.addslashes($resultat[2]).'<br />Cote :'.addslashes($resultat[3]).'\',\'descr\')">'.$resultat[1]; 
La fonction addslashes() permet de transformer l'étoile en l\'étoile, ce afin de ne pas rentrer en conflit avec les quotes de echo.

Sabrina tech
Invité n'ayant pas de compte PHPfrance

20 avr. 2011, 16:23

Merci pour toi mais vraiment j'ai pas compris ce que tu veux dire, j'ai pas compris ou es l'erreur :oops:

Sabrina tech
Invité n'ayant pas de compte PHPfrance

20 avr. 2011, 16:47

Bon je pour vous aider à mieux comprendre ce que je dois faire voici mon formulaire qui manque (l'affichage automatique de l'auteur et de la cote du livre sélectionné)

<table width="493" border="0" align="left">
    
	<tr>
      <td><form  method="post" enctype="multipart/form-data" id="form1">
       
     	<table width="718" height="166" border="0" align="center">
         
       		 <tr>
           <td width="157"><strong>Intitulé du Livre </strong></td>
            <td width="541">		
			


<?php
   echo '<select  name="select" class="Style2" >'."\n"; 
    //echo '<option value="-1">Choisir un livre<option>'."\n"; 
   
     // Récupération des informations triées par ordre alphabétique 
    include "connexion.php";
  
    $sql = "SELECT id,Titre  FROM livres ORDER BY Titre"; 
      $ReqLog = mysql_query($sql); 
   
        while ($resultat = mysql_fetch_row($ReqLog)) 
		{ 
      echo '<option value="'.$resultat[0].'">'.$resultat[1]; 
        echo '</option>'."\n"; 
		
	
      } 
   
echo '</select>'."\n"; 
?>			</td>
		 </tr>

			
		   <tr>
           <td width="157"><strong>Auteur(s) </strong></td>
            <td width="541"><input type="text" name="textfield2"  /> </td>
          </tr>
		  
		   <tr>
          <td><strong>Cote</strong></td>
          <td><input type="text" name="textfield3"  />    </td>
          </tr>
  
         <tr>
            <td><strong>Date de Sortie </strong></td>
            <td><input type="text" name="textfield4"  />   </td>
        </tr>
 
          <tr>
         <td><strong>Date de retour </strong></td>
            <td><input type="text" name="textfield5" 	 />  </td>
         </tr>
 		 
         <tr>     </tr>
       </table>

Sabrina tech
Invité n'ayant pas de compte PHPfrance

20 avr. 2011, 17:20

OKKKKKKKKKKKKKK
enfin ca marche,
l'erreur été que je dois ajouté les champs Auteur et cote dans ma requête,

j'ai affiché le résultat et il est vrai mais il me manque une seul chose c que je veux que les resultats affichés (l'auteur et la Cote) doivent etre affiché dans un input texte que j'ai déja créer
avez vous une idée

Amine123
Invité n'ayant pas de compte PHPfrance

16 août 2019, 04:02

Bonjour. J’ai moi aussi le même type de programme sauf que je n’ai pas le droit d’utiliser JavaScript. Je dois écrire un code 100% php. Aidez-moi s’il vous plaît

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 8218 Messages

16 août 2019, 12:05

Bonjour. J’ai moi aussi le même type de programme sauf que je n’ai pas le droit d’utiliser JavaScript. Je dois écrire un code 100% php. Aidez-moi s’il vous plaît
Bonjour,

Je t'encourage à créer un nouveau sujet en expliquant précisément ce que tu cherches à faire, ce que tu as déjà essayé et où tu bloques.
Cela te permettra d'obtenir + de réponses qui seront adaptées à ta question, plutôt que de prendre la suite d'un vieux sujet de 2011 ;)
Quand tout le reste a échoué, lisez le mode d'emploi...