par
Laplume » 23 févr. 2013, 18:31
Bonjour,
Souhaitant adapter Dolibar (CMS de compta/gestion open source) à mes besoins pour gérer ma librairie, je souhaite intégrer au module de caisse, un script ajax permettant une recherche en temps réel du bouquin que j'aurais scanné (grâce à l'ean unique). Ce qui permet ensuite de remplir les champs du titre, de l'auteur et l'éditeur.
J'ai trouvé un script Ajax sur le net que j'ai récupéré et adapté... qui fonctionne avec ma petite BD de test. Quand je tape un EAN , j'ai bien les champs qui se remplisse.
Je découvre un peu dolibar, et je suis un perdu... il y a déjà un script de base en menu déroulant mais qui implique un rechargement de page, et la liste déroulante ne va pas nécessairement me servir dans la mesure ou l'ean renvoi sur un produit unique. Là ou je suis un peu perdu, c'est que je ne sais pas intégrer le script, je m'en sors pour la partie formulaire et du script, mais ça ne fonctionne pas et je me doute que c'est en rapport avec la requête sql : comment puis je l'integrer pour que cela fonctionne ?
En vous remerciant
Bien cordialement
Le formulaire :
<!-- Ajout personnel pour integrer le script Ajax -->
<script type="text/javascript" src="ajax.js"></script>
<!-- Fin Ajout -->
<fieldset class="cadre_facturation"><legend class="titre1"><?php echo $langs->trans("Article"); ?></legend>
<form id="frmFacturation" class="formulaire1" method="post" action="facturation_verif.php" autocomplete="off">
<input type="hidden" name="token" value="<?php echo $_SESSION['newtoken']; ?>" />
<input type="hidden" name="hdnSource" value="NULL" />
<table>
<!-- Ajout Persnnel : On intégre les champs personnalisés titre, auteur, editeur-->
<tr><th class="label1">EAN</th></tr>
<tr><td><input type="text" size="12" name="ref" id="ref" onchange="ajaxref()"/></td></tr>
<tr><th class="label1"><?php echo $langs->trans("Tirre"); ?></th></tr>
<tr><td><input id ="label" size="20" name="label"/></td></tr>
<tr><th class="label1"><?php echo $langs->trans("Auteur"); ?></th></tr>
<tr><td><input id ="label_auteur" size="20" name="label_auteur"/></td></tr>
<tr><th class="label1"><?php echo $langs->trans("Editeur"); ?></th></tr>
<tr><td><input id ="label_editeur" size="20" name="label_editeur"/></td></tr>
<?php echo $res?>
<!-- FIn Ajout Persnnel-->
</table>
</form>
$req = mysql_query("SELECT label,label_auteur,label_editeur FROM llx_product WHERE ref = '$_POST[ref]'");
while($res = mysql_fetch_array($req))
{
echo "$res[label]*$res[label_auteur]*$res[label_editeur]";
}
var xhr = null;
// Fonction de creation de l'objet XMLHttpRequest qui resservira pour chaques fonctions AJAX
function getXhr()
{
if(window.XMLHttpRequest) xhr = new XMLHttpRequest();
else if(window.ActiveXObject)
{
try
{
xhr = new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e)
{
xhr = new ActiveXObject("Microsoft.XMLHTTP");
}
}
else
{
alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest, veuillez le mettre à jour");
xhr = false;
}
}
function ajaxref()
{
getXhr();
xhr.onreadystatechange = function()
{
if(xhr.readyState == 4 && xhr.status == 200)
{
// Nous recuperons ce coup ci le retour dans une variable
var chaine = xhr.responseText;
// Nous decoupons la reponse selon le caractere choisi
var tableau = chaine.split("*");
// Nous appliquons les valeurs récupérées au element correspondant
document.getElementById('label').value = tableau[0];
document.getElementById('label_auteur').value = tableau[1];
document.getElementById('label_editeur').value = tableau[2];
}
}
xhr.open("POST",'ajaxrecupaddr.php',true);
xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
ref = document.getElementById('ref').value;
xhr.send("ref="+ref);
}
Bonjour,
Souhaitant adapter Dolibar (CMS de compta/gestion open source) à mes besoins pour gérer ma librairie, je souhaite intégrer au module de caisse, un script ajax permettant une recherche en temps réel du bouquin que j'aurais scanné (grâce à l'ean unique). Ce qui permet ensuite de remplir les champs du titre, de l'auteur et l'éditeur.
J'ai trouvé un script Ajax sur le net que j'ai récupéré et adapté... qui fonctionne avec ma petite BD de test. Quand je tape un EAN , j'ai bien les champs qui se remplisse.
Je découvre un peu dolibar, et je suis un perdu... il y a déjà un script de base en menu déroulant mais qui implique un rechargement de page, et la liste déroulante ne va pas nécessairement me servir dans la mesure ou l'ean renvoi sur un produit unique. Là ou je suis un peu perdu, c'est que je ne sais pas intégrer le script, je m'en sors pour la partie formulaire et du script, mais ça ne fonctionne pas et je me doute que c'est en rapport avec la requête sql : comment puis je l'integrer pour que cela fonctionne ?
En vous remerciant
Bien cordialement
Le formulaire :
[html]
<!-- Ajout personnel pour integrer le script Ajax -->
<script type="text/javascript" src="ajax.js"></script>
<!-- Fin Ajout -->
<fieldset class="cadre_facturation"><legend class="titre1"><?php echo $langs->trans("Article"); ?></legend>
<form id="frmFacturation" class="formulaire1" method="post" action="facturation_verif.php" autocomplete="off">
<input type="hidden" name="token" value="<?php echo $_SESSION['newtoken']; ?>" />
<input type="hidden" name="hdnSource" value="NULL" />
<table>
<!-- Ajout Persnnel : On intégre les champs personnalisés titre, auteur, editeur-->
<tr><th class="label1">EAN</th></tr>
<tr><td><input type="text" size="12" name="ref" id="ref" onchange="ajaxref()"/></td></tr>
<tr><th class="label1"><?php echo $langs->trans("Tirre"); ?></th></tr>
<tr><td><input id ="label" size="20" name="label"/></td></tr>
<tr><th class="label1"><?php echo $langs->trans("Auteur"); ?></th></tr>
<tr><td><input id ="label_auteur" size="20" name="label_auteur"/></td></tr>
<tr><th class="label1"><?php echo $langs->trans("Editeur"); ?></th></tr>
<tr><td><input id ="label_editeur" size="20" name="label_editeur"/></td></tr>
<?php echo $res?>
<!-- FIn Ajout Persnnel-->
</table>
</form>
[/html]
[sql]
$req = mysql_query("SELECT label,label_auteur,label_editeur FROM llx_product WHERE ref = '$_POST[ref]'");
while($res = mysql_fetch_array($req))
{
echo "$res[label]*$res[label_auteur]*$res[label_editeur]";
}
[/sql]
[php]
var xhr = null;
// Fonction de creation de l'objet XMLHttpRequest qui resservira pour chaques fonctions AJAX
function getXhr()
{
if(window.XMLHttpRequest) xhr = new XMLHttpRequest();
else if(window.ActiveXObject)
{
try
{
xhr = new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e)
{
xhr = new ActiveXObject("Microsoft.XMLHTTP");
}
}
else
{
alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest, veuillez le mettre à jour");
xhr = false;
}
}
function ajaxref()
{
getXhr();
xhr.onreadystatechange = function()
{
if(xhr.readyState == 4 && xhr.status == 200)
{
// Nous recuperons ce coup ci le retour dans une variable
var chaine = xhr.responseText;
// Nous decoupons la reponse selon le caractere choisi
var tableau = chaine.split("*");
// Nous appliquons les valeurs récupérées au element correspondant
document.getElementById('label').value = tableau[0];
document.getElementById('label_auteur').value = tableau[1];
document.getElementById('label_editeur').value = tableau[2];
}
}
xhr.open("POST",'ajaxrecupaddr.php',true);
xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
ref = document.getElementById('ref').value;
xhr.send("ref="+ref);
}[/php]