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 :

Erreur en mettant un code dans une fonction


Sujet :

PHP & Base de données

  1. #1
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Mars 2013
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Mars 2013
    Messages : 34
    Points : 10
    Points
    10
    Par défaut Erreur en mettant un code dans une fonction
    Bonjour. Je ne sais pas si je suis dans la bonne section, mais je pose ma question quand même/
    j'ai un site opérationnel pour le moment, mais je le passe en pdo, j'en profite pour essayer de remplacer mes includes par des fonctions, mais j'ai un soucis avec ma connexion avec la bdd.
    Pour cette connexion, j'ai créer une page connexionBdd.php sur laquelle j'ai mis ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?php
    try{
        $bdd = new PDO('mysql:host=localhost;dbname=mabase', 'root', 'root') or die(print_r($bdd->errorInfo()));
        $bdd->exec('SET NAMES utf8');
    }
    catch(Exeption $e){
        echo'Erreur:'.$e->getMessage();
    }
    ?>
    Si j'appelle cette page par un include, pas de souci. j'ai une petite div test qui m'appelle des éléments de la bdd dans ma page d'accueil, ainsi je vois que ma connexion est active et fonctionne.
    si je prend ce même code et que je le met dans une fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    function connexionBdd() {
        try{
            $bdd = new PDO('mysql:host=localhost;dbname=mabase', 'root', 'root') or die(print_r($bdd->errorInfo()));
            $bdd->exec('SET NAMES utf8');
        }
        catch(Exeption $e){
            echo'Erreur:'.$e->getMessage();
        }
    }
    Ace moment, j'ai un soucis :
    le site vas s'afficher jusqu'à ma div de test. si je regarde le code généré, le code apparait jusqu'à cette div. A partir de l'affichage des donnée de ma bdd (juste avant en fait), plus rien.

    Quelqu'un aurait une idée du soucis si j'ai fait un oubli ou si il y a une chose que je n'ai pas compris pour la création des fonctions?.
    merci d'avance.

  2. #2
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    La variable $bdd n'est accessible qu'à l'intérieur de ta fonction, donc à l'extérieur, tu n'as plus accès à PDO !

  3. #3
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Mars 2013
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Mars 2013
    Messages : 34
    Points : 10
    Points
    10
    Par défaut
    oups, merci.
    en fait, j'ai pensé un peu a cela, mais par manque d’habitude, parce que je suis débutant ou autre, j'ai placé ma déclaration de variable globale après la variable du coup, ça ne marchait pas et je me suis dit qu'il y avait un autre soucis.
    je viens de retester en mettant
    en fin de ligne 2
    et ça marche

    merci encore.

  4. #4
    Membre émérite

    Profil pro
    Inscrit en
    Mai 2008
    Messages
    1 576
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 1 576
    Points : 2 440
    Points
    2 440
    Par défaut
    Ça marche mais c'est une mauvaise réponse.

    Évites d'utiliser global à moins que tu n'aies vraiment pas le choix (ce qui est rare). Dans to cas, il vaut mieux que la fonction connexionBdd retourne $bdd; puis ensuite dans ton code, tu récupères cette connexion avec $bdd = connexionBdd();

    Profites-en pour forcer l'utilisation de requêtes préparées en natif, autrement PDO se contente de simuler les requêtes préparées sur MYSQL
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);

  5. #5
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Mars 2013
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Mars 2013
    Messages : 34
    Points : 10
    Points
    10
    Par défaut
    ah!
    du coup, je suis un peu distancé. ce n'est pas encore mon niveau.
    pour le moment, j'essaie de comprendre comment fonction la pdo. les requêtes préparés, pareil.
    comment tu fait pour récupérer ta variable avec ta fonction. par une phrase du genre
    après la ligne 8 de ma fonction?

    Je suis un débutant qui essaie de faire des chose plus compliqué que ce qu'il peut pour le moment. je crée mon site pour le moment en faisant un gros tuto sur la programmation orienté objet; mais j'avoue que je n’aie pas encore tout assimilé.
    j'aimerais comprendre pourquoi il ne faut pas utiliser global
    merci de m'aider

Discussions similaires

  1. [VS2005]Masquer des blocs de code dans une fonction
    Par tomny dans le forum Visual Studio
    Réponses: 2
    Dernier message: 09/12/2008, 16h53
  2. [débutant] erreur dans une fonction
    Par Skizo dans le forum Access
    Réponses: 7
    Dernier message: 18/05/2006, 10h46
  3. [8i][PL/SQL] erreur avec lpad dans une fonction
    Par sali dans le forum Oracle
    Réponses: 3
    Dernier message: 16/03/2006, 06h22
  4. Erreur dans une fonction
    Par dark_vidor dans le forum Langage
    Réponses: 6
    Dernier message: 15/01/2006, 10h23
  5. Réponses: 2
    Dernier message: 11/08/2004, 15h01

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