Problème javascript

Résolu
halaster -  
Xil Messages postés 351 Statut Membre -
Bonjour,
je vous met le code, et je vous explique mon problème :p

<html>
<?
include "../config/connexion.php";
?>
<head>
<script type="text/javascript">
function ajax_test(champ)
{
if (champ.options[champ.selectedIndex].value != '')
document.getElementById('id_').innerHTML=champ.options[champ.selectedIndex].value;
else
document.getElementById('id_').innerHTML='';
}
</script>

</head>
<body>

<form action="test.php" method="post" name="facture" target="">
<table>
<select name="document_client" onchange="ajax_test(this)">
<option value="">Choisissez le document voulu</option>';
<?
$id_client=22;
$date_jour=date("Y-m-d");
$sql_docu='SELECT * FROM DOCUMENT WHERE ID_CLIENT="'.$id_client.'" AND DATE_ECHEANCE <= "'.$date_jour.'"';
$query_docu=mysql_query($sql_docu);
while($info_docu=mysql_fetch_array($query_docu)){
$ID_DOCUMENT=$info_docu[0];
$DATE_DOCUMENT=$info_docu[9];
$ID_TYPES=$info_docu[12];
$sql_type='SELECT * FROM TYPE WHERE ID_TYPE="'.$ID_TYPES.'"';
$rs_doc_type=mysql_query($sql_type);
$affich_doc_type=mysql_fetch_array($rs_doc_type);
?>
<option value="<?php echo $ID_DOCUMENT ?>"><?php echo $affich_doc_type[1]." <|> ".$DATE_DOCUMENT ?></option>
<?php
}
?>
</select>

</table>
<div="id_">

</div>
</form>
</body>
</html>

alors voila, le principe est que lorsque je sélectionne quelque chose dans ma liste déroulante, le numéro est sensé apparaitre dans le div id_ . Problème.. ca ne le fait pas. et j'avoue ne pas voir pourquoi. si quelqu'un a une idée :)
Configuration: Windows XP
Firefox 2.0.0.14

1 réponse

  1. Mimiste Messages postés 1159 Statut Membre 206
     
    hello

    tu t'est torturé un peu l'esprit pour rien la

    document.getElementById('id_').innerHTML=champ.options[champ.selectedIndex].value;

    pour recuperer l'option selectionnée d'un champ Select il suffit de passer sa valeur directement à ta fonction

    <select name="document_client" onchange="ajax_test(this.value);">

    <script type="text/javascript">
    function ajax_test(champ)
    {
    if (champ != '')
    {
    document.getElementById('id_').innerHTML=champ;
    }
    else
    {
    document.getElementById('id_').innerHTML='';
    }
    }
    </script>
    0
    1. halaster
       
      ca ne marche pas :(
      je comprend pas.. pourtant, javascript est bien activé dans le navigateur..
      sur d'autre projet, mes fonctions marchent, mais la.. rien a faire ca ne veut pas.
      y a t'il une autre solution ?
      0
    2. Mimiste Messages postés 1159 Statut Membre 206 > halaster
       
      j'avais pas fais attention, change également ton div

      <div="id_">

      </div>

      en

      <div id="id_">

      </div>
      0
    3. halaster > Mimiste Messages postés 1159 Statut Membre
       
      omg....
      quelle erreur stupide -_- merci beaucoup, la ca fonctionne..
      ya des moment je me demande si j'ai bien les yeux en face des trous :p
      0
    4. halaster > Mimiste Messages postés 1159 Statut Membre
       
      sinon, j'aurai une autre question, mais c'est en utilisant ajax.
      bon pour l'exemple ca ne sera pas forcément adapté, mais c'est surtout pour le principe.
      voici mes pages, puis j'explique :p

      page test.php

      <html>
      <?
      include "../config/connexion.php";
      ?>
      <head>
      <script language="Javascript" src="ajax.js"/>

      </head>
      <body>

      <form action="ajax_test.php" method="post" name="facture" target="">
      <table>
      <select name="document_client" >
      <option value="">Choisissez le document voulu</option>';
      <?
      $id_client=22;
      $date_jour=date("Y-m-d");
      $sql_docu='SELECT * FROM DOCUMENT WHERE ID_CLIENT="'.$id_client.'" AND DATE_ECHEANCE <= "'.$date_jour.'"';
      $query_docu=mysql_query($sql_docu);
      while($info_docu=mysql_fetch_array($query_docu)){
      $ID_DOCUMENT=$info_docu[0];
      $DATE_DOCUMENT=$info_docu[9]
      $ID_TYPES=$info_docu[12];
      $sql_type='SELECT * FROM TYPE WHERE ID_TYPE="'.$ID_TYPES.'"';
      $rs_doc_type=mysql_query($sql_type);
      $affich_doc_type=mysql_fetch_array($rs_doc_type);
      ?>
      <option value="<?php echo $ID_DOCUMENT ?>"onclick="ajax_test(<? echo $ID_DOCUMENT; ?>)" ><?php echo $affich_doc_type[1]." <|> ".$DATE_DOCUMENT ?></option>
      <?php
      }
      echo "</select>";
      ?>
      </table>
      <div="id_">
      </div>
      </form>
      </body>
      </html>

      ____________________________________________________
      page ajax_test.php

      <?
      $test=$_POST['num_doc'];
      echo test;
      ?>

      ____________________________________________________

      page ajax.js

      function get_Xhr()
      {
      if(window.XMLHttpRequest)
      {
      xhr = new XMLHttpRequest();
      }
      else if(window.ActiveXOject)
      {
      try
      {
      xhr = new ActiveXObject("Msxml2.XMLHTTP");
      }
      catch(e)
      {
      try
      {
      xhr = new ActiveXObject("Microsoft.XMLHTTP");
      }
      catch(el)
      {
      xhr = null;
      }
      }
      }
      else
      {
      alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest\nVeuillez le mettre à jour");
      }
      return xhr;
      }

      function ajax_test(fam6)
      {
      // Creation de l'objet XMLHttpRequest
      get_Xhr();
      xhr.onreadystatechange = function()
      {
      if(xhr.readyState == 4 && xhr.status == 200)
      {
      document.getElementById('id_').innerHTML = xhr.responseText;
      }
      }

      xhr.open("POST",'ajax_test.php',true);
      xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');

      xhr.send("num_doc="+fam6);
      }
      ______________________________________


      voila, donc le principe est le meme, pouvoir afficher le contenu de la page ajax_test.php dans le <div id="id_">
      normalement avec onclick ca fonctionne, mais sinan je peux utiliser onchange comme dans l'autre exemple..
      problème. ca ne fait rien :x
      0
    5. halaster > halaster
       
      en fait, oubli, j'ai trouvé mon erreur :x
      0