Transformer un code js en ajax pour recuper un cod

Signaler
Messages postés
500
Date d'inscription
lundi 24 août 2009
Statut
Membre
Dernière intervention
13 avril 2021
-
Messages postés
32446
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
13 mai 2021
-
Bonjour,
j'ai pris un tutoriel sur le net que j'aimerais bien exploiter.
il s'agit de pouvoir récupérer le code à partir d'un lecteur de code bar. le code source est totalement en JavaScript.
quand j’exécute mon code ajouter aucune récupération de la référence du produit (code) n'est réalisée.

voici les parties concernée

partie js

1.code initial
    Quagga.onDetected(function(result) {
        var code = result.codeResult.code;
        

        if (App.lastResult !== code) {
            App.lastResult = code;
            var $node = null, canvas = Quagga.canvas.dom.image;

            $node = $('<li><div class="thumbnail"><div class="imgWrapper"><img /></div><div class="caption"><h4 class="code"></h4></div></div></li>');
            $node.find("img").attr("src", canvas.toDataURL());
            $node.find("h4.code").html(code);
            $("#result_strip ul.thumbnails").prepend($node);

        }
    });


2. code transformé
    Quagga.onDetected(function(result) {
        var code = result.codeResult.code;
        

        if (App.lastResult !== code) {
            App.lastResult = code;
            var $node = null, canvas = Quagga.canvas.dom.image;

            $node = $('<li><div class="thumbnail"><div class="imgWrapper"><img /></div><div class="caption"><h4 class="code"></h4></div></div></li>');
            $node.find("img").attr("src", canvas.toDataURL());
            $node.find("h4.code").html(code);
            $("#result_strip ul.thumbnails").prepend($node);
            
            alert(code) ;
           var xhr = new XMLHttpRequest() ;
            xhr.open("POST",'traitement.php',true) ;
            xhr.onreadystatechange = function(){
                if(xhr.readyState == 4 && xhr.status==400)
                {
                 alert(xhr.responseText) ;
                }
            } ;
            //xhr.setRequestHeader("Content-type","application/x-www-form-urlencoded") ;
            xhr.send("code="+code) ;
           

        }
    });



2.partie PHP
<?php  

