Partage
  • Partager sur Facebook
  • Partager sur Twitter

Besoin de vos lumieres svp.

    27 février 2009 à 10:04:49

    Bonjour,
    Je code parfois quelque petits trucs en php avec les moyens du bord, parfois j'y arrive, parfois je bloque sur certaines choses ... La je dois utiliser un peu de java ...

    En effet je dois réaliser un petit formulaire permettant la sélection dans une liste déroulante d'un fournisseur. Puis, lorsque le fournisseur est sélectionné, alors on affiche les produits de celui ci.
    (après je peux envoyer l'id produit dans un formulaire par exemple ...)

    Je bloque totalement sur ce script :(

    ma page.php
    include('script.js');
    include('species.php');
    	
    
    
    echo "<form action='tri.php' method='post'>";
    
    			echo '<select name="manufacturers_id">';
    			$requette = mysql_query("SELECT * FROM manufacturers order by manufacturers_name");
    			while ($donnee = mysql_fetch_array($requette))
    				{
    				echo "<option value=".$donnee["manufacturers_id"].">".$donnee["manufacturers_name"]."</option>\n";
    				}
    				echo "</select>";
    				
    			
    			echo '<select name="products_model">';
    			$requette2 = mysql_query("SELECT products_model, products_id from products where manufacturers_id = '".$_POST["manufacturers_id"]."' ");
    			while ($donnee2 = mysql_fetch_array($requette))
    				{
    				echo "<option value=".$donnee2["products_id"].">".$donnee2["products_model"]."</option>\n";
    				}
    				echo "</select>";	
    				
    				
    			echo "<input type='submit' Value='Trier'>";
    ?>
    



    mon script java
    var 11    = f.elements["list1"]; 
    	var l2    = f.elements["list2"]; 
    	var index = l1.selectedIndex; 
    	if(index < 1) 
    	   l2.options.length = 0; 
    	else { 
    	   var xhr_object = null; 
    	     
    	   if(window.XMLHttpRequest) // Firefox 
    	      xhr_object = new XMLHttpRequest(); 
    	   else if(window.ActiveXObject) // Internet Explorer 
    	      xhr_object = new ActiveXObject("Microsoft.XMLHTTP"); 
    	   else { // XMLHttpRequest non supporté par le navigateur 
    	      alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest..."); 
    	      return; 
    	   } 
    	 
    	   xhr_object.open("POST", "species.php", true); 
    	     
    	   xhr_object.onreadystatechange = function() { 
    	      if(xhr_object.readyState == 4) 
    	         eval(xhr_object.responseText); 
    	   } 
    	 
    	   xhr_object.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); 
    	   var data = "manufacturers_id"+escape(l1.options[index].value)+"&form="+f.name+"&select=list2"; 
    	   xhr_object.send(data); 
    	}
    



    mon tri.php
    <?php
    		
    	$query  = "SELECT products_model, manufacturers_id FROM products where = '".$_POST["manufacturers_id"]."'"; 
    
    	$result = @mysql_query($query); 
    	 
    	echo 'var o = null;'; 
    	echo 'var s = document.forms["'.$_POST["form"].'"].elements["'.$_POST["select"].'"];'; 
    	echo 's.options.length = 0;'; 
    	while ( $r = mysql_fetch_array($result)) 
    	    echo 's.options[s.options.length] = new Option("'.$r["products_model"].'");'; 
    	 
    	@mysql_close($mysql_db); 
    	?>
    



    code d'erreur affiché actuellement :

    var o = null;var s = document.forms[""].elements[""];s.options.length = 0;
    Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in c:\program files\easyphp1-8\www\dev\tri.php on line 12

    Ligne en question : while ( $r = mysql_fetch_array($result))


    Si quelqu'un pouvait me donner un petit coup de pouce ca serai super car je bloque totalement.
    J'adore chercher mais la je vois vraiment pas :(

    Merci pour votre aide.

    plexou
    • Partager sur Facebook
    • Partager sur Twitter
      27 février 2009 à 12:56:17

      1) C'est m'étonnerait beaucoup que tu cherches un code Java... >_< C'est du Javascript là dont on parle.

      2) Donne plutôt le code HTML généré. Le PHP on s'en fout ^^

      3) Ne nomme pas tes variables avec uniquement des chiffres... je pense pas que JS apprécie beaucoup.

      Et ensuite, on pourra commencer à voir le problème.
      • Partager sur Facebook
      • Partager sur Twitter
        27 février 2009 à 14:22:33

        Merci Golmote pour ta réponse,
        oui c'est du javascript.
        Au sujet du code HTML voila ce qui est visible actuellement :

        <select name="manufacturers_id">
        <option value="12">fournisseur 1</option>
        <option value="13">fournisseur 2</option>
        <option value="14">fournisseur 3</option>
        <option value="26">fournisseur 4</option>
        <option value="19">fournisseur 5</option>
        <option value="15">fournisseur 6</option>
        </select><select name="products_model"></select>
        


        Il n'y a pas de model car le fournisseur n'est pas 'sélectionné'.

        Concernant les tables de ma base de données,
        j'ai une table avec mes fournisseurs.

        Id nom
        1 fournisseur 1
        2 fournisseur 2

        Produits

        Id model fournisseur prix
        1 calendrier 1 10
        2 clavier 3 20



        En fouillant sur le site, j'ai trouvé un code bien plus propre que le miens :

        <script type="text/javascript" src="oXHR.js"></script>
        <script type="text/javascript">
        <!-- 
        
        function request(oSelect) {
        	var value = oSelect.options[oSelect.selectedIndex].value;
        	var xhr   = getXMLHttpRequest();
        	
        	xhr.onreadystatechange = function() {
        		if (xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 0)) {
        			readData(xhr.responseXML);
        			document.getElementById("loader").style.display = "none";
        		} else if (xhr.readyState < 4) {
        			document.getElementById("loader").style.display = "inline";
        		}
        	};
        	
        	xhr.open("POST", "XMLHttpRequest_getListData.php", true);
        	xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
        	xhr.send("manufacturers_id=" + value);
        }
        
        function readData(oData) {
        	var nodes   = oData.getElementsByTagName("item");
        	var oSelect = document.getElementById("softwaresSelect");
        	var oOption, oInner;
        	
        	oSelect.innerHTML = "";
        	for (var i=0, c=nodes.length; i<c; i++) {
        		oOption = document.createElement("option");
        		oInner  = document.createTextNode(nodes[i].getAttribute("manufacturers_name"));
        		oOption.value = nodes[i].getAttribute("manufacturers_id");
        		
        		oOption.appendChild(oInner);
        		oSelect.appendChild(oOption);
        	}
        }
        //-->
        </script>
        </head>
        
        
        <fieldset>
        	<legend>Programmes</legend>
        	<div id="programBox">
        		<p id="editors">
        			<select id="editorsSelect" onchange="request(this);">
        				<option value="none">Selection</option>
        				<?php					
        					
        					$query = mysql_query("SELECT * FROM manufacturers order by manufacturers_name");
        					
        					
        					while ($back = mysql_fetch_assoc($query)) 
        					{
        						echo "\t\t\t\t<option value=\"" . $back["manufacturers_id"] . "\">" . $back["manufacturers_name"] . "</option>\n";
        					}
        				?>			
        			</select>
        			<span id="loader" style="display: none;"><img src="images/loader.gif" alt="loading" /></span>
        		</p>
        		<p id="softwares">
        			<select id="softwaresSelect"></select>
        		</p>
        	</div>
        </fieldset>
        


        Si tu pouvais m'éclairer de nouveau stp ?
        En fait la je bloque sur le fait que j'ai 2 tables différentes.
        La pour le moment j'affiche le fournisseur, mais pas le produit :(


        Merci encore.
        Plexou
        • Partager sur Facebook
        • Partager sur Twitter
          28 février 2009 à 14:15:02

          Mais les problèmes de tables, ce n'est pas du JS, mais du MySQL... Qu'est-ce que ça vient faire ici ? o_O
          • Partager sur Facebook
          • Partager sur Twitter
            2 mars 2009 à 10:57:53

            Slt Golmote, merci encore pour ton aide.

            Ma requette fonctionne très bien, je l'ai testée sur une autre page.

            C'est juste que je ne sais pas comment l'utiliser dans le script ...
            Je suis sous Easyphp et ca ne passe pas.
            J'ai testé avec l'exemple d'origine, proposé dans le tutoriel
            http://www.siteduzero.com/tutoriel-3-1 [...] prequest.html
            et ca ne m'affiche que l'éditeur et non les softs existants ... :(
            • Partager sur Facebook
            • Partager sur Twitter

            Besoin de vos lumieres svp.

            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
            • Editeur
            • Markdown