IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

EDI, CMS, Outils, Scripts et API PHP Discussion :

Php PDO : Initialisation des options d'erreur et autres


Sujet :

EDI, CMS, Outils, Scripts et API PHP

  1. #1
    Membre éprouvé

    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    981
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 981
    Points : 1 028
    Points
    1 028
    Billets dans le blog
    36
    Par défaut Php PDO : Initialisation des options d'erreur et autres
    Bonjour à tous!

    Je teste PHP PDO avec MySQL mais visiblement il y a au moins une erreur puisque rien ne se passe sur ma base de données:

    Extrait du code HTML important (totalité visible sur (url : http://itconsulting.net46.net/lapeyre/)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    <!doctype html>
    <html>
    <head>
    <meta charset="UTF-8"><head> [...other line code]
     <script type="text/javascript"src="jquery-1.9.1.min.js"></script>
    <script type="text/javascript" src="sqlConnect.js"></script>
    </head>
    <body> [other controls]
    <textarea name="message" id="message" style="position:absolute;left:138px;top:156px;width:276px;height:98px;z-index:4;" rows="5" cols="40" tabindex="5"></textarea>
    <input type="button" id="send" onclick="jsConnect();return false;" name="" value="Envoie Email" style="position:absolute;left:320px;top:270px;width:96px;height:25px;z-index:5;" tabindex="6">
    </body>
    <html>
    Code JS:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    function jsConnect()
     {	alert ('OOOWebHost');
    	var _data ="";
    	$.ajax(
    	{	type: "POST",
    		url: "sqlConnect.php",
    		data: _data,
    		dataType: "JSON",
    		success: function(msg)
    		{	oData = JSON.parse(msg);
    			var alertMsg = oData[0].id;
    			alert (alertMsg ); 
    			$("#message").val("Essai youppi");
    		}
    	});
    }
    Mon code PHP
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
     
     <?php
     
    //PDO / php_pdo / php_pdo_mysql / Data Objects / class pdo
     
    $dsn = 'mysql:host=mysql2.000webhost.com ;dbname=XXXXX';
    $username = 'XXXX';
    $password = 'XXX';
    $options = array(    PDO::ATTR_ERRMODE,
                PDO::ERRMODE_EXCEPTION
    );
    $rowTable = array( );
    $sql = "SELECT *  FROM 'participant'"// on crée la requête SQL
    try
    {
        $dbh = new PDO($dsn, $username, $password, $options);
        $dbh->query($sql);  
        foreach($dbh->query($sql) as $row)
       {    $rowTable[] = $row;
       }
    } 
    catch (PDOException $e)
    {  $rowTable[] =  "Erreur !: " . $e->getMessage() ;
        die();
    }
     
    $dbh = null;// Fermeture connexion !
    echo json_encode($rowTable);
    ?>
    Mal nommer un objet, c'est ajouter au malheur de ce monde, car le mensonge est justement la grande misère humaine, c'est pourquoi la grande tâche humaine correspondante sera de ne pas servir le mensonge
    Poésie 44, n° 17 - Albert Camus

    Mes réponses vous ont aidés, un clic sur leur pouce vert
    Bonjour chez vous

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 380
    Points : 10 410
    Points
    10 410
    Par défaut
    Tu n'utilise pas correctement le tableau d'options que tu passes à pdo pour configurer le mode d'erreur. Je donne un exemple ici.

  4. #4
    Membre éprouvé

    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    981
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 981
    Points : 1 028
    Points
    1 028
    Billets dans le blog
    36
    Par défaut
    Bonjour ABCIWEB et Sabotage,

    Merci pour vos réponses. J'ai pompé le code de ABCIWEB dans le post de LaurentSc [Récupérer données en objet avec PDO] et qui affectait les variables d'options comme ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
    $pdo_options[PDO::ATTR_EMULATE_PREPARES] = false;//important sur les configs récentes
    $pdo_options[PDO::ATTR_DEFAULT_FETCH_MODE] = PDO::FETCH_OBJ;//pour le mode objet
    $pdo_options[PDO::MYSQL_ATTR_INIT_COMMAND] = "SET NAMES utf8";//pour l'utf-8
    Cela revient-il à
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $options = array( 
    PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
    PDO::ATTR_EMULATE_PREPARES => false,
    PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_OBJ,
    PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"
    );
    D'autre part puis-je utiliser pour éviter la boucle while du fetch ci-dessous
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    foreach($dbh->query($sql) as $row){ 
       $rowTable[] = $row;
       }
    Utiliser le code suivant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $oQry =  $dbh->query($sql);
    $rowTable = oQry->fetchAll();
    J'ai vu sur un post lancé par sabdoul ici, ce code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     $json=$bdd->Listajax($sql)
    echo json_encode($json);
    Ça dit quelque chose à quelqu'un???

    Enfin, et j'espère pas trop abuser, le traitement du code de sqlConnect.php:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    json_encode($rowTable);
    par dans sqlConnect.js avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    oData = JSON.parse(msg);
    	var alertMsg = oData[0].idparticipant;// du $sql = "SELECT *  FROM 'participant'" dans sqlConnect.php
    	alert (alertMsg );
    vous parait-il Ok?

    Encore merci pour votre aide
    Mal nommer un objet, c'est ajouter au malheur de ce monde, car le mensonge est justement la grande misère humaine, c'est pourquoi la grande tâche humaine correspondante sera de ne pas servir le mensonge
    Poésie 44, n° 17 - Albert Camus

    Mes réponses vous ont aidés, un clic sur leur pouce vert
    Bonjour chez vous

  5. #5
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 380
    Points : 10 410
    Points
    10 410
    Par défaut
    1/ oui les deux tableaux sont équivalents (tu aurais pu tester pour voir)

    2/ oui tu peux utiliser fetchAll() pour récupérer directement le tableau (tu aurais pu tester pour voir)

    3/ quand on rentre "Listajax php" dans un moteur de recherche on ne tombe pas sur la définition d'une fonction php -> donc c'est une fonction utilisateur qu'à créer le développeur pour répondre à un besoin spécifique.

    4/ json_encode est une fonction php qui permet de transformer une chaine de caractère ou un tableau au format json. Ce format pourra être exploité par javascript en retour d'une requête ajax.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Erreur - Affichage des commentaires en ajax PHP - PDO
    Par nico44530 dans le forum Langage
    Réponses: 2
    Dernier message: 17/03/2013, 20h05
  2. [PHP-JS] Copier des multiples champs dans d'autres
    Par Akim13 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 13/07/2007, 16h26
  3. [PHP-JS] Personnalisation des options d'affichage
    Par cirtey dans le forum Langage
    Réponses: 3
    Dernier message: 14/12/2006, 17h35
  4. [PHP-JS] Lecture des options d'un select
    Par licorne dans le forum Langage
    Réponses: 25
    Dernier message: 09/03/2006, 16h05

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo