[RESOLU] Integrer un script Ajax au module de caisse de Dolibarr

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] Integrer un script Ajax au module de caisse de Dolibarr

Re: Integrer un script Ajax au module de caisse de Dolibarr

par Laplume » 24 févr. 2013, 00:52

Merci beaucoup pour la réponse. Mais en fait je ne pense pas que ça va corriger le problème. Le script fonctionne en dehors de dolibarr, je l'ai testé sur un formulaire de base et il me retourne correctement tout les tests, en me séparant les trois enregistrements dans les bons champs.

Re: Integrer un script Ajax au module de caisse de Dolibarr

par damien_55 » 23 févr. 2013, 19:48

Concernant la séparation et ton retour echo,

la bonne syntaxe est
echo $variable ;


et
echo $variable1.' * '  .$variable2 ;
et pas
echo "$res[label]*$res[label_auteur]*$res[label_editeur]";

Re: Integrer un script Ajax au module de caisse de Dolibarr

par Laplume » 23 févr. 2013, 19:06

En fait le principe est simple : avec ma douchette, je lis le code barre qui me renvoi l'ean dans mon champ EAN. La fonction permet de remplir automatiquement les champs titre auteur et éditeur correspondant à l'ean du livre scanné.

Pour les * il s'agit en fait d'un caractère de séparation ajouté au résultat de la requete qui est utilisé ensuite comme marqueur de découpage pour avoir les trois segment (titre, auteur, éditeur)

Re: Integrer un script Ajax au module de caisse de Dolibarr

par damien_55 » 23 févr. 2013, 18:56

$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]";
    }
Que veux tu obtenir ?

le * représente une multiplication.

Pour afficher ce que je pense, ce serait plutot.
echo $res[label].' - '.$res[label_auteur].' - '.$res[label_editeur];
C'est juste pour afficher le résultat.

Integrer un script Ajax au module de caisse de Dolibarr

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);
    }