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 :

Problème avec une classe


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    288
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 288
    Par défaut Problème avec une classe
    Bonjour,

    J'essaye de créer un classe, celle-ci doit se connecter à une base de données puis afficher le contenu d'une table, seulement ma page je s'affiche pas, et pire, j'ai le droit à l'erreur HTTP 500 de IE.
    Je suis pas très fort en POO et j'aimerais avoir si possible vos remarques sur mon 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
     
    class Mycv{
     
    	private $dbhote = '',
    	private $dbbase = '',
    	private $dbuser = '',
    	private $dbpass = '',
    	private $dsn = '';	
    	private $dbh = '';
     
    	public function __construct($dbhote = 'localhost', $dbbase = 'test', $dbuser = 'root', $dbpass = '')
    	{
    		$this->dbhote = $Serveur;
    		$this->dbbase = $Bdd;
    		$this->dbuser = $Identifiant;
    		$this->dbpass = $Mdp;
    		$this->dsn = 'mysql:dbname=$this->dbbase;host=$this->dbhote';
    		$this->dbh = new PDO($this->dsn, $this->dbuser, $this->dbpass);
    	}
     
    	public function viewData(){
    		$sql = 'SELECT * FROM fic_opex_cla';
    		$res = $this->dbh->query($sql);
    		while($row = $res->fetch(PDO::FETCH_NUM)){
    			echo $row[1].'<br/>';
    		}
    	}
    }
     
    $test = new Mycv();
    $test->viewData();
    Merci d'avance.

  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
    Par défaut
    Les variables ne sont pas interpretées à l'interieur des guillemets simples.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $this->dsn = "mysql:dbname=$this->dbbase;host=$this->dbhote";
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    288
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 288
    Par défaut
    Cela me fait le mème problème en mettant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $this->dsn = 'mysql:dbname='.$this->dbbase.';host='.$this->dbhote;
    ou en mettant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $this->dsn = "mysql:dbname=$this->dbbase;host=$this->dbhote";
    Cela ne viendrait pas du fait que j'utilise les PDO à l'intérieur d'une classe ??? même si je ne pense pas.

  4. #4
    Membre émérite
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Juin 2003
    Messages
    910
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2003
    Messages : 910
    Par défaut
    Tu dois remplacer les virgules par des points-virgules ou enlever les private à partir de ta seconde variable de déclarée.

    De plus ton constructeur possède dans son corps des variables qui ne sont définies nulle part: $Serveur, $Bdd, $Identifiant, $Mdp.

    Et il n'y a aucune utilité à mettre des variables private si c'est pour qu'elle soit affectée par des variables qui peuvent changer de l'extérieur.

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    288
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 288
    Par défaut
    C'est bon, j'ai fais quelques petites corrections avec votre aide, et cela fonctionne, j'ai rajouté une variable et une fonction (en gras) qui doit calculer le nombre de résultat, mais cela n'affiche rien, mème pas d'erreur :

    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
    class Mycv{
    	public $dbhote = '';
    	public $dbbase = '';
    	public $dbuser = '';
    	public $dbpass = '';
    	public $dsn = '';	
    	public $dbh = '';
    	
    	public $nbres = 0;
    	
    	public function __construct($dbhote = 'localhost', $dbbase = 'test', $dbuser = 'root', $dbpass = '')
    	{
    		$this->dbhote = $dbhote;
    		$this->dbbase = $dbbase;
    		$this->dbuser = $dbuser;
    		$this->dbpass = $dbpass;
    		$this->dsn = "mysql:dbname=$this->dbbase;host=$this->dbhote";
    		$this->dbh = new PDO($this->dsn, $this->dbuser, $this->dbpass);
    	}
    	
    	public function viewData(){
    		$this->sql = 'SELECT * FROM fic_opex_cla';
    		$this->res = $this->dbh->query($this->sql);
    		while($this->row = $this->res->fetch(PDO::FETCH_NUM)){
    			echo $this->row[1].'<br/>';
    			++$this->nbres;
    		}
    	}
    	
    	public function nombreRes(){
    		return $this->nbres;
    	} 
    }
    
    $test = new Mycv();
    $test->viewData();
    $test->nombreRes();

  6. #6
    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
    Par défaut
    Ta fonction en gras n'a pas d'echo.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

Discussions similaires

  1. problème avec une classe générique
    Par bard123 dans le forum Langage
    Réponses: 4
    Dernier message: 27/06/2008, 12h09
  2. [POO] Problème avec une classe + requêtes sql
    Par mithrendil dans le forum Langage
    Réponses: 2
    Dernier message: 30/04/2007, 09h27
  3. Problème avec une classe générique
    Par Core8 dans le forum C++
    Réponses: 3
    Dernier message: 19/03/2007, 04h18
  4. Problème avec une classe ActionScript
    Par Patryk403 dans le forum Flash
    Réponses: 3
    Dernier message: 06/08/2006, 13h42
  5. Problème avec une classe... "without object"
    Par z980x dans le forum C++
    Réponses: 8
    Dernier message: 27/04/2006, 17h00

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