echo 'je renttee' ;
exit ;
 
	$dsn =  'mysql:host=localhost;dbname=testajax';
	$utilisateur = 'root';
	$mdp = '';
	try {
	$bdd= new PDO($dsn, $utilisateur, $mdp, array(
		PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8")) ;
   	$log = $log . "la connexion a réussi.<br>" ;
} catch (PDOException $e) {
	echo "Raté!!! " . $e->getMessage() . "<br>" ;
	die(); 
}
  $code = $_POST['code']
  $requette = $bdd->query("SELECT * FROM produits WHERE code=$code") ;
  $resultat = $requette->fetch(PDO::FETCH_ASSOC) ;
  
  print_r($resultat) ;
  exit ;
?>


NB:
 alert(code) ;
revoit bien le code
A voir également:

7 réponses

Messages postés
32446
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
13 mai 2021
347
Bonjour

Et que t'affiche la console de ton navigateur ? ( apres avoir activé le debug du xhr si tu es sous chrome)
Le mieuxétant de debuguer à partir de firefox.

Messages postés
32446
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
13 mai 2021
347
Messages postés
500
Date d'inscription
lundi 24 août 2009
Statut
Membre
Dernière intervention
13 avril 2021
1
Bonsoir, merci de me repondre .
je suis sur chrome et je sais pas comment faire : activé le debug du xhr si tu es sous chrome)

alors suis allé dans plus d'outil >outils developpeurs
et dans concole voici ce que je vois :

Error parsing a meta element's content: ';' is not live_w_locator.html:11 a valid key-value pair separator. Please use ',' instead.
Messages postés
500
Date d'inscription
lundi 24 août 2009
Statut
Membre
Dernière intervention
13 avril 2021
1
voici ce que me donne la console :

POST http://localhost/serratus_quaggaJ/example/traitement.php 500 (Internal Server Error)

live_w_locator.js:306
Messages postés
32446
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
13 mai 2021
347
Tu as donc une erreur dans le script php...
As tu fais le corrections que je t'ai demandé ?
Messages postés
500
Date d'inscription
lundi 24 août 2009
Statut
Membre
Dernière intervention
13 avril 2021
1
Bonjour,
voici mon code PHP :
<?php  

$dsn =  'mysql:host=localhost;dbname=testajax';
	$utilisateur = 'root';
	$mdp = '';
	try {
	$bdd= new PDO($dsn, $utilisateur, $mdp, array(
		PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8")) ;
   	$log = $log . "la connexion a réussi.<br>" ;
} catch (PDOException $e) {
	echo "Raté!!! " . $e->getMessage() . "<br>" ;
	die(); 
}
  $code = $_POST['code'];
  //RECUPERATION KEY SECRET SMS
	$sql_key = "SELECT * 
			    FROM produits 
				WHERE code=$code
	           ";

try{
$req_key = $pdo->query($sql_key);
}catch(PDOException  $e){
     echo "ERREUR DE REQUETE : " . $sql_key . '  error : '.$e->getMessage();
}
$nbr_key = $req_key->rowCount();
$resultat = $req_key->fetch(PDO::FETCH_ASSOC);
 print_r($resultat) ;
  exit ; 

?>


JE VOIS D'ERREUR
Messages postés
32446
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
13 mai 2021
347
Moi j'en vois une ... $pdo-> ?????? Alors que ta connexion c'est $bdd....

Bref, histoire d'avoir un code un peu plus propre... je t'invite à tester ça
<?php  
//Affichage des erreurs PHP
error_reporting(E_ALL);
ini_set('display_errors', TRUE);
ini_set('display_startup_errors', TRUE);


//---------------------------------------------------------//
//connexion à la bdd
//---------------------------------------------------------//
$dbname ='testajax';
$utilisateur = 'root';
$mdp = '';

try{
  $bdd =new PDO('mysql:host=localhost;dbname='.$dbname.'; charset=utf8', $utilisateur, $mdp);
  // Activation des erreurs PDO
  $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  // mode de fetch par défaut : FETCH_ASSOC / FETCH_OBJ / FETCH_BOTH
  $bdd->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
} catch(PDOException $e) {
    die('Erreur : ' . $e->getMessage());
}

//---------------------------------------------------------//
// récupération PROPRE des variables AVANT de les utiliser
//---------------------------------------------------------//
  $code = !empty($_POST['code']) ? $_POST['code'] : NULL;
  
  
//---------------------------------------------------------//
// Traitement
//---------------------------------------------------------//
$resultat = NULL;
if($code){
  
  //RECUPERATION KEY SECRET SMS
	$sql = "SELECT * 
         FROM produits 
         WHERE code= :code";
  $datas = array(':code'=>$code);
             
  try{
    $prep = $bdd->prepare($sql);
    $prep->execute($datas);
    $resultat = $prep->fetch(PDO::FETCH_ASSOC);
  }catch(PDOException  $e){
    echo "ERREUR DE REQUETE : " . $sql. '<br> error : '.$e->getMessage();
  }
  
  echo json_encode($resultat);
  exit();
  
}else{
  echo "ERREUR : Aucun Code passé en paramètres !";
}
?>


Et une fois de plus.... pour tes prochains code... à respecter les consignes données dans ce lien : http://www.commentcamarche.net/faq/48399-php-gestion-des-erreurs-debogage-et-ecriture-du-code

Ca fait des mois (ou des années je ne sais plus...) que tu viens poser tes questions... et que je te rabâche sans cesses les conseils pour correctement écrire ton code. Mais tu sembles avoir un peu de mal à comprendre ou à retenir ce qu'on te dit. A moins que tu t'en foutes complètement... non ??
Messages postés
500
Date d'inscription
lundi 24 août 2009
Statut
Membre
Dernière intervention
13 avril 2021
1
Effectivement il y avait une erreur dans le PHP, il fallait :
$pdo


maintenant je veux afficher le résultat sous forme de tableau dans la page HTMT . avec ce que j'ai fait . rien ne s'affiche or la console me revoie effectivement un résultat.

voici le code PHP.
<?php  

$dsn =  'mysql:host=localhost;dbname=testajax';
	$utilisateur = 'root';
	$mdp = '';
	try {
	$pdo= new PDO($dsn, $utilisateur, $mdp, array(
		PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8")) ;
   	$log = $log . "la connexion a réussi.<br>" ;
} catch (PDOException $e) {
	echo "Raté!!! " . $e->getMessage() . "<br>" ;
	die(); 
}
   $code = $_POST['code'];

  //RECUPERATION KEY SECRET SMS
	$sql_key = "SELECT * 
			    FROM produits 
				WHERE code= '$code'
	           ";

try{
$req_key = $pdo->query($sql_key);
}catch(PDOException  $e){
     echo "ERREUR DE REQUETE : " . $sql_key . '  error : '.$e->getMessage();
}
$nbr_key = $req_key->rowCount();
$p = $req_key->fetch(PDO::FETCH_ASSOC);
echo '
<table border="1">
<tr>
  <th>ID</th>
  <th>DES</th>
  <th>REFERENCE</th>
</tr>

<tr>
  <td>'.$p['id'].'</td>
  <td>'.$p['designation'].'</td>
  <td>'.$p['code'].'</td>
</tr>

</table>';

?>


Das le tutoriel initial voici ou le resultat sort . mous je veus à la place mon tableau

      <div id="result_strip">
        <ul class="thumbnails"></ul>
        <ul class="collector"></ul>
      </div>
      <div id="interactive" class="viewport"></div>
Messages postés
500
Date d'inscription
lundi 24 août 2009
Statut
Membre
Dernière intervention
13 avril 2021
1
j'ai repris le code PHP avec ton tien.
<?php  
//Affichage des erreurs PHP
error_reporting(E_ALL);
ini_set('display_errors', TRUE);
ini_set('display_startup_errors', TRUE);


//---------------------------------------------------------//
//connexion à la bdd
//---------------------------------------------------------//
$dbname ='testajax';
$utilisateur = 'root';
$mdp = '';

try{
  $bdd =new PDO('mysql:host=localhost;dbname='.$dbname.'; charset=utf8', $utilisateur, $mdp);
  // Activation des erreurs PDO
  $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  // mode de fetch par défaut : FETCH_ASSOC / FETCH_OBJ / FETCH_BOTH
  $bdd->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
} catch(PDOException $e) {
    die('Erreur : ' . $e->getMessage());
}

//---------------------------------------------------------//
// récupération PROPRE des variables AVANT de les utiliser
//---------------------------------------------------------//
  $code = !empty($_POST['code']) ? $_POST['code'] : NULL;
  
  
//---------------------------------------------------------//
// Traitement
//---------------------------------------------------------//
$resultat = NULL;
if($code){
  
  //RECUPERATION KEY SECRET SMS
	$sql = "SELECT * 
         FROM produits 
         WHERE code= :code";
  $datas = array(':code'=>$code);
             
  try{
    $prep = $bdd->prepare($sql);
    $prep->execute($datas);
    $p = $prep->fetch(PDO::FETCH_ASSOC);
  }catch(PDOException  $e){
    echo "ERREUR DE REQUETE : " . $sql. '<br> error : '.$e->getMessage();
  }
  
echo '
<table border="1">
<tr>
  <th>ID</th>
  <th>DES</th>
  <th>REFERENCE</th>
</tr>

<tr>
  <td>'.$p['id'].'</td>
  <td>'.$p['designation'].'</td>
  <td>'.$p['code'].'</td>
</tr>

</table>';

  
}else{
  echo "ERREUR : Aucun Code passé en paramètres !";
}
?>


maintenant je veux afficher le résultat sous forme de tableau dans la page HTMT . avec ce que j'ai fait . rien ne s'affiche or la console me revoie effectivement un résultat.

Das le tutoriel initial voici ou le resultat sort . mous je veus à la place mon tableau
  <div id="result_strip">
        <ul class="thumbnails"></ul>
        <ul class="collector"></ul>
      </div>
      <div id="interactive" class="viewport"></div>
Messages postés
500
Date d'inscription
lundi 24 août 2009
Statut
Membre
Dernière intervention
13 avril 2021
1
voici le code js:
    Quagga.onDetected(function(result) {
        var code = result.codeResult.code;
        

        if (App.lastResult !== code) {
            App.lastResult = code;
            var $node = null, canvas = Quagga.canvas.dom.image;

            $node = $('<li><div class="thumbnail"><div class="imgWrapper"><img /></div><div class="caption"><h4 class="code"></h4></div></div></li>');
            $node.find("img").attr("src", canvas.toDataURL());
            $node.find("h4.code").html(code);
            $("#result_strip ul.thumbnails").prepend($node);
            
           var xhr = new XMLHttpRequest() ;
            xhr.open("POST",'traitement.php',true) ;
            xhr.onreadystatechange = function(){
                if(xhr.readyState == 4 && xhr.status==200)
                {
                 alert(xhr.responseText) ;
                }
            } ;
            xhr.setRequestHeader("Content-type","application/x-www-form-urlencoded") ;
            xhr.send("code="+code) ;
           

        }
    });
Messages postés
32446
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
13 mai 2021
347
Ben.. à la place du
alert(xhr.responseText) ;

Tu codes l'ajout à ta page ......

un truc du genre:

Si tu as JQUERY
$("#interactive").html(xhr.responseText);



Sans JQUERY
document.getElementById("interactive").innerHTML = xhr.responseText;