Page 1 sur 3

liste lier et appel d une requete par le 2 eme select

Posté : 11 mai 2011, 12:08
par baddevil
bonjour a vous tous

voila tout est dans titre

j ai un select et je voudrai savoir comment on peu mettre 2 valeurs

j ai vu une histoire de split mais pas tout compris

dans mon onchange j effectue une operation selon mon value mais la je souhaiterai effectuer une autre operation (toujours dans mon onchange)mais sur une autre valeur

un peu de code pour que ce soit peut etre plus clair

mon form:
 <form name="formulaire" method=POST action="principal.php">
              
              <tr >
                 &nbsp;                                                                                                                                       
                <td  width=400>&nbsp;<select name=CATEGORIE class=texte onchange="document.getElementById('result').src=this.options[this.selectedIndex].value;MAJ_marque(this.value2)">
                  <option value =''>Choisissez une catégorie
                                       
                  <option value='../cat/principal.php?action=tapis' value2='Tapis souris' >Tapis souris 
                  
j ai mis value 2 pour comprendre ce que je veux faire en gros

voila merci d avance :D

Re: 2 value pour un select

Posté : 11 mai 2011, 13:30
par xTG
Mieux vaut un exemple qu'une longue explication :
if( isSet($_POST)) 
  var_dump(explode(';',$_POST['valeur']));

echo "<form action=\"#\" method=\"POST\">";
echo "<select name=\"valeur\">";
echo "<option>val1;val2</option>";
echo "<option>val3;val4;val5</option>";
echo "<option>val6;val7</option>";
echo "<option>val8</option>";
echo "<option>val9;</option>";
echo "</select>";
echo "<input type=\"submit\" /></form>";

Re: 2 value pour un select

Posté : 11 mai 2011, 14:32
par baddevil
hello merci pour ta reponse

bon mon form est en html ,cependant je comprend pas le val1 et val2 ,est ce que je doit mettre les deux dans mon value??
sachant que mon val1=../cat/principal.php?action=pile et val2=Tapis de souris

et dans mon onchange au niveau de MAJ_marque(this.value) je met comment? Tapis de souris?

Re: 2 value pour un select

Posté : 11 mai 2011, 14:47
par xTG
Ah oui ok c'est pas un souci PHP mais JS en fait ton affaire. :)

Le principe reste le même sauf que tu dois couper la chaîne avec split sur un caractère que tu es sûr de ne pas rencontrer dans tes deux valeurs.

Code : Tout sélectionner

var valeur = "../cat/principal.php?action=pile;Tapis de souris"; var tmp = valeur.split(';'); alert(tmp[0]); alert(tmp1]);

Re: 2 value pour un select

Posté : 11 mai 2011, 15:03
par baddevil
ben faite j ai un peu des 3 pour mon probleme :lol:

tu me dit var valeur = "../cat/principal.php?action=pile;Tapis de souris";

cependant des option j en ai tout plein

un appercu:
<option value='../cat/principal.php?action=pile' >Pile 
                    <option value='../cat/principal.php?action=tapis'>Tapis souris 
                    <option value='-'>                
                    <option style="color:#FFFFFF; background-color:#55606B" value='112-' >AUDIO
                    <option value='../cat/principal.php?action=carteson' >Carte son
                    <option value='../cat/principal.php?action=hautparleur' >Haut-Parleur
                    <option value='../cat/principal.php?action=lecmp3' >Lecteur MP3-MP4
                    <option value='../cat/principal.php?action=micro' >Microphone - casque
                    <option value='../cat/principal.php?action=homecine' >Système Home Cinema
                    <option value='../cat/principal.php?action=telecommande' >Télécommande
                    <option value='../cat/principal.php?action=tel' >Téléphone
                    <option value='-'> 


et cela ne s arrete pas la c est tout un catalogue


edit:
le but etant que mon 1 er select qui sont les categories affiche deja un resultat et qui me laisse dans mon 2eme select les marques correspondante a ce qui est afficher pour enfin trier par marque choisi

Re: 2 value pour un select

Posté : 11 mai 2011, 16:02
par xTG
Je pense qu'il serait mieux de prévoir un tableau Javascript pour stocker les informations relatives dans ce cas.
Ainsi tu passerai une value numérique qui serait l'index dans le tableau et qui te renverrai toutes les informations que tu pourrais vouloir.

