Liste déroulantr

aycha -  
avion-f16 Messages postés 19182 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour à tous
voilà lj'ai crée en php une liste déroulante de codes de services à partir de la base et je voudrais, après une clique,afficher sur la même page les autres données relatives à ce service.merci bien
voici le code:

<?php
//connection au serveur
$connect = mysql_connect( "localhost", "root", "" ) or die('erreur de connexion');

//sélection de la base de données:
$db = mysql_select_db( "gestion_stock" ) or die('base introuvable');
?>
<form id="form1" name="form1" method="POST" action="">

<?php
$cde="select * from service order by 'desig_sce'";
$reqt=mysql_query($cde) or die ('erreur sql'.$cde.'<br>'.mysql_error());
?>
<label></label>
<pre> <select name="selectcde_sce"> <option> </option> <?php while($sql=mysql_fetch_object($reqt)){?> <option> <?php echo( $sql->cde_sce);}?></option> </select>
</pre>
<pre> <?php
$cde_sce = $_GET['cde_sce'];
$req="select desig_sce from service where cde_sce='$cde_sce'";
$desig = mysql_query($req) or die ('erreur sql'.$req.'<br>'.mysql_error());
while($result=mysql_fetch_object($desig))
{?> <input name="desig_sce" type ="text" size="37" value="<?php echo( $result->desig_sce);?>" />
</pre>
<pre> <input name="type_sce" type ="text" size="37" value="<?php echo( $result->type_sce);?>" /> <?php
}
?>
</pre>
</form>
Configuration: Windows XP
Firefox 2.0.0.20

3 réponses

  1. avion-f16 Messages postés 19182 Date d'inscription   Statut Contributeur Dernière intervention   4 511
     
    Orientes-toi vers de l'AJAX si tu as beaucoup de services.
    Si tu n'as que 2-3 services, alors affiches toutes les données de tous les services mais masques-les. Ensuite, tu devra les afficher en Javascript.

    Je te conseil ce tuto pour apprendre l'AJAX.
    Pour la deuxième solution, voilà un script que je viens de pondre.
    0
    1. aycha
       
      Merci bcp avion-f16.
      Je vais essayer ta proposition, si j'ai un problème je vais te conacter.
      0
  2. aycha
     
    bonjour,notre pbme n'est pas encore résolu et j'ai aucune idée sur Ajax et xml.Merci bien d'avance
    0
  3. avion-f16 Messages postés 19182 Date d'inscription   Statut Contributeur Dernière intervention   4 511
     
    Pour l'AJAX, c'est très simple. Créer une page services-ajax.php qui ne contient que du PHP.
    <?php
    // Fait les opérations nécessaire pour retourner la description du service demadné 
    // (contenu dans $_POST['service'];)
    // Voici l'exemple que j'ai fais pour tester :
    if($_POST['service'] == 'html') {
    	echo 'Nous développons pour vous un site Web totalement fonctionnel.<br/><a href="#">Plus d\'info</a>';
    }
    elseif($_POST['service'] == 'css') {
    	echo 'Nous pouvons réaliser votre design au prix le plus bas.<br/><a href="#">Plus d\'info</a>';
    }
    elseif($_POST['service'] == 'php') {
    	echo 'Nos développeurs peuvent créer un site Web intéractif avec espace d\'administration, système de news, ... ou une application Web.<br/><a href="#">Plus d\'info</a>';
    }
    elseif($_POST['service'] == '--') {
    	echo '';
    }
    else {
    	echo 'error';
    }
    ?>


    Dans ta page HTML, place ce script entre <head> et </head>
    <script type="text/javascript">
    function afficherService() {
    	var service = document.getElementById('service').value;
    	var xhr = null;
    
    	if (window.XMLHttpRequest || window.ActiveXObject) {
    		if (window.ActiveXObject) {
    			try {
    				xhr = new ActiveXObject("Msxml2.XMLHTTP");
    			} catch(e) {
    				xhr = new ActiveXObject("Microsoft.XMLHTTP");
    			}
    		} else {
    			xhr = new XMLHttpRequest(); 
    		}
    	} else {
    		alert("Votre navigateur ne supporte pas l'objet XMLHTTPRequest...");
    		return;
    	}
    	
    	xhr.onreadystatechange = function() {
    		if (xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 0)) {
    			document.getElementById('info-service').innerHTML = xhr.responseText;
    		}
    	};
    	xhr.open("POST", "services-ajax.php", true);
    	xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded")
    	xhr.send("service=" + service);
    	
    	return false;
    }
    </script>


    Ton formulaire :
    <form method="post" action="" onsubmit="return afficherService();">
    	<fieldset>
    		<legend>Nos services</legend>
    		
    		<p>
    			<label for="service">Service :</label>
    			<select name="service" id="service" onchange="afficherService();">
    				<!-- Le contenu de la liste, peut-être généré par PHP -->
    				<option value="--">--</option>
    				<option value="html">HTML</option>
    				<option value="css">CSS</option>
    				<option value="php">PHP</option>
    			</select>
    		</p>
    		<p>
    			<input type="submit" value="Plus d'info" />
    		</p>
    	</fieldset>
    </form>
    <!-- Tu peux le personnalisé comme tu veux mais laisse le onchange sur select, onsubmit sur form, et l'id sur le select -->


    Pour finir, il te faut un div/p ayant comme id 'info-service'.
    Si tu veux télécharger mon exemple : Télécharger
    0