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

PHP & Base de données Discussion :

Lien URL vers requete preparée sur PDO [PDO]


Sujet :

PHP & Base de données

  1. #1
    Membre du Club
    Homme Profil pro
    Helsinki
    Inscrit en
    Avril 2012
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Finlande

    Informations professionnelles :
    Activité : Helsinki
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2012
    Messages : 39
    Points : 64
    Points
    64
    Par défaut Lien URL vers requete preparée sur PDO
    Bonjour,
    J’ai un problème qui me tracasse concernant le passage par URL de paramètres issus d’une requête préparée qui interroge une base de données Mysql 5.6.12 intégrée dans un serveur WAMP 2.4 / PHP 5.4.16. J'ai allégé le code au max pour me concentrer essentiellement sur mon problème.
    Voici ma base de données, le id est en autoincrement : [id (autoincrement), section (INT), sous-section (INT), contenu (TEXT)]

    Le fichier qui interroge la base de données (fichier_requete.php) et qui va être appelé a pour code :
    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
    <?php
    try
    {
        //Connection MySQL
        $bdd = new PDO('mysql:host=localhost;dbname=test', 'root', '');
    }
    catch(Exception $e)
    {
        // A renvoyer en ca d'erreur
            die('Erreur : '.$e->getMessage());
    }
     
    // requete preparee
    $requete = $bdd->prepare('SELECT id section sous_section contenu
    			FROM ma_table 
    			WHERE id = :id AND section = :section AND sous_section = :sous_section');
    $requete->execute(array('id'=>$_GET['id'],
    		'section'=>$_GET['section'],
    		'sous_section'=>$_GET['sous_section']
    		));
     
    //Affichage des entrées une à une
    while ($donnees = $requete->fetch())
    {
       echo $donnees['contenu'].'<br />';
    }
    $requete->closeCursor();
    ?>
    Voici le code de mon fichier index.php qui va faire un lien vers fichier_requete.php tout en lui passant par URL des paramètres (section et sous- section)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <?php
    echo
    '<a href ="fichier_requete.php?id=1&section=1&sous_section=1">'.'le lien'.'</a>'
    ?>

    Lorsque je lance le fichier index.php, je reçois un page blanche avec aucun message d’erreur. Notez que sans requête préparée et de passage de paramètre par URL, j’ai utilisé une version adaptée du même code pour afficher le contenu de ma table. Cela fait des jours que je cherche le pourquoi sans succès. Il y a forcément des choses que je ne saisis pas au niveau des requêtes préparées et du passage de paramètre par URL. Une aide serait la bienvenue. Merci

  2. #2
    Invité
    Invité(e)
    Par défaut
    bonjour,
    1/ il manque des virgules dans le SELECT.

    2/ pour identifier la ligne, l'id suffit.
    inutile de transmettre section et sous-section.

    3/ on peut tester une requete directement dans phpmyadmin.

  3. #3
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2012
    Messages
    631
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2012
    Messages : 631
    Points : 1 220
    Points
    1 220
    Par défaut
    bonjour,


    pour afficher les erreurs, ça sera déjà mieux que tu définisses le gestionnaire d'erreurs lié à PDO en faisant appel à la méthode setAttribute() de PDO et aussi en utilisant la classe de gestion d'exceptions spécifiques(PDOException) à PDO.
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $requete = $bdd->prepare('SELECT id, section, sous_section, contenu
    			FROM ma_table 
    			WHERE id = :id AND section = :section AND sous_section = :sous_section');

  4. #4
    Membre du Club
    Homme Profil pro
    Helsinki
    Inscrit en
    Avril 2012
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Finlande

    Informations professionnelles :
    Activité : Helsinki
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2012
    Messages : 39
    Points : 64
    Points
    64
    Par défaut Problème résolu, merci
    Merci à vous deux jreaux62 et armel18,
    vous avez réglé mon problème. Il s’agissait des virgules dans le SELECT exactement comme l’a écrit armel18. À présent, je fais passer directement mes paramètres dans l’URL et j’affiche le contenu de la base de données.
    Pour jreaux, vrai qu’on peut identifier la ligne par l’id, mais il fallait déjà que mon code fonctionne, à présent je peux affiner ma requête en passant par l’id. Pour ton 2eme point concernant tester la requête dans phpmyadmin, ça ne serait pas une bonne solution car je développe un site web et donc, il faut gérer par php.
    Pour armel18, merci pour ta suggestion concerant setAttribute() de PDO et la classe de gestion d'exceptions spécifiques(PDOException). J’ignore ces fonctions, et je vais creuser dans ce sens.
    En tout cas merci bien à vous deux d’avoir résolu mon problème. S’il n’y a pas d’autres commentaire, je cliquerai sur résolu.

  5. #5
    Invité
    Invité(e)
    Par défaut
    j'ai bien écrit TESTER dans phpmyadmin.
    c'est un moyen de VERIFIER si oui ou non la requete est bonne.

    Quant à la gestion d'erreurs PDO :
    => III.a. Établir une connexion avec PDO (+ exemple plus complet ici)

    Idem au niveau de l'exécution de la requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    try {
    	// requete preparee
    	$requete = $bdd->prepare('SELECT id, section, sous_section, contenu
    			FROM ma_table 
    			WHERE id = :id AND section = :section AND sous_section = :sous_section');
    	$requete->execute(array('id'=>$_GET['id'],
    		'section'=>$_GET['section'],
    		'sous_section'=>$_GET['sous_section']
    		));
    } catch (PDOException $e) { echo 'Erreur SQL : '. $e->getMessage().'<br/>'; die(); }
    Dernière modification par Invité ; 08/08/2013 à 09h51.

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

Discussions similaires

  1. Lien ODBC vers Oracle 11G sur machine virtuelle
    Par Soulghard dans le forum Installation
    Réponses: 1
    Dernier message: 24/06/2010, 17h17
  2. Réponses: 2
    Dernier message: 05/07/2006, 16h52
  3. Lien vers une image sur un autre serveur
    Par claralavraie dans le forum ASP
    Réponses: 1
    Dernier message: 23/12/2005, 11h40
  4. [FLASH MX2004] Créer lien url sur bouton
    Par coconut1 dans le forum Flash
    Réponses: 4
    Dernier message: 24/05/2005, 11h08

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