Version complète: sur le forum Webmaster Hub : Aide ajax
Webmaster Hub > Création et exploitation de Sites Internet > Les langages du Net > AjaX et JavaScript
Halaster
salut a tous, bon voila mon problème.

j'ai une page avec un formulaire, j'ai une liste déroulante, et j'aimerai lorsque je clique sur cette liste, pouvoir pré-remplir mon formulaire.

donc j'ai 3 pages.
une avec mon formulaire -> modif_docu.php

CODE
<select name="document_client">
<option value="" >Choisissez le document voulu</option>';
<?
$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]; // A changer si on modifie la facture
$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_docu('<? echo $ID_DOCUMENT; ?>')"><?php echo $affich_doc_type[1]." <|> ".$DATE_DOCUMENT ?></option>
<?php
}
?>
</select>
<div id="id_">
</div>

et après la suite de mon formulaire avec par exemple cette liste déroulante
CODE
<td>
<?
//selection type document désiré
echo '<select name="id_type">';
if($check_ID_TYPE!='')
{
$sql_type2= 'SELECT * FROM TYPE WHERE ID_TYPE="'.$check_ID_TYPE.'"';
$rs_type2= mysql_query($sql_type2);
$type2= mysql_fetch_array($rs_type2);
?>
<option value="<?php echo $type2[0]; ?>"><?php echo $type2[1]; ?></option>
<?php
}
else
{
echo '<option value="">Choisissez le type de document</option>';
}
$sql_type= "SELECT * FROM TYPE ORDER BY NOM_TYPE ASC";
$rs_type= mysql_query($sql_type);
if (mysql_num_rows($rs_type)>0) {
while ($type= mysql_fetch_array($rs_type)){
if(@$bouton!="modifier" & $_POST['id_type']==$type['ID_TYPE']){
$select="selected";
}else{
$select="";
}
echo "<option ".$select." value='".$type['ID_TYPE']."'>".$type['NOM_TYPE']."</option>";

}

}
echo "</select>";
?>
</td>


j'ai ma page ajax_docu.php

CODE
<?php
include "../config/connexion.php";
$check=$_POST['num_doc'];
$sql_check= 'SELECT * FROM DOCUMENT WHERE ID_DOCUMENT="'.$check.'"';
$rs_check= mysql_query($sql_check);
$check1= mysql_fetch_array($rs_check);

$check_NUM_DOCUMENT=$check1[1];
$check_ID_CLIENT=$check1[2];
$check_PRODUIT_DOCUMENT=$check1[3];
$check_NB_PRODUIT_DOCUMENT=$check1[4];
$check_PU_PRODUIT_DOCUMENT=$check1[5];
$check_ACCOMPTE_DOCUMENT=$check1[6];
$check_REMISE_DOCUMENT=$check1[7];
$check_PORT_DOCUMENT=$check1[8];
$check_PAYE_DOCUMENT=$check1[10];
$check_ID_REMARQUE=$check1[11];
$check_ID_TYPE=$check1[12];
echo $check_ID_TYPE;
$check_ID_REGLEMENT=$check1[13];
$check_DATE_ECHEANCE=$check1[14];
$check_ID_REFERENCE=$check1[15];
$check_SERVICE_DOCUMENT=$check1[16];
$check_PU_SERVICE_DOCUMENT=$check1[17];
$check_NB_SERVICE_DOCUMENT=$check1[18];
$check_COMMENTAIRE_FACTURE=$check1[20];
?>


et ma page ajax.js avec ma fonction
CODE
var xhr = null;

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_docu(fam5)
{
// 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_docu.php',true);
xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');

xhr.send("num_doc="+fam5);
}



donc voila, je récupère bien l'ID_DOCUMENT dans la page. mais je n'arrive pas a utiliser les infos en dehors de ma balise <div id="id_"></div>
et si je met tout le reste de mon formulaire entre ces balises div, il y a des bug ( par exemple, des parties du formulaire disparaissent )

avez vous une idée ?
Halaster
Sinon autre solution, comment faire, en utilisant uniquement une fonction javascript du type:
CODE
<script type="text/javascript">
function fct_test(champ)
{
if (champ != '')
{
document.getElementById('id_').innerHTML=champ;
}
else
{
document.getElementById('id_').innerHTML='';
}
}
</script>


pour mettre la valeur de champ dans une variable php au lieu de l'afficher dans ma balise div.
ca me faciliterai la tache, et réduirai le nombre de pages.
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'information, la mise en page et les images, veuillez cliquer ici.