Passage données dans js via get

Signaler
Messages postés
65
Date d'inscription
jeudi 10 avril 2008
Statut
Membre
Dernière intervention
15 mai 2008
-
Messages postés
65
Date d'inscription
jeudi 10 avril 2008
Statut
Membre
Dernière intervention
15 mai 2008
-
bonjour,plutot re!
Bon j'ai une page dans laquelle il y a 2 listes deroulantes, qui interagissent (liste 2 en fonction de liste1).


Bultez m'a filé une source pas mal sauf que sa marche pas... du moins pour moi


je n'arrive pas à envoyé la valeur, lors de la selection dans la premiere liste, à la seconde liste....


Un pbm avec le get je suppose...


voila une partie de code dans la page principale... 


 


<?php
 
 $resultat=mysql_query("SELECT * from Gamme ORDER BY nom_gamme");
 [mailto:$max=@mysql_num_rows($resultat $max=@mysql_num_rows($resultat]);
?>
<script type="text/javascript">function xmlhttp()
   {  var x;
      try         {  x = new ActiveXObject("Microsoft.XMLHTTP");   }
      catch (e)   {  try         {   x = new ActiveXObject("Msxml2.XMLHTTP");   }
                     catch (e)   {   try         {   x = new XMLHttpRequest();   }
                                     catch (e)   {   x=false;   }
                                 }
                  }
      return x;
   }
   function appel()
   {   var xml = xmlhttp();
      if(!xml)
             {   alert("XmlHttpRequest non supporté");   }
      else   {   xml.onreadystatechange = function()
                 {   if(xml.readyState==4)
                     {   var opt=xml.responseText.split("\t");
                         tb2.length=0;
                         for ( var n=1;n<opt.length;n++ )
                         {   tb2.length++;
                             tb2.options[tb2.length-1].text=opt[n];
                         }
                     }
                  }
                  xml.open("GET", "Ajax2.php?tbl2="+tb1.options[tb1.selectedIndex].text, true);
                  xml.send(null);
             }
   }     
  </script> 
<select   name="tb1" id="tb1" onchange='appel();'>
<?php 
 for ($nb=0;$nb<$max;$nb++)
   {  $i=mysql_result($resultat,$nb,"nom_gamme");
      echo '<option>'.$i.'</option>';  
 }
?>        </select>

S&eacute;lectionnez le produit:

      <select    name="tb2" id="tb2"> 
      </select>
<?php    mysql_close($co);?>

Et voici le Ajax2.php:

//debut requete
echo('je suis dans ajax2');
   $rch="WHERE nom_gamme='".$_GET["tbl2"]."'";
  echo $rch;
   $res=mysql_query("SELECT * FROM Bose ".$rch,$co);
   [mailto:$max=@mysql_num_rows($res $max=@mysql_num_rows($res]);
   echo $max;
 $t="";
   for ($nb=0;$nb<$max;$nb++)
   {  $i=mysql_result($res,$nb,"nom_produit");
      $t.="\t".$i;  
   } 
   echo $t;
   mysql_close($co);
  ?>
J'ai souligné ce qui cause l'erreur premiere de mon code, en espérant qu'il y en ait qu'une seule...
Aidez moi s'il vous plait c'est vraiment super important et sa devient urgent.... erf!

Merci bcp!!!!!!!!!!!!!!!!!!!!!!!

40 réponses

Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
33
bonjour,
    ben voila.... ce sera plus mieux ici qu'en message privé !
    déjà dit : plus d'intervenants, plus de compétences, plus de chances de réponses.

    certes pour le code, mais respectes-tu l'exemple fourni ?   bne... non !
    ( dans le mien, on se connecte à la base avant de l'utiliser )

<?php
   header('Content-type:text/html;charset=ISO-8859-1');
    $co=mysql_connect("localhost","root","");
    $dbnom="ADSL";
    $db=mysql_select_db($dbnom,$co);
   $rch="WHERE t2t1ind='".$_GET["tbl2"]."'";
    ...

    et c'est pas trop une question javascript finalement !

<hr />                Cordialement            Bul         [mon Site]     [M'écrire]
Messages postés
65
Date d'inscription
jeudi 10 avril 2008
Statut
Membre
Dernière intervention
15 mai 2008

Erf ne t'inquiète pas je me connecte avant sauf que jl'ai pas noté, mais jai une connection jusrtement jtassure:

<?php
// Déclaration des paramètres de connexion
$host = "xxxxxxxx";


// Généralement la machine est localhost
// c'est-a-dire la machine sur laquelle le script est hébergé


$user = "xxxxxxxxxxx";


$bdd = "xxxxxxxx";


$passwd  = "xxxxxxxxxx";


// Connexion au serveur
$co=mysql_connect($host, $user,$passwd) or die("erreur de connexion au serveur");


$db=mysql_select_db($bdd,$co) or die("erreur de connexion a la base de donnees");




?>
juste que bon jtrouvais pas sa utile de la noter
Messages postés
65
Date d'inscription
jeudi 10 avril 2008
Statut
Membre
Dernière intervention
15 mai 2008

Ok OK buz pour les mess privé sauf que bon tu es l'auteur du code et déranger le forum pour mon pbm perso, enfin tant pis si tu peux m'aider ici j'ai pas de préférences!!
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
33
si tu plantes ou tu dis, la base est mal ouverte ( nom, user, password ... )
    ou il y a une erreur de syntaxe, ou...
essayes donc mon exemple ( en local il vaudrait mieux comme tes essais
        et tu pourras mettre les password et le reste ! ou sur un site ) : ça baigne !
si tes modifs font planter, c'est que ce sont ces modifs qui
    empêchent de fontionner !   comme en plus tu ne nous
    donnes pas ce qu'il faut pour qu'on vérifie !

<hr />                Cordialement            Bul         [mon Site]     [M'écrire]
Messages postés
65
Date d'inscription
jeudi 10 avril 2008
Statut
Membre
Dernière intervention
15 mai 2008

Tu veux le descriptif de ma base de donnée?


jai une table gamme avec nom_gamme clé primaire


une table Bose avec identifiant_produit, nom_gamme, nom_produit,type_produit, descriptif, prix,et lien_image.


 


 


Ma table gamme représente ta table1 la table Bose est ta table2, et uand jaffiche les resultat de Ajax2.php le echo $rch maffiche "where nom_gamme="0".....Le souci doit donc venir de la transmission de la variable tbl2 non?*


tu veux quoi comme infos en plus?
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
33
tu as fait un echo de cette variable transmise ( là où elle est reçue ) comme ça tu seras sûre.
ça n'effectes à priori en rien $max=@mysql_num_rows($res);
<hr />                Cordialement            Bul         [mon Site]     [M'écrire]
Messages postés
65
Date d'inscription
jeudi 10 avril 2008
Statut
Membre
Dernière intervention
15 mai 2008

Bon j'ai tapé sa dans ma page d'arrivée (la ou tbl2 est recue) de la sorte:

echo('je suis dans ajax2');
$var= $_GET["tbl2"];
echo $var;
   $rch="WHERE nom_gamme='".$_GET["tbl2"]."'";
  echo $rch;
   $res=mysql_query("SELECT * FROM Bose ".$rch,$co);
   [mailto:$max=@mysql_num_rows($res $max=@mysql_num_rows($res]);
   echo $max;
 $t="";

et j'obtiens seulement:

je suis dans ajax2WHERE nom_gamme=''0
ce qui est l'équivalent de echo ('je suis dans ajax2'); et echo$rch; donc pas de valeur pour echo $var....
Comment sa se fait?
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
33
ajax2WHERE nom_gamme=''0
    il ne te manques pas une " là ? en fin ?
<hr />                Cordialement            Bul         [mon Site]     [M'écrire]
Messages postés
65
Date d'inscription
jeudi 10 avril 2008
Statut
Membre
Dernière intervention
15 mai 2008

Ba écoute non elles y sont toutes...tu veux que je t'envoie mon code quelque chose comme sa pour voir?


je te ré écris le Get avec des espaces:


$rch="WHERE nom_gamme=' " .$_GET[ " tbl2 " ]. " ' ";
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
33
>>Ba écoute non elles y sont toutes
    ben non !!!!!     

ajax2WHERE nom_gamme=''0"<hr />                Cordialement            Bul         [mon Site]     [M'écrire]
Messages postés
65
Date d'inscription
jeudi 10 avril 2008
Statut
Membre
Dernière intervention
15 mai 2008

sa en fait pas une en trop? attend je test
Messages postés
65
Date d'inscription
jeudi 10 avril 2008
Statut
Membre
Dernière intervention
15 mai 2008

Ba écoute sa marche pas, j'ai exactement le mm code que celui que tu m'as filé sur cette avec le mm nombre de guillemets, donc pourquoi une guillemet en moins dans l'excécution je sais pas , par contre un truc interessant le code source me montre sa:
je suis dans ajax2WHERE nom_gamme=''0

il doi y avoir un bug plutot dans la concaténation parce que comme tu l'as écrit sa fonctionne pas...

pas un pbm de guillemets mais une concaténation foireuse

ton code c'est celui la:
$rch="WHERE t2t1ind='".$_GET["tbl2"]."'";--------et le mien:

$rch="WHERE nom_gamme='".$_GET["tbl2"]."'";

le pbm est plutot dans la ocncaténation non?
Messages postés
65
Date d'inscription
jeudi 10 avril 2008
Statut
Membre
Dernière intervention
15 mai 2008

A putin jcrois que j'ai compris.... pas mon erreur erf mais le message de ma source, si seulement je faisais des "\n"

echo $rch ---------->donne where nom_gamme='' SANS RIEN RECUPERER
echo $max---------> donne 0!!!!
donc on en revient au fait que $_GET[tbl2"] ne retourne rien!!
pourquoi?
Messages postés
65
Date d'inscription
jeudi 10 avril 2008
Statut
Membre
Dernière intervention
15 mai 2008

Donc il ne peut y avoir qu'une c**** au niveau de la fonction appel(), tu vois un truc byzarre toi??

   function appel()
   {   var xml = xmlhttp();
      if(!xml)
             {   alert("XmlHttpRequest non supporté");   }
      else   {   xml.onreadystatechange = function()
                 {   if(xml.readyState==4)
                     {   var opt=xml.responseText.split("\t");
                         tb2.length=0;
                         for ( var n=1;n<opt.length;n++ )
                         {   tb2.length++;
                             tb2.options[tb2.length-1].text=opt[n];
                         }
                     }
                  }
                  xml.open("GET", "Ajax2.php?tbl2="+tb1.options[tb1.selectedIndex].text, true);
                  xml.send(null);
             }
   }     
  </script> 
<select   name="tb1" id="tb1" onchange='appel();'>
<?php 
 for ($nb=0;$nb<$max;$nb++)
   {  $i=mysql_result($resultat,$nb,"nom_gamme");
      echo '<option>'.$i.'</option>';  
 }
?>        </select>

S&eacute;lectionnez le produit:

      <select    name="tb2" id="tb2"> 
      </select>
<?php    mysql_close($co);?>
Messages postés
65
Date d'inscription
jeudi 10 avril 2008
Statut
Membre
Dernière intervention
15 mai 2008

alors tu m'aides plus????pourtant jsuis déséspérée la!!!
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
33
euh... je repasse, mais vite fait :  mon forfait cesse à 17 h !

>>donc on en revient au fait que $_GET[tbl2"] ne retourne rien!!

    tu as fait un     echo '*'.$_GET['tbl2'].'*';   ?
    pas vu celui là

    s'il n'y a rien entre les *, ça vient du script emetteur !
        fais-y un alert avant d'envoyer. pour contrôler.

<hr />                Cordialement            Bul         [mon Site]     [M'écrire]
Messages postés
65
Date d'inscription
jeudi 10 avril 2008
Statut
Membre
Dernière intervention
15 mai 2008

>>    tu as fait un     echo '*'.$_GET['tbl2'].'*';
resultat rien entre les étoiles

>> fais-y un alert avant d'envoyer. pour contrôler.

Alors voila mon code :
   xml.open("GET", "Ajax2.php?tbl2="+tb1.options[tb1.selectedIndex].text, true);
      alert('je suis ici!');
   xml.send(null);

lorsque je passe par le chemin "du site" cela veut dire lorsque jaccede à la page via mon menu flash qui inclue home_cinema.php via ajax rien ne saffiche, mais quand je vais sur la page par le vrai chemin (suivant les repertoire) lorsque je selectionne un element dans la liste 1 l'alert apparait!

Apres en quoi sa m'avance? je pense que jai mal fait le test de l'alert parce que le résultat est pas utile...
Messages postés
943
Date d'inscription
mardi 14 novembre 2006
Statut
Membre
Dernière intervention
7 août 2009
3
Bonsoir,

Déjà quand je suis en developpement en php j'enleve toujours les arobase devant les fonctions car on en cache pas les erreurs mais on les traite donc si tu as une erreur au niveau des fonctions php ayant un arobase devant tu ne sera jamais au courant des erreurs.

>>

>>    tu as fait un     echo '*'.$_GET['tbl2'].'*';
>>resultat rien entre les étoiles
Plutot que d'écrire ça je préfére utiliser var_dump(); donc ici var_dump($_GET['tbl2']); car en utilisant echo si $_GET['tbl2'].= null chaine vide ou true/false tu ne le saura pas avec var_dump si. Donc des fois ça aide.

>>xml.open("GET", "Ajax2.php?tbl2="+tb1.options[tb1.selectedIndex].text, true);
C'est bizard que tu récuperes le texte et non la valeur.

En esperant aider à une heure aussi tardive lol.

<hr size="2" width="100%" />
Maelo ou Elo --> Mon blog

Si quelqu'un vous dit : "Je me tue à vous le répéter", laissez-le mourir. (Jacques Prévert)
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
33
ton alert sert à contrôler quoi ?

    alert("*"+tb1.options[tb1.selectedIndex].text+"*");
    xml.open("GET", "Ajax2.php?tbl2="+tb1.options[tb1.selectedIndex].text, true);
    xml.send(null);

    dis nous ce que ça affiche ( ** je pense )

    et si on peut voir le select tb1   tel qu'il apparait dans la page html.
    pas le php ! le résultat... la source de ce qui est affiché.

>>C'est bizard que tu récuperes le texte et non la valeur.
    non, non maelob, ce bien ce qui est prévu. le texte pas le value.

<hr />                Cordialement            Bul         [mon Site]     [M'écrire]
Messages postés
943
Date d'inscription
mardi 14 novembre 2006
Statut
Membre
Dernière intervention
7 août 2009
3
>>>>C'est bizard que tu récuperes le texte et non la valeur.
>>    non, non maelob, ce bien ce qui est prévu. le texte pas le value.
Ok autan pour moi

<hr size="2" width="100%" />
Maelo ou Elo --> Mon blog

Si quelqu'un vous dit : "Je me tue à vous le répéter", laissez-le mourir. (Jacques Prévert)