Transformer un code js en ajax pour recuper un cod

msi79 Messages postés 509 Date d'inscription lundi 24 août 2009 Statut Membre Dernière intervention 2 mai 2023 - 10 juil. 2018 à 22:15
jordane45 Messages postés 38137 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 - 11 juil. 2018 à 11:39
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

7 réponses

jordane45 Messages postés 38137 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 344
10 juil. 2018 à 22:41
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.

0
jordane45 Messages postés 38137 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 344
10 juil. 2018 à 22:42
0
msi79 Messages postés 509 Date d'inscription lundi 24 août 2009 Statut Membre Dernière intervention 2 mai 2023 1
11 juil. 2018 à 00:21
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.
0
msi79 Messages postés 509 Date d'inscription lundi 24 août 2009 Statut Membre Dernière intervention 2 mai 2023 1
11 juil. 2018 à 00:38
voici ce que me donne la console :

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

live_w_locator.js:306
0
jordane45 Messages postés 38137 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 344
11 juil. 2018 à 06:18
Tu as donc une erreur dans le script php...
As tu fais le corrections que je t'ai demandé ?
0
msi79 Messages postés 509 Date d'inscription lundi 24 août 2009 Statut Membre Dernière intervention 2 mai 2023 1
11 juil. 2018 à 09:34
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jordane45 Messages postés 38137 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 344
11 juil. 2018 à 10:14
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 ??
0
msi79 Messages postés 509 Date d'inscription lundi 24 août 2009 Statut Membre Dernière intervention 2 mai 2023 1
11 juil. 2018 à 10:18
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>
0
msi79 Messages postés 509 Date d'inscription lundi 24 août 2009 Statut Membre Dernière intervention 2 mai 2023 1
11 juil. 2018 à 10:30
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>
0
msi79 Messages postés 509 Date d'inscription lundi 24 août 2009 Statut Membre Dernière intervention 2 mai 2023 1
11 juil. 2018 à 10:35
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) ;
           

        }
    });
0
jordane45 Messages postés 38137 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 344
11 juil. 2018 à 11:39
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;
0
Rejoignez-nous