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 :

[POO] 1re utilisation d'une classe, résultat absent


Sujet :

Langage PHP

  1. #1
    Membre extrêmement actif Avatar de lodan
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    2 064
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 064
    Points : 682
    Points
    682
    Par défaut [POO] 1re utilisation d'une classe, résultat absent
    Bonjour,

    Je me mets au POO et après lecture, je débute par l'intégration de la class mysql ci-après :

    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
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    class MySql 
    {
    	var $dbHost = ""; // hostname of the MySQL server
    	var $dbName = ""; // logical database name on that server
    	var $dbUser = ""; // database authorized user
    	var $dbPass = ""; // user's password
    	var $linkId = 0; // last result of mysql_connect()
    	var $queryId = 0; // last result of mysql_query()
    	var $record = array(); // last record fetched
    	var $currentRow; // current row number
    	var $errorNumber = 0; // last error number
    	var $errorMessage = ""; // last error message
    	var $errorLocation = ""; // last error location
     
    	// constructor
    	function MySql($dbHost = "localhost", $dbName = "database", $dbUser = "inconnu", $dbPass = "unefois")
    	{
    		$this->dbHost = $dbHost;
    		$this->dbName = $dbName;
    		$this->dbUser = $dbUser;
    		$this->dbPass = $dbPass;
    	}
     
    	// error handler
    	function updateError($location)
    	{
    		$this->errorNumber = mysql_errno();
    		$this->errorMessage = mysql_error();
    		$this->errorLocation = $location;
    		if($this->errorNumber && SHOW_ERROR_MESSAGES)
    		{
    			echo('<br /><b>'.$this->errorLocation.'</b><br />'.$this->errorMessage);
    			flush();
    		}
    	}
     
    	function connect()
    	{
    		if($this->linkId == 0)
    		{
    			$this->linkId = mysql_connect( $this->dbHost, $this->dbUser, $this->dbPass );
    			if(!$this->linkId)
    			{
    				$this->updateError('DB::connect()<br />mysql_connect');
    				return false;
    			}
    		}
    		return true;
    	}
     
    	function query($queryString)
    	{
    		if(!$this->connect())
    		{
    			return false;
    		}
    		if(!mysql_select_db($this->dbName, $this->linkId))
    		{
    			$this->updateError('DB::connect()<br />mysql_select_db');
    			return false;
    		}
    		$this->queryId = mysql_query($queryString, $this->linkId);
    		$this->updateError('DB::query('.$queryString.')<br />mysql_query');
    		if(!$this->queryId)
    		{
    			return false;
    		}
    		$this->currentRow = 0;
    		return true;
    	}
     
    	// retourne tous les enregistrements dans un tableau
    	function queryAllRecords($queryString)
    	{
    		if(!$this->query($queryString))
    		{
    			return false;
    		}
    		$ret = array();
    		while($line = $this->nextRecord())
    		{
    			$ret[] = $line;
    		}
    		return $ret;
    	}
     
    	// retourne un enregistrement dans un tableau
    	function queryOneRecord($queryString)
    	{
    		if(!$this->query($queryString) || $this->numRows() != 1)
    		{
    			return false;
    		}
    		return $this->nextRecord();
    	}
     
    	// retourne l'enregistrement suivant dans un tableau
    	function nextRecord()
    	{
    		$this->record = mysql_fetch_array($this->queryId);
    		$this->updateError('DB::nextRecord()<br />mysql_fetch_array');
    		if(!$this->record || !is_array($this->record))
    		{
    			return false;
    		}
    		$this->currentRow++;
    		return $this->record;
    	}
     
    	// retourne le nombre d'enregistrement de la dernière requête
    	function numRows()
    	{
    		return mysql_num_rows($this->queryId);
    	}
    }
    J'ai enregistré cette class dans un dossier que j'ai appelé "class" et le fichier s'appel "class_mysql.php"

    Dans mon code source php ayant besoin de faire appel à cette class, j'ai fait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    require_once("class/class_mysql.php");
    Puis lors de l'utilisation de la classe ceci :

    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
    $queryString = "SELECT user_login, id_user 
    						FROM ttdk_users 
    						WHERE user_login = '".$user_login."'
    						AND '".$today."' BETWEEN (user_date_entree AND user_date_sortie)
    						AND id_trt BETWEEN 1 AND 4
    						OR user_login = '".$user_login."'
    						AND '".$today."'>=user_date_entree 
    						AND user_date_sortie=0
    						AND id_trt BETWEEN 1 AND 4";
     
    		$requete = new MySql;
    		$requete->queryAllRecords($queryString);
    		$num = new MySql;
    		$num->numRows();
    		$id_user=$requete["id_user"];
    N'ayant pas le résultat escompté et après avoir mis des echo et des print_r partout, je n'y voit pas plus clair.

    Jusque là est-ce comme cela que ce doit être écrit ?

    Merci d'avance

  2. #2
    Membre extrêmement actif Avatar de lodan
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    2 064
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 064
    Points : 682
    Points
    682
    Par défaut
    Bon, après quelques recherches supplémentaires

    A la place de :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $requete = new MySql;
    $requete->queryAllRecords($queryString);
    Il faut

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $requete = new MySql;
    $result=$requete->queryAllRecords($queryString);
    Le résultat est dans "result" pas dans "$requete"

    Voila ce que j'ai ecrit en final :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    // instantiate Mysql class
    		$MySql = new MySql;
    		$requete=$MySql->queryOneRecord($queryString);
    		$num=$MySql->numRows();
    Merci

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

Discussions similaires

  1. [POO] C'est quoi une classe en claire...???
    Par Spack dans le forum Langages de programmation
    Réponses: 5
    Dernier message: 26/01/2009, 16h53
  2. [POO] Utilisation d'une classe pdo perso
    Par artotal dans le forum Langage
    Réponses: 11
    Dernier message: 05/04/2008, 04h47
  3. Réponses: 4
    Dernier message: 25/07/2006, 17h30
  4. [POO] Utilisation d'une classe dans une classe !
    Par Okinou dans le forum Langage
    Réponses: 3
    Dernier message: 16/02/2006, 15h34
  5. Réponses: 2
    Dernier message: 18/05/2004, 15h12

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