Bonjour,
En résumé, j'ai un formulaire qui lorsque je remplis mon champs référence me propose des références existante dans ma table produits fournisseurs correspondant à ce que je tape.
Et des que je choisis une des références de la liste cela me préremplis les autres champs de ma page (descriptif, prix ...)
Cela fonctionne en partie (certain champs se préremplissent et pas d'autres ce qui est totalement illogique vu que j'emploie la même technique)
alors j'ai réutilisé un tuto ainsi :
Voici mon fichier avec le formulaire :
dans le header du fichier avec formulaire :
Le code script.js
Le fichier ajax refresh .php
CA FONCTIONNE.
Lorsque je commence à taper une référence dans mon input text "ref_id" cela me propose les 10 résultats correspondant de ma base de donnée.
Lorsque je clique sur une des propositions, cela remplis mon input text ref_id et aussi les autres input (mais pas TOUS !!! c'est ca qui est illogique)
Mon champs descriptif se remplit.
Mon champs "<select>" Id fournisseur se modifie et propose le bon fournisseur correspondant à la référence choisie.
Mon champs tarifs se remplit aussi. PARFAIT
Mais de façon étrange les autres ne se remplissent pas.
le champs "led" est un <select> (comme pour idfournisseur mais la cela ne marche pas, ca ne se modifie pas)
et les champs input text "watt" et "maxcon" ne se remplisse pas non plus (alors que cela marche pour les tarifs par exemple)
J'ai essayé d'afficher la source de ma liste . crée par javascript pensant que l'erreur venait de là et elle transmet bien les bonnes données car cela me marque cela par exemple :
Donc les données sont bien transmises au fichier script.js qui ont tous le même code (set_item8, set_item7, set_item2 ...) voir fichier script.js plus haut
Et certains marche et d'autres non.
C'est à n'y rien comprendre à moins qu'il y ait une faute de frappe mais cela n'a pas l'air.
MERCI de m'aider je dois rendre ce projet très très vite
En résumé, j'ai un formulaire qui lorsque je remplis mon champs référence me propose des références existante dans ma table produits fournisseurs correspondant à ce que je tape.
Et des que je choisis une des références de la liste cela me préremplis les autres champs de ma page (descriptif, prix ...)
Cela fonctionne en partie (certain champs se préremplissent et pas d'autres ce qui est totalement illogique vu que j'emploie la même technique)
alors j'ai réutilisé un tuto ainsi :
Voici mon fichier avec le formulaire :
dans le header du fichier avec formulaire :
<script type="text/javascript" src="js/jquery.min.js"></script>
<script type="text/javascript" src="js/script.js"></script>
<form action="inserer.php" method="post" name="insereprodstock">
<div class="label_div">Référence : </div>
<div class="input_container">
<input type="text" id="ref_id" name="refprodstock" onkeyup="autocomplet()">
<ul id="ref_list_id"></ul>
</div>
<br /><br />
<div class="label_div">Descriptif produit : </div>
<textarea cols="50" id="descriptif_id" name="descriptifprodstock" rows="10"></textarea>
<br /><br />
<div class="label_div">Tarif Vente : </div>
<input name="tarifventeprodstock" id="tarifvente_id" type="text" value="0" size="50" />
<br /><br />
<div class="label_div">Fournisseur : </div>
<select name="idfournisseur" id="idfournisseur_id">
<?php foreach($fournisseur as $row){
$idfournisseur=htmlspecialchars($row['idfournisseur'],ENT_QUOTES);
$nomfournisseur=htmlspecialchars($row['nomfournisseur'],ENT_QUOTES);
?>
<option value="<?php echo $idfournisseur; ?>" >
<?php
echo $nomfournisseur;
?>
</option>
<?php } ?>
</select>
<br /><br />
<div class="label_div">LED : </div>
<select name="ledprodstock" id="led_id">
<option value="0">Non</option>
<option value="1">Oui</option>
</select>
<br /><br />
<div class="label_div">Max connect : </div>
<input name="maxconprodstock" type="number" id="maxcon_id" step="1" min="0" value="0" size="50" />
<br /><br />
<div class="label_div">WATT : </div>
<input name="wattprodstock" type="text" id="watt_id" value="0" size="50" />
Le code script.js
// autocomplet : this function will be executed every time we change the text
function autocomplet() {
var min_length = 0; // min caracters to display the autocomplete
var keyword = $('#ref_id').val();
if (keyword.length >= min_length) {
$.ajax({
url: 'ajax_refresh.php',
type: 'POST',
data: {keyword:keyword},
success:function(data){
$('#ref_list_id').show();
$('#ref_list_id').html(data);
}
});
} else {
$('#ref_list_id').hide();
}
}
// set_item : this function will be executed when we select an item
function set_item(item) {
// change input value
$('#ref_id').val(item);
// hide proposition list
$('#ref_list_id').hide();
}
function set_item2(item) {
// change input value
$('#descriptif_id').val(item);
}
function set_item3(item) {
// change input value
$('#tarifvente_id').val(item);
}
function set_item4(item) {
// change input value
$('#idfournisseur_id').val(item);
}
function set_item5(item) {
// change input value
$('#led_id').val(item);
}
function set_item7(item) {
// change input value
$('#maxcon_id').val(item);
}
function set_item8(item) {
// change input value
$('#watt_id').val(item);
}
Le fichier ajax refresh .php
$keyword = '%'.$_POST['keyword'].'%';
$sql = "SELECT * FROM prodfournisseur WHERE refprodfournisseur LIKE (:keyword) ORDER BY idprodfournisseur ASC LIMIT 0, 10";
$query = $dbh->prepare($sql);
$query->bindParam(':keyword', $keyword, PDO::PARAM_STR);
$query->execute();
$list = $query->fetchAll();
foreach ($list as $rs) {
$descriptifprodfournisseur=htmlspecialchars($rs['descriptifprodfournisseur'],ENT_QUOTES);
// put in bold the written text
$refprodfournisseur = str_replace($_POST['keyword'], '<b>'.$_POST['keyword'].'</b>', $rs['refprodfournisseur']);
// add new option
echo '<li onclick="
set_item(\''.str_replace("'", "\'", $rs['refprodfournisseur']).'\');
set_item2(\''.str_replace("'", "\'", $rs['descriptifprodfournisseur']).'\');
set_item3(\''.str_replace("'", "\'", $rs['tarifventeprodfournisseur']).'\');
set_item4(\''.str_replace("'", "\'", $rs['idfournisseur']).'\');
set_item5(\''.str_replace("'", "\'", $rs['ledprodfournisseur']).'\');
set_item7(\''.str_replace("'", "\'", $rs['maxconprodfournisseur']).'\');
set_item8(\''.str_replace("'", "\'", $rs['wattprodfournisseur']).'\')
">'.$refprodfournisseur.'</li>';
}
CA FONCTIONNE.
Lorsque je commence à taper une référence dans mon input text "ref_id" cela me propose les 10 résultats correspondant de ma base de donnée.
Lorsque je clique sur une des propositions, cela remplis mon input text ref_id et aussi les autres input (mais pas TOUS !!! c'est ca qui est illogique)
Mon champs descriptif se remplit.
Mon champs "<select>" Id fournisseur se modifie et propose le bon fournisseur correspondant à la référence choisie.
Mon champs tarifs se remplit aussi. PARFAIT
Mais de façon étrange les autres ne se remplissent pas.
le champs "led" est un <select> (comme pour idfournisseur mais la cela ne marche pas, ca ne se modifie pas)
et les champs input text "watt" et "maxcon" ne se remplisse pas non plus (alors que cela marche pour les tarifs par exemple)
J'ai essayé d'afficher la source de ma liste . crée par javascript pensant que l'erreur venait de là et elle transmet bien les bonnes données car cela me marque cela par exemple :
<ul style="display: block;" id="ref_list_id">
<li onclick="
set_item('CIC-R-LED-3X0.7-230V-W-B');
set_item2('Rideau Icicle LED caoutchouc - 3 x 0.70 m - 150 lampes bleues - fil blanc - 230 V');
set_item3('52.1');
set_item4('1');
set_item5('1');
set_item6('1');
set_item7('12');
set_item8('14');
"><b>CIC-R</b>-LED-3X0.7-230V-W-B
</li>
<li onclick="
set_item('CIC-R-LED-3X0.7-230V-W-R');
set_item2('Rideau Icicle LED caoutchouc - 3 x 0.70 m - 150 lampes rouges - fil blanc - 230 V');
set_item3('50.9');
set_item4('1');
set_item5('1');
set_item6('1');
set_item7('12');
set_item8('14');
"><b>CIC-R</b>-LED-3X0.7-230V-W-R
</li>
</ul>
Donc les données sont bien transmises au fichier script.js qui ont tous le même code (set_item8, set_item7, set_item2 ...) voir fichier script.js plus haut
Et certains marche et d'autres non.
C'est à n'y rien comprendre à moins qu'il y ait une faute de frappe mais cela n'a pas l'air.
MERCI de m'aider je dois rendre ce projet très très vite