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 :

Passer de PHP a POO [PHP 5.0]


Sujet :

Langage PHP

  1. #1
    Membre habitué
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    429
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2013
    Messages : 429
    Points : 135
    Points
    135
    Par défaut Passer de PHP a POO
    Bonjour a tout le monde, avant toutes choses, meilleurs voeux a vous tous que cette année soit riche en code et en prise de tête liée aux virgules

    Alors voila j'essaie d'apprendre la programmation orienté objet je suis plusieurs tutoriels programmation POO la dessus notamment ceux de dev.com.
    J'ai déjà fais tout un projet en PHP et souhaiterais le réécrire en POO mais j'avoue ne pas bien comprendre comment faire j'essaie de faire plusieurs exo mais ma foi, le déclic n'a toujours pas lieu

    Par exemple ce bout de 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
    29
    30
    31
    32
    33
    <?php
     
    //message d'erreur si l'acces n'est pas autorisé
    if (isset($_GET['accesrefu'])){
    echo '<script language="Javascript"> alert ("'.htmlentities(urldecode($_GET['accesrefu'])).'" ) </script>';
    }
     
    //Connexion a la base de donnée
    connectMaBase();
     
    // on crée la requête SQL 
    $sql = 'SELECT * FROM technicien'; 
     
    // on envoie la requête 
    $req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error()); 
     
    ?>
     
     
    <form method="post" name="nom_acc2" action="log_tech.php">
    <?php
     
    // on fait une boucle qui va faire un tour pour chaque enregistrement 
    while($data = mysql_fetch_array($req)) 
        { 
        // on affiche les informations de l'enregistrement en cours 
    echo '<input type="submit" class="btn btn-default btn-lg btn-block" name="nom_acc" value="'.$data['Nom'].'" >';
    	}
    // on ferme la connexion à mysql 
    mysql_close(); 
     
    ?>
    </form>
    Comment faire pour le transformer en objet je ne vois pas du tout comment procéder ni par ou commencer ..
    Si quelqu'un a un lien avec des exercices qui se rapprocheraient plus de ce type de code plutôt de que créer des personnages je suis preneuse ..
    Merci de votre lecture et de votre patiente
    CDLT

  2. #2
    Membre actif Avatar de stephanegib2
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2011
    Messages
    152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2011
    Messages : 152
    Points : 233
    Points
    233
    Par défaut
    Ceci est un exemple parmis d'autres

    gestion de la base
    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
    class MaBase
    {
     
    public function __construct()
    {
    $this->connect();
    }
     
    /**
    * connexion a la base de donnée
    **/
    public function connect()
    {
    // code de connexion
    }
     
    /**
    * fermeture de la connexion à la base de donnée
    **/
    public function stopConnect()
    {
    // code de fermeture de connexion
    }
     
    }
    ?>
    gestion des techniciens

    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
     
    <?php
    class Technicien
    {
     
    /**
    * Sélectionnes des techniciens par id
    * @param array $id tableau d'id
    **/
    public function doSelectById(Array $id)
    {
    // code du select
    }
     
    /**
    * Sélectionnes des techniciens
    * @return array liste de technicien
    **/
    public function doSelect()
    {
    // code du select
    }
     
    public function doUpdate()
    {
    // code update
    }
     
    }
    ?>
    gestion des requetes http

    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
     
    <?php
    class Request
    {
     
    private $parameters = array();
     
    public function __construct()
    {
    // code qui récupère toutes les informations sur la requêtes
    $this->getParameters();
    }
     
    /**
    * Récupere tous les paramètres passés en GET 
    **/
    private function getParameters()
    {
    foreach ($_GET as $key=> $value) 
    {   
    if (!empty($value)) 
    {
    $this->parameters[$key] = htmlentities(urldecode($value));
    }
    }
    }
     
    /**
    * Retourne un paramètre
    * @param string $key nom du paramètre
    * @return string
    **/
    public function getParameter($key)
    {
    return (in_array($key, $this->parameters)) ? $this->parameters[$key] : null;
    }
     
    /**
    * Retourne un paramètre
    * @param string $key nom du paramètre
    * @return string
    **/
    public function hasParameter($key)
    {
    return (in_array($key, $this->parameters));
    }
     
    }
    ?>

    fichier index

    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
     
    <?php
    $request = new Request();
     
    if $request->hasParameter('accesrefu')
      echo '<script language="Javascript"> alert ("'.$request->getParameter('accesrefu').'" ) </script>';
     
    $base = new MaBase();
    $technicien = new technicien();
    $technicienList = $technicien->doSelect();
     
    ?>
    <form method="post" name="nom_acc2" action="log_tech.php">
    <?php
     
    // on fait une boucle qui va faire un tour pour chaque enregistrement 
    foreach ($technicienList  as $onetechnicien)
        { 
        // on affiche les informations de l'enregistrement en cours 
    echo '<input type="submit" class="btn btn-default btn-lg btn-block" name="nom_acc" value="'.$onetechnicien->getNom().'" >';
    	}
    // on ferme la connexion à mysql 
    $base->stopConnect(); 
     
    ?>
    </form>

  3. #3
    Membre habitué
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    429
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2013
    Messages : 429
    Points : 135
    Points
    135
    Par défaut
    Merci pour cette réponse rapide !!
    Donc tout ce qui est bouton et code html on n'y touche pas ?

    Les requêtes et les conditions deviennent des méthodes ?

  4. #4
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 374
    Points : 5 734
    Points
    5 734
    Billets dans le blog
    1
    Par défaut
    Si je n'ai pas de lien pour des exercices à fournir, je vois que pour l'accès à MySQL, tu utilises les fonctions _mysql ; intéresse-toi à la classe PDO : c'est un moyen d'accéder à MySQL en POO : comprendre PDO.

    Et voici un code de connexion avec PDO :

    MyPdo.php :
    Code php : 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
    <?php
     //la classe MyPdo hérite de la classe PDO (extends)
    class MyPdo extends PDO {
    /* on privilégie les var de classe (statiques) aux constantes : ainsi modifiables par programme */
    	static public $DB_NAME = "---";
    	static public $HOST = "---";
    	static public $USER = "---";
    	static public $PASS = "---";
     
     
     
    // le constructeur de MyPdo appelle le constructeur de PDO en lui passant ses paramètres	
    	function __construct() {
    	$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
     
    	parent::__construct('mysql:host=' . MyPdo::$HOST . ';dbname=' . MyPdo::$DB_NAME, MyPdo::$USER, MyPdo::$PASS, $pdo_options);
    	}
     
    }
    ?>

    code principal :
    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 'MyPdo.php';
     
    			try{
    				$bdd = new MyPdo();
                                                       ...	
     
     
     
    				//efface la variable (pour se déconnecter)
    				$bdd = NULL;
     
    				}
     
    			catch(PDOException $e) {
        echo 'ERREUR PDO dans ' . $e->getFile() . ' L.' . $e->getLine() . ' : ' . $e->getMessage();
    }
    		?>
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  5. #5
    Membre habitué
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    429
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2013
    Messages : 429
    Points : 135
    Points
    135
    Par défaut
    Seigneur dieu tout puissant ..
    Mais qu'est ce donc que cela !!
    Je vais regarder les doc sur PDO et si je ne comprend pas quelque chose je reposte
    Merci de ta reponse Laurent

  6. #6
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 374
    Points : 5 734
    Points
    5 734
    Billets dans le blog
    1
    Par défaut
    Je ne suis pas un expert de la POO (ce code n'est pas de moi), mais je connais suffisamment pour comprendre ce qui est fait (je connais notamment les notions de classe, propriété, méthode, constructeur/destructeur ou héritage...)


    Je te redonne le code principal avec quelques explications placées en commentaire :

    Code php : 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
    	<?php
    		include 'MyPdo.php'; /* en POO, on définit les classes (ce sont des types où les variables sont 
    nommées "propriétés" (ou "attributs") et les fonctions "méthodes"), le tout étant en général placé dans un fichier externe à includer */ 
    			try{
    				$bdd = new MyPdo();// l'instantiation de la classe MyPdo crée l'objet $bdd                                                   	
     
     
     
    				//efface la variable (pour se déconnecter)
    				$bdd = NULL; //équivalent à mysql_close() 
    				}
     
    			catch(PDOException $e) {
        echo 'ERREUR PDO dans ' . $e->getFile() . ' L.' . $e->getLine() . ' : ' . $e->getMessage();
    }
    		?>
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  7. #7
    Membre habitué
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    429
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2013
    Messages : 429
    Points : 135
    Points
    135
    Par défaut
    Bonjour tout le monde
    Donc tout ce qui est bouton et affichage s’écrit normalement ? C'est uniquement les requêtes etc qui s’écrivent en POO?

    Est ce que ceci est juste pour se connecter a une base de donnée ? :
    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
    <?php
    class MaBase
    {
     
    public function __construct()
    {
    $this->connect();
    }
     
    /**
    * connexion a la base de donnée
    **/
    public function connect()
    {
    connectMaBase();
    }
     
    /**
    * fermeture de la connexion à la base de donnée
    **/
    public function stopConnect()
    {
    mysql_close();
    }
     
    }
    ?>
    PS : connectMaBase() est deja une fonction ou la connexion s'établie .

    -------------------------------------

    POur ce 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
    <?php
    $request = new Request();
     
    if $request->hasParameter('accesrefu')
      echo '<script language="Javascript"> alert ("'.$request->getParameter('accesrefu').'" ) </script>';
     
    $base = new MaBase();
    $technicien = new technicien();
    $technicienList = $technicien->doSelect();
     
    ?>
    <form method="post" name="nom_acc2" action="log_tech.php">
    <?php
     
    // on fait une boucle qui va faire un tour pour chaque enregistrement 
    foreach ($technicienList  as $onetechnicien)
        { 
        // on affiche les informations de l'enregistrement en cours 
    echo '<input type="submit" class="btn btn-default btn-lg btn-block" name="nom_acc" value="'.$onetechnicien->getNom().'" >';
    	}
    // on ferme la connexion à mysql 
    $base->stopConnect(); 
     
    ?>
    </form>
    Les methodes doSelect() et stopConnect(), ensuite les differentes variables et l'objet Request, où sont ils créés ? Dans un fichier nom.php a part ?
    ---------------------

    Alors voila j'ai essayer quelque chose:
    Dans mon fichiers fonctions.php j'ai rajouter :
    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
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    <?php
    //Connexion BDD
    public function connect()
    {
        $base = mysql_connect ('localhost', 'root', 'lcesa');  
        mysql_select_db ('lcesa', $base) ;
    }
     
    //Deconnexion BDD
    public function stopConnect()
    {
    	mysql_close();
    }
     
    // --------------------------------------Gestion des techniciens-------------------------------
     
    class Technicien
    {
    	public function doSelectById(Array $id)
    	{
    		// code select
    	}
     
    	public function doSelect()
    	{
    		$sql = 'SELECT * FROM technicien'; 
    		$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error()); 
    	}
     
    	public function doUpdate()
    	{
    		// code update
    	}
     
    }
     
    //----------------------------------------Gestion des requetes--------------------------
     
    class Request
    {
     
    private $parameters = array();
     
    public function __construct()
    {
    // code qui récupère toutes les informations sur la requêtes
    $this->getParameters();
    }
     
    /**
    * Récupere tous les paramètres passés en GET 
    **/
    private function getParameters()
    {
    foreach ($_GET as $key=> $value) 
    {   
    if (!empty($value)) 
    {
    $this->parameters[$key] = htmlentities(urldecode($value));
    }
    }
    }
     
    /**
    * Retourne un paramètre
    * @param string $key nom du paramètre
    * @return string
    **/
    public function getParameter($key)
    {
    return (in_array($key, $this->parameters)) ? $this->parameters[$key] : null;
    }
     
    /**
    * Retourne un paramètre
    * @param string $key nom du paramètre
    * @return string
    **/
    public function hasParameter($key)
    {
    return (in_array($key, $this->parameters));
    }
     
    }
    ?>
    Et j'ai changer mon code de index.php avec ce que stephane m'a donné en essayant tant bien que mal de comprendre :
    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
    <?php
    $request = new Request();
     
    if ($request->hasParameter('accesrefu')) {
      echo '<script language="Javascript"> alert ("'.$request->getParameter('accesrefu').'" ) </script>';
    }
     
    $base = new MaBase();
    $technicien = new technicien();
    $technicienList = $technicien->doSelect();
     
    ?>
    <form method="post" name="nom_acc2" action="log_tech.php">
    <?php
     
    // on fait une boucle qui va faire un tour pour chaque enregistrement 
    foreach ($technicienList  as $onetechnicien)
        { 
        // on affiche les informations de l'enregistrement en cours 
    echo '<input type="submit" class="btn btn-default btn-lg btn-block" name="nom_acc" value="'.$onetechnicien->getNom().'" >';
    	}
    // on ferme la connexion à mysql 
    $base->stopConnect(); 
     
    ?>
    </form>
    Mais lorsque je veux lancer le site il me met ce message d'erreur :
    Warning: Invalid argument supplied for foreach() in C:\wamp\www\LCEsa\index.php on line 32
    Voici la ligne 3 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    foreach ($technicienList  as $onetechnicien)
    Je ne comprend pas ...

  8. #8
    Membre actif Avatar de stephanegib2
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2011
    Messages
    152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2011
    Messages : 152
    Points : 233
    Points
    233
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    /**
    * Sélectionnes des techniciens
    * @return array liste de technicien
    **/
    public function doSelect()
    doSelect doit retourner un tableau (même si il est vide). Renseigne toi sur la PDO.
    @voir message de laurentSc et entre autres http://php.net/manual/fr/book.pdo.php

  9. #9
    Membre habitué
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    429
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2013
    Messages : 429
    Points : 135
    Points
    135
    Par défaut
    Mais doSelect() ne concerne pas uniquement la requête de select a envoyer a la BDD ?
    Et ensuite on met dans la gestion de requête que tu m'as donné tout a l'heure le tableau non ?

    Je vais y arriver a dompter la bête ^^.

    Merci de votre aide en tout cas messieurs

    -------------

    Est ce bien cela que je dois utiliser avec PDO pour mettre les résultats de la requête dans un tableau ? : PDOStatement::fetchAll

    Voici la fonction doSelect que j'ai testé mais qui ne fonctionne pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    	public function doSelect()
    	{
    		$sql = 'SELECT * FROM technicien'; 
    		$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error()); 
    		$result= $sql-> fetchAll();
    	}
    Message d'erreur :
    SCREAM: Error suppression ignored for
    ( ! ) Fatal error: Call to a member function fetchAll() on a non-object in C:\wamp\www\LCEsa\fonctions.php on line 35
    ligne 35 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $result= $sql-> fetchAll();

  10. #10
    Membre actif Avatar de stephanegib2
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2011
    Messages
    152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2011
    Messages : 152
    Points : 233
    Points
    233
    Par défaut
    Cela donne quelque chose comme sa :

    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
     
    <?php
    class MaBase
    {
     
    public $conn = NULL;
     
    public function __construct($hostname, $dbname, $username, $pw)
    {
    $this->connect($hostname, $dbname, $username, $pw);
    }
     
    /**
    * connexion a la base de donnée
    **/
    public function connect($hostname, $dbname, $username, $pw)
    {
    try {
    $this->conn = new PDO ("mssql:host=$hostname;dbname=$dbname","$username","$pw");
    }
    catch( PDOException $Exception ) {
        echo $Exception->getMessage();
    }
    }
     
    /**
    * fermeture de la connexion à la base de donnée
    **/
    public function stopConnect()
    {
    $this->conn = NULL;
    }
     
    }
    ?>
    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
     
    <?php 
    class Technicien
    {
    	public function doSelectById(Array $id)
    	{
    		// code select
    	}
     
    	public function doSelect(PDO $conn)
    	{
    		$sql = $conn->prepare("SELECT * FROM technicien");
                    $sql->execute();
                    return $sql->fetchAll();
    	}
     
    	public function doUpdate()
    	{
    		// code update
    	}
     
    }
    ?>

  11. #11
    Membre habitué
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    429
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2013
    Messages : 429
    Points : 135
    Points
    135
    Par défaut
    C'est quoi ce conn ?

    Bon bah j'étais pas très loin

    -------

    Bon je ne comprend pas il me dit que les variable avec $hostname etc sont indéfinies pourtant je les ai bien renseignées avec mon mot de passe etc bref les valeurs adéquates ...

    Pourquoi ne veut-il donc pas se connecter bon sang !

    Je les ai mises en private ca fonctionnait pas du coup pourquoi pas public bah ca fonctionne pas non plus

  12. #12
    Membre actif Avatar de stephanegib2
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2011
    Messages
    152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2011
    Messages : 152
    Points : 233
    Points
    233
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $technicienList = $technicien->doSelect($base);
    $conn est la connexion en PDO.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    public function doSelect(PDO $conn)
    J'ai défini son type (PDO).

  13. #13
    Membre habitué
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    429
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2013
    Messages : 429
    Points : 135
    Points
    135
    Par défaut
    Alors j'ai rajouter ceci dans la classe maBase :
    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
    class MaBase
    {
     
    private $conn = NULL;
     
    public $hostname="localhost";
    public $dbname="lcesa";
    public $username="root";
    public $pw="lcesa"; 
     
    public function __construct($hostname, $dbname, $username, $pw)
    {
    $this->connect($hostname, $dbname, $username, $pw);
    }
     
    /**
    * connexion a la base de donnée
    **/
    public function connect($hostname, $dbname, $username, $pw)
    {
    $this->conn = new PDO ("mssql:host=$hostname;dbname=$dbname","$username","$pw");
    }
     
    /**
    * fermeture de la connexion à la base de donnée
    **/
    public function stopConnect()
    {
    $this->conn = NULL;
    }
     
    }
    Et voici la fonction doSelect:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    public function doSelect(PDO $conn)
    	{
    		$sql = $conn->prepare("SELECT * FROM technicien");
            $sql->execute();
            return $sql->fetchAll();
    	}
    J'ai une dizaine de message d'erreurs me disant :
    SCREAM: Error suppression ignored for
    ou
    Warning: Missing argument 1 for MaBase::__construct(), called in C:\wamp\www\LCEsa\index.php on line 22 and defined in C:\wamp\www\LCEsa\fonctions.php on line 12
    ou encore
    Notice: Undefined variable: hostname in C:\wamp\www\LCEsa\fonctions.php on line 14
    héhé c'est pas fini !
    Fatal error: Uncaught exception 'PDOException' with message 'could not find driver' in C:\wamp\www\LCEsa\fonctions.php on line 22
    toujours pas !
    PDOException: could not find driver in C:\wamp\www\LCEsa\fonctions.php on line 22
    voila fini
    Alors j'ai regardé un peu tout ca donc il me dit que les variables $username,$pw etc sont indefinies dans les lignes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public function __construct($hostname, $dbname, $username, $pw)
    $this->connect($hostname, $dbname, $username, $pw);
    public function connect($hostname, $dbname, $username, $pw)
    $this->conn = new PDO ("mssql:host=$hostname;dbname=$dbname","$username","$pw");
    Du coup j'ai donc essayé de les rajouté comme ci dessus en les initialisant.
    Ensuite il me dit que j'ai une erreur dans el constructeur, puis une erreur avec un PDO exception, je me suis renseigné sur les documents, PDO::ERRMODE_EXCEPTION est un type d'erreur de PDO.

    Voila je bloque une foi de plus je continue mes recherches merci encore pour ton aide précieuse Stéphane !

  14. #14
    Membre actif Avatar de stephanegib2
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2011
    Messages
    152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2011
    Messages : 152
    Points : 233
    Points
    233
    Par défaut
    Montre comment tu instancie MaBase et comment tu définie les paramètres.

  15. #15
    Membre habitué
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    429
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2013
    Messages : 429
    Points : 135
    Points
    135
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    private $conn = NULL;
     
    public $hostname="localhost";
    public $dbname="lcesa";
    public $username="root";
    public $pw="lcesa";

  16. #16
    Membre actif Avatar de stephanegib2
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2011
    Messages
    152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2011
    Messages : 152
    Points : 233
    Points
    233
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    $hostname="localhost";
    $dbname="lcesa";
    $username="root";
    $pw="lcesa";
     
    $base = new MaBase($hostname, $dbname, $username, $pw);
    Renseigne toi sur la POO aussi.

  17. #17
    Membre habitué
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    429
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2013
    Messages : 429
    Points : 135
    Points
    135
    Par défaut
    Oui je suis en même temps les tuto sur la POO c'est pas évident j'dois avouer :/
    Et $conn on le met aussi alors du coup ?

    J'ai toujours les même messages d'erreur

    dont une :
    Fatal error: Call to a member function prepare() on a non-object in C:\wamp\www\LCEsa\fonctions.php on line 51
    ligne 51 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sql = $conn->prepare("SELECT * FROM technicien");

  18. #18
    Membre actif Avatar de stephanegib2
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2011
    Messages
    152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2011
    Messages : 152
    Points : 233
    Points
    233
    Par défaut
    Oui. je me suis un peu trompé.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $technicienList = $technicien->doSelect($base->conn);
    http://php.net/manual/fr/functions.arguments.php

  19. #19
    Membre habitué
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    429
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2013
    Messages : 429
    Points : 135
    Points
    135
    Par défaut
    Cette programmation orientée objet va me rendre chèvre je crois ^^

    Voici le code de fonction.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
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    <?php
     
    //classe MaBase, se connecter et se deconnecter de la BDD
    class MaBase
    {
     
    //Attributs 
    public $conn = NULL;
    public $hostname="localhost";
    public $dbname="lcesa";
    public $username="root";
    public $pw="lcesa";
     
    //---------------Méthodes---------------
     
    	//Constructeur
    	public function __construct($hostname, $dbname, $username, $pw)
    	{
    		$this->connect($hostname, $dbname, $username, $pw);
    	}
     
    	//Ouverture BDD
    	public function connect($hostname, $dbname, $username, $pw)
    	{
    		try {
    				$this->conn = new PDO ("mssql:host=$hostname;dbname=$dbname","$username","$pw");
    		}
    		catch( PDOException $Exception ) {
    				echo $Exception->getMessage();
    		}
    	}
     
    	//Fermeture BDD
    	public function stopConnect()
    	{
    		$this->conn = NULL;
    	}
     
    }
     
    // --------------------------------------Gestion des techniciens-------------------------------
     
    class Technicien
    {
    	public function doSelectById(Array $id)
    	{
    		// code select
    	}
     
    	public function doSelect()
    	{
    		$sql = $conn->prepare("SELECT * FROM technicien");
            $sql->execute();
            return $sql->fetchAll();
    	}
     
    	public function doUpdate()
    	{
    		// code update
    	}
     
    }
    ?>
    il me retourne toujours les mêmes erreurs pourtant elles sont bien la mes variables non ?

    Pardon j'ai oublié de mettre le code de index.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
    $request = new Request();
     
    if ($request->hasParameter('accesrefu')) {
      echo '<script language="Javascript"> alert ("'.$request->getParameter('accesrefu').'" ) </script>';
    }
     
    $base = new MaBase($hostname, $dbname, $username, $pw);
    $technicien = new technicien();
    $technicienList = $technicien->doSelect($base->conn);
     
    //On ouvre la connexion a la BDD 
    $base->connect();
     
    ?>
    <form method="post" name="nom_acc2" action="log_tech.php">
    <?php
     
    // on fait une boucle qui va faire un tour pour chaque enregistrement 
    foreach ($technicienList  as $onetechnicien)
        { 
        // on affiche les informations de l'enregistrement en cours 
    echo '<input type="submit" class="btn btn-default btn-lg btn-block" name="nom_acc" value="'.$onetechnicien->getNom().'" >';
    	}
    // on ferme la connexion à mysql 
    $base->stopConnect(); 
     
    ?>
    </form>

  20. #20
    Membre actif Avatar de stephanegib2
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2011
    Messages
    152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2011
    Messages : 152
    Points : 233
    Points
    233
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $base = new MaBase($hostname, $dbname, $username, $pw);
    les variables passées en paramètres correspondent à quoi ? Elles sont déclarées où ?

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 4 1234 DernièreDernière

Discussions similaires

  1. [POO] Livre sur PHP la POO et UML
    Par Sourrisseau dans le forum Livres
    Réponses: 2
    Dernier message: 11/04/2008, 18h46
  2. Réponses: 11
    Dernier message: 23/11/2007, 10h31
  3. [POO] bouquin php et poo
    Par leblaireau dans le forum Langage
    Réponses: 1
    Dernier message: 13/09/2006, 21h40
  4. Passer de PHP a Word ou PDF
    Par guillaumeIOB dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 06/09/2006, 11h26
  5. Réponses: 2
    Dernier message: 06/01/2005, 21h09

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