Ajax et php objet
Résolu
skflers61
Messages postés
43
Date d'inscription
Statut
Membre
Dernière intervention
-
Pitet Messages postés 2826 Date d'inscription Statut Membre Dernière intervention -
Pitet Messages postés 2826 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je viens de me lancer dans l'ajax aujourd'hui et j'essaye de faire des listes liées. Je suis le tutoriel qui est ici https://siddh.developpez.com/articles/ajax/#LIV-A mais avec ma base de données qui est un fichier .mdb.
Pour l'instant je n'est fait que la première partie(réponse au format texte), c.a.d sans la partie responseXML. Je vais passer à la suite une fois que j'aurais régler mon problème.
Voilà mon problème:
Quand j'adapte le code php du tuto qui traite la requete ajax, sa marche:
Le problème c'est que je travail en php objet, et donc que j'ai des fonctions qui me permettent de faire ma connexion à ma bdd, mes requetes sql, mais qui se trouve dans d'autres fichiers. J'essaye d'adapter mon code, ce qui me donne ceci:
Ma fonction recupLigneParAtelier() est dans Saisie.php.
Je ne sais pas comment faire pour appeler ma fonction traitementAjax() depuis mon code javascript.
Voici mon code javascript:
Comment fait-on pour utiliser le php objet(avec des classes, des fonctions,..) dans une requete ajax(ou plutôt dans la page php qui est appelée par la requete ajax)?
Je viens de me lancer dans l'ajax aujourd'hui et j'essaye de faire des listes liées. Je suis le tutoriel qui est ici https://siddh.developpez.com/articles/ajax/#LIV-A mais avec ma base de données qui est un fichier .mdb.
Pour l'instant je n'est fait que la première partie(réponse au format texte), c.a.d sans la partie responseXML. Je vais passer à la suite une fois que j'aurais régler mon problème.
Voilà mon problème:
Quand j'adapte le code php du tuto qui traite la requete ajax, sa marche:
<?php echo "<select name='livre'>"; //connexion BDD $pdo = new PDO("odbc:Driver={Microsoft Access Driver (*.mdb)};Dbq=C:\wamp\www\stage_info\developpement\Crystal.mdb;Uid=", "", "", array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8')); //requete SQL $sql="SELECT CODE_LIGNE,DESI_LIGNE, count(*) FROM ENTETES_CARTES_PAPIER where CODE_UP='CA' and CODE_ATEL='00' group by CODE_LIGNE,DESI_LIGNE"; $resultats = $pdo->query($sql); $resultats->setFetchMode(PDO::FETCH_OBJ); while($res = $resultats->fetch()){ echo "<option value='".$res->CODE_LIGNE."'>".$res>-CODE_LIGNE."</option>"; } $resultats->closeCursor(); echo "</select>"; ?>
Le problème c'est que je travail en php objet, et donc que j'ai des fonctions qui me permettent de faire ma connexion à ma bdd, mes requetes sql, mais qui se trouve dans d'autres fichiers. J'essaye d'adapter mon code, ce qui me donne ceci:
<?php require_once 'Saisie.php'; class ajaxLivre extends Saisie { private $varSaisie; function __construct() { $this->varSaisie = new Saisie(); } public function traitementAjax() { echo "<select name='livre'>"; //execute requete sql pour récupérer mes Lignes par Atelier $resultats = $this->varSaisie->recupLigneParAtelier('00'); $resultats->setFetchMode(PDO::FETCH_OBJ); while( $resultat = $resultats->fetch() ){ echo "<option value='".$resultat->CODE_LIGNE."'>".$resultat->CODE_LIGNE."</option>"; } $resultats->closeCursor(); echo "</select>"; } } ?>
Ma fonction recupLigneParAtelier() est dans Saisie.php.
Je ne sais pas comment faire pour appeler ma fonction traitementAjax() depuis mon code javascript.
Voici mon code javascript:
<script type='text/javascript'> function getXhr(){ var xhr = null; if(window.XMLHttpRequest) // Firefox et autres xhr = new XMLHttpRequest(); else if(window.ActiveXObject){ // Internet Explorer try { xhr = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { xhr = new ActiveXObject("Microsoft.XMLHTTP"); } } else { // XMLHttpRequest non supporté par le navigateur alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest..."); xhr = false; } return xhr; } /** * Méthode qui sera appelée sur le click du bouton */ function go(){ var xhr = getXhr(); // On défini ce qu'on va faire quand on aura la réponse xhr.onreadystatechange = function(){ // On ne fait quelque chose que si on a tout reçu et que le serveur est ok if(xhr.readyState == 4 && xhr.status == 200){ leselect = xhr.responseText; // On se sert de innerHTML pour rajouter les options a la liste document.getElementById('livre').innerHTML = leselect; } } // Ici on va voir comment faire du post xhr.open("POST","ajaxLivre.php",true); // ne pas oublier ça pour le post xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded'); // ne pas oublier de poster les arguments // ici, l'id de l'auteur sel = document.getElementById('auteur'); idauteur = sel.options[sel.selectedIndex].value; xhr.send("idAuteur="+idauteur); } </script>
Comment fait-on pour utiliser le php objet(avec des classes, des fonctions,..) dans une requete ajax(ou plutôt dans la page php qui est appelée par la requete ajax)?
A voir également:
- Ajax et php objet
- Easy php - Télécharger - Divers Web & Internet
- Vente objet occasion entre particulier - Guide
- Objet interdit en cabine ryanair - Guide
- Expert php pinterest - Télécharger - Langages
- Identifier un objet à partir d'une photo - Guide
1 réponse
Salut,
Javascript n'a aucune informations sur la façon dont est codé ton script et ne peut donc pas appeler un méthode de classe. Il appel un fichier php et il attend un retour.
Tu dois donc exécuter toi-même la méthode désirée dans le fichier appelé par le script ajax. Par exemple :
ajax.php
Bonne journée
Javascript n'a aucune informations sur la façon dont est codé ton script et ne peut donc pas appeler un méthode de classe. Il appel un fichier php et il attend un retour.
Tu dois donc exécuter toi-même la méthode désirée dans le fichier appelé par le script ajax. Par exemple :
ajax.php
<?php require 'ajaxLivre.php'; $al = new ajaxLivre(); echo $al->traitementAjax();
Bonne journée