Re: 2 value pour un select

Posté : 11 mai 2011, 16:09
par baddevil
apres avoir parcouru le net depuis ce matin c est ce que j ai cru comprendre que tout ce passe en java seulement java et moi ca fait 4

je debute en php et developpement car j ai seulement commencé ma formation en octobre dernier ,en faite je veux realisé un select qui depend de l autre et je patauge grave depuis ce matin :cry:

Re: 2 value pour un select

Posté : 11 mai 2011, 16:18
par xTG
De simples listes liées dans ce cas.
Voici un peu de lecture : faq-tutoriels/listes-liees-avec-html-ja ... 55580.html :)

Re: 2 value pour un select

Posté : 11 mai 2011, 17:24
par baddevil
je viens d essayer de faire comme y ont dit mais en vain :?

bon disont que mon code actuelle fonctionne a moitié car en faite je suis bloquer pour ma deuxieme liste select (il est vide) car j ai deja mon value utilisé c est pour ca que j ai posté pour que je puisse utilisé une deuxieme valeur

je suis sur de pas etre loin pourtant :roll:

Re: 2 value pour un select

Posté : 12 mai 2011, 09:57
par baddevil
bon je prend mon soucis en sens inverse

la mon code fonctionne je choisi dans le select 1 le select 2 me retourne bien les marque associer

1 ere questions :

j ai deja mon select 2 dans mon fichier html comment je fais pour les afficher dans celui ci car la je passe par un echo du fichier php?

2 eme question:

le soucis maintenant est de pouvoir afficher mes résultats dans mon iframe en dessous car la il ne ce passe plus rien car mon onchange n est plus le meme

cela doit s afficher en dessous au clik du select 1 ou 2

mon code actuelle

ici mon form et mon 1er select avec mon scriptjava
<script type="text/javascript">  
   //FONCTION AJAX  
      
      function MAJ_marque(Nsouscategorie)
{
    //declaration d'une variable
   var xmlhttp;
   
    //test si un code postale a été choisi
       if (Nsouscategorie.length==0)
    {
		document.getElementById("liste_marques").innerHTML="";
		return;
   }
   // test le type de navigateur pour créer l'objet adapté
  if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
  }
  else
  {// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }

  // appel et exécution d'une fonction permettant la mise a jour dynamique
  xmlhttp.onreadystatechange=function()
  {
  if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
		//remplisage de la zone dynamique villes avec les resultats trouvés en base de données
		document.getElementById("liste_marques").innerHTML=xmlhttp.responseText;
    }
  }

  
  xmlhttp.open("GET","principal.php?num="+Nsouscategorie,true);
   xmlhttp.send();
  
  
  } 
  </script>

<form name="formulaire" method=POST action="principal.php">
              
              <tr >
                 &nbsp;                                                                                                                                       
                <td  width=400>&nbsp;<select name=CATEGORIE class=texte onchange="MAJ_marque(this.value)">
                  <option value ='-'>Choisissez une catégorie
                    <option value='-'>                
                  <option style="color:#FFFFFF; background-color:#55606B" value='69-' >ACCESSOIRE DIVERS
                    
                    <option value='Pile' >Pile 
                    <option value='Tapis souris '>Tapis souris 
                    <option value='-'>                
                  <option style="color:#FFFFFF; background-color:#55606B" value='112-' >AUDIO
                    <option value='Carte son' >Carte son
                    <option value='Haut-Parleur' >Haut-Parleur
                    <option value='Lecteur MP3-MP4' >Lecteur MP3-MP4
ici mon 2 eme select
<select name=MAR_ID id=MAR_ID onChange= ????>
                    <option value=''>Choisissez une marque  
                    <option value=214 >2-Power  
                    <option value=42 >3COM  
                    <option value=5 >ABIT  
                    <option value=46 >ACER  
