Transformer un code js en ajax pour recuper un cod

msi79 425 Messages postés lundi 24 août 2009Date d'inscription 11 juillet 2018 Dernière intervention - 10 juil. 2018 à 22:15 - Dernière réponse : jordane45 21707 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 22 juillet 2018 Dernière intervention
- 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
Afficher la suite 

Votre réponse

11 réponses

jordane45 21707 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 22 juillet 2018 Dernière intervention - 10 juil. 2018 à 22:41
0
Merci
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.

jordane45 21707 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 22 juillet 2018 Dernière intervention - 10 juil. 2018 à 22:42
Commenter la réponse de jordane45
msi79 425 Messages postés lundi 24 août 2009Date d'inscription 11 juillet 2018 Dernière intervention - 11 juil. 2018 à 00:21
0
Merci
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.
Commenter la réponse de msi79
msi79 425 Messages postés lundi 24 août 2009Date d'inscription 11 juillet 2018 Dernière intervention - 11 juil. 2018 à 00:38
0
Merci
voici ce que me donne la console :

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

live_w_locator.js:306
jordane45 21707 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 22 juillet 2018 Dernière intervention - 11 juil. 2018 à 06:18
Tu as donc une erreur dans le script php...
As tu fais le corrections que je t'ai demandé ?
Commenter la réponse de msi79
msi79 425 Messages postés lundi 24 août 2009Date d'inscription 11 juillet 2018 Dernière intervention - 11 juil. 2018 à 09:34
0
Merci
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
Commenter la réponse de msi79
jordane45 21707 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 22 juillet 2018 Dernière intervention - 11 juil. 2018 à 10:14
0
Merci
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 ??
Commenter la réponse de jordane45
msi79 425 Messages postés lundi 24 août 2009Date d'inscription 11 juillet 2018 Dernière intervention - 11 juil. 2018 à 10:18
0
Merci
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>
Commenter la réponse de msi79
msi79 425 Messages postés lundi 24 août 2009Date d'inscription 11 juillet 2018 Dernière intervention - 11 juil. 2018 à 10:30
0
Merci
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>
msi79 425 Messages postés lundi 24 août 2009Date d'inscription 11 juillet 2018 Dernière intervention - 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) ;
           

        }
    });
jordane45 21707 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 22 juillet 2018 Dernière intervention - 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;
Commenter la réponse de msi79

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.