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

Langage PHP Discussion :

MVC Appeler ma fonction


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    328
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 328
    Points : 85
    Points
    85
    Par défaut MVC Appeler ma fonction
    Bonjour,

    J'ai une problème dans mon contrôler

    Mon fichier connect.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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    <?php
        /**
        * Définition de la classe Base qui crée les liens vers la base de données
        * La classe sera appelée à chaque fois qu'une donnée de la base de données sera nécessaire
        */
        class Bdd
        {
            //----------------------------------------
            //SINGLETON
            //----------------------------------------
            private static $connect = null;
            private $bdd;
     
            private function __construct()
            {
                $strBddServeur = "xxxxxxxxxxxxxxx";
                $strBddLogin = "xxxxxxxxxxxxxxxxx";             
                $strBddPassword = "xxxxxxxxxxxxxx";
                $strBddBase = "xxxxxxxxxxxxxxxxxx";
     
     
                //Création d'un lien à la base de données de type PDO
                try{
                    $this->bdd = new PDO('mysql:host='.$strBddServeur.';dbname='.$strBddBase,$strBddLogin,$strBddPassword,array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8'));
                    $this->bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
                }
                catch(Exception $e){
                    die('Erreur : '.$e->getMessage());
                }
            }
     
            public static function getInstance() {
                if(is_null(self::$connect)) {
                    self::$connect = new Bdd(); 
                }
                return self::$connect;
            }
     
            //----------------------------------------
            //FONCTION
            //----------------------------------------
     
            // Permet d'effectuer une requête SQL. Retourne le résultat (s'il y en a un) de la requête sous forme d'objet
            public function requete($req){
                $query = $this->bdd->query($req);
                return $query;
            }
    	}
     
    ?>
    Ensuite j'ai un modele

    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
    <?php
    include_once("connect.php");
    /** Classe de gestion des selects servant de modèle
    */
     
    class Gestion_astreinte extends Bdd {
     
        static function hello() {
            echo "Hello Word";
        }
     
        static function select_Site() {
            $sql = 'SELECT * FROM SITE';
            $site->requete($sql)
            return $site;
        }
     
    }
    et je en mettant un controler.php de se type ça marche pas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <?php
    include_once('modele.php');
      $Gestion_astreinte=new Gestion_astreinte();
      $Gestion_astreinte->hello();
    ?>
    je pense que je dois mal déclarer quelque chose dans mon controleur surement

    je suis un peu paumé, si vous avez des idées, grand merci d'avance

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France, Marne (Champagne Ardenne)

    Informations forums :
    Inscription : Janvier 2009
    Messages : 60
    Points : 75
    Points
    75
    Par défaut
    Salut,

    C'est pas évident à démeller ton code... j'essaye de prendre dans l'ordre :

    Ton instance de PDO est contenue dans une instance de Bdd, tu exécutes une requête dans ta méthode requete.
    Mais pour utiliser cette méthode, il faut récupérer l'instance de Bdd...
    donc dans select_Site, tu devrais avoir un truc du style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $sql = 'select * from cequetuveux';
    $bd = Bdd::getInstance(); // appel de la méthode de classe
    $bd->requete($sql);
    Bon je te cache pas que la conception de ton singleton est vraiment cheloue... pourquoi pas juste manipuler ton instance de PDO, et grâce à getInstance tu la retournes (ou la créée si besoin) ?
    Comme ça plus besoin d'instance de Bdd, et surtout tu peux utiliser les méthodes recommandées avec PDO, à savoir la préparation des requêtes en "bindant" les paramètres. (parce que PDO::query c'est crade)

    Ensuite, ton 'modele' hérite de Bdd ??!! :o ! Conceptuellement, je ne trouve rien qui justifierait ça.

    Pour finir, dans ton 'controlleur', tu instancie Gestion_Astreinte, pour pouvoir appeler des méthodes statiques dessus ?

    Je pense que ya quelques notions de base en objet à revoir

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    328
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 328
    Points : 85
    Points
    85
    Par défaut
    oui vu que je début tu as entièrement raison j'ai des notions à revérifier...
    En tout cas grand merci, ça fonctionne à présent, il faut juste maintenant que je trouve comment faire des case pour appeler mon URL avec des paramétres de ce sty

    http://gest-inter-chms.alwaysdata.ne...php?param=site
    ou
    http://gest-inter-chms.alwaysdata.ne...?param=domaine
    ....

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <?php
    include_once('modele2.php');
      $Gestion_astreinte=new Gestion_astreinte();
      $Gestion_astreinte->select_Site();
    ?>
    mon fichier modele2.php à présent

    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    <?php
    include_once("connect.php");
    /** Classe de gestion des requete servant de modèle
    *   à notre application avec des méthodes de type CRUD
    */
     
    class Gestion_astreinte {
     
        function youpi() {
            echo "Youpi mon archi fonctionne";
        }
     
        function select_Site() {
    		$sql = 'SELECT * from SITE';
    		$bd = Bdd::getInstance(); // appel de la méthode de classe
    		$response = $bd->requete($sql);
            $output = $response->fetchAll(PDO::FETCH_ASSOC);
    		// Print JSON encode of the array.
    		echo json_encode(array('result'=>$output));		
        }
     
        function select_Domaine() {
    		$sql = 'SELECT * from DOMAINE';
    		$bd = Bdd::getInstance(); // appel de la méthode de classe
    		$response = $bd->requete($sql);
            $output = $response->fetchAll(PDO::FETCH_ASSOC);
    		// Print JSON encode of the array.
    		echo json_encode(array('result'=>$output));		
        }
     
        function select_Technicien() {
    		$sql = 'SELECT * from TECHNICIEN';
    		$bd = Bdd::getInstance(); // appel de la méthode de classe
    		$response = $bd->requete($sql);
            $output = $response->fetchAll(PDO::FETCH_ASSOC);
    		// Print JSON encode of the array.
    		echo json_encode(array('result'=>$output));		
        }	  
    }
    mon fichier Connect.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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    <?php
        /**
        * Définition de la classe Base qui crée les liens vers la base de données
        * La classe sera appelée à chaque fois qu'une donnée de la base de données sera nécessaire
        */
        class Bdd
        {
            //----------------------------------------
            //SINGLETON
            //----------------------------------------
            private static $connect = null;
            private $bdd;
     
            private function __construct()
            {
                $strBddServeur = "mon_serveur";
                $strBddLogin = "admin";             
                $strBddPassword = "*****";
                $strBddBase = "gest-inter-chms_android";
     
     
                //Création d'un lien à la base de données de type PDO
                try{
                    $this->bdd = new PDO('mysql:host='.$strBddServeur.';dbname='.$strBddBase,$strBddLogin,$strBddPassword,array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8'));
                    $this->bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
                }
                catch(Exception $e){
                    die('Erreur : '.$e->getMessage());
                }
            }
     
            public static function getInstance() {
                if(is_null(self::$connect)) {
                    self::$connect = new Bdd(); 
                }
                return self::$connect;
            }
     
            //----------------------------------------
            //FONCTION
            //----------------------------------------
     
            // Permet d'effectuer une requête SQL. Retourne le résultat (s'il y en a un) de la requête sous forme d'objet
            public function requete($req){
                $query = $this->bdd->query($req);
                return $query;
            }
    	}
     
    ?>

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France, Marne (Champagne Ardenne)

    Informations forums :
    Inscription : Janvier 2009
    Messages : 60
    Points : 75
    Points
    75
    Par défaut
    Aie. mot de passe en clair !

    pour vérifier les paramètres et appeler la méthode en fonction tu peux utiliser le tableau $_REQUEST

Discussions similaires

  1. Réponses: 2
    Dernier message: 11/07/2010, 09h23
  2. Réponses: 4
    Dernier message: 19/04/2004, 13h41
  3. [JSP] Appeler une fonction
    Par Patrick95 dans le forum Servlets/JSP
    Réponses: 10
    Dernier message: 23/12/2003, 13h44
  4. Appel à des fonctions incluses dans des DLL
    Par Greybird dans le forum Langage
    Réponses: 3
    Dernier message: 26/05/2003, 13h33
  5. Appeler une fonction avec/sans parenthèses
    Par haypo dans le forum Algorithmes et structures de données
    Réponses: 8
    Dernier message: 29/12/2002, 18h48

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