et mon code php actuelle
	if(isset($_GET['num']))
       {
       // si on reçois un parametre num c'est que on veux mettre a jour la liste des marques
       
       //sélection des marques qui utilisent la categorie reçu en parametre num
       
       $requete = "SELECT N_ID, Nmarque FROM Nproduct
                   WHERE 	Nsouscategorie ='".$_GET['num']."'" ;
                   
                  
                   
         // execution de la requete et recuperation les resultats dans une variable
         
         $resultats = mysql_query($requete) ;
         
         //construire la chaine de marques a afficher
        
         
         //commencement de la liste déroulante des marques
         
         $res = "&nbsp;<select name=\"N_ID\">";
         
         while($tempo = mysql_fetch_assoc($resultats) )
          {
                  
            //répétition des marques trouvées
			$res = $res ."<option value=".$tempo['N_ID'].">".$tempo['Nmarque']."</option>";
         
         }
         
         //fin de la liste déroulante
        $res = $res ."</select>";   
		   
		echo $res;

Re: 2 value pour un select

Posté : 12 mai 2011, 10:44
par xTG
Il y a quand même un truc qui me choque moi...
Tu fais tout à l'envers !

Au lieu de charger statiquement ton premier select via PHP tu utilises de l'Ajax...
Et ensuite tu nous demandes comment faire pour charger dynamiquement ton select2 en fonction du résultat du select1. O_o
C'est là que tu devrais faire ta requête Ajax en passant en paramètre le choix du select1...

Re: 2 value pour un select

Posté : 12 mai 2011, 10:59
par baddevil
ben je debute :oops:

mes codes je les recupere de certain de mes cours que l on a eu
j ai peut etre pas la bonne methode mais je voulais proceder par etape

au depart j ai crée ma page html avec mes deux select

je me suis occuper du premier et j arrivais a afficher dans mon iframe le resutlat du choix cliqué ,je n avais pas utilisé d ajax encore a ce niveau,
mes requete php s occupait de faire le trie d ou mon lien que j avais en value (../cat/principal.php?action=pile) ensuite j ai voulu passer au select 2
et la tout c est compliqué :roll:

Re: 2 value pour un select

Posté : 12 mai 2011, 14:18
par baddevil
j ai pas bien compris le truk avec ajax sur le deuxieme select puisque la ca fonctionne comme tel :?
j ai bien les marques associer sur mon deuxieme select

mon soucis actuel c est comment j affiche mes resultats? comment j appelle mes case comme je faisait avant?

Re: 2 value pour un select

Posté : 12 mai 2011, 16:16
par xTG
Donc si je comprends bien, tes deux select fonctionnent correctement ?
Et ce que tu veux c'est maintenant afficher la bonne iframe ?

L'url de l'iframe a afficher est ce qu'il y a dans ton message 3 ?

Re: 2 value pour un select

Posté : 12 mai 2011, 16:33
par baddevil
ben faite j ai un peu des 3 pour mon probleme :lol:

tu me dit var valeur = "../cat/principal.php?action=pile;Tapis de souris";

cependant des option j en ai tout plein

un appercu:
<option value='../cat/principal.php?action=pile' >Pile 
                    <option value='../cat/principal.php?action=tapis'>Tapis souris 
                    <option value='-'>                
                    <option style="color:#FFFFFF; background-color:#55606B" value='112-' >AUDIO
                    <option value='../cat/principal.php?action=carteson' >Carte son
                    <option value='../cat/principal.php?action=hautparleur' >Haut-Parleur
                    <option value='../cat/principal.php?action=lecmp3' >Lecteur MP3-MP4
                    <option value='../cat/principal.php?action=micro' >Microphone - casque
                    <option value='../cat/principal.php?action=homecine' >Système Home Cinema
                    <option value='../cat/principal.php?action=telecommande' >Télécommande
                    <option value='../cat/principal.php?action=tel' >Téléphone
                    <option value='-'> 


et cela ne s arrete pas la c est tout un catalogue


edit:
le but etant que mon 1 er select qui sont les categories affiche deja un resultat et qui me laisse dans mon 2eme select les marques correspondante a ce qui est afficher pour enfin trier par marque choisi
tu vois les url qui sont la ,ben je sais pas comment les appeller , au depart avec un seul select j arrivais a afficher mon code comme au dessus

maintenant oui mon select fonctionne si on veux ,si je clik sur une option j ai pas d affichage mais mon select2 affiche bien ce que je veux par rapport au select1

je souhaite que si je click sur select1 j ai un affichage de resultat et ensuite avec ce qui me reste dans mon select2 je puisse afficher selon ce que je choisi

url de mon iframe c est cat.html