Méthode d'un objet qui boucle à l'infini [Résolu]

Signaler
Messages postés
20
Date d'inscription
mercredi 13 octobre 2004
Statut
Membre
Dernière intervention
27 novembre 2009
-
Messages postés
20
Date d'inscription
mercredi 13 octobre 2004
Statut
Membre
Dernière intervention
27 novembre 2009
-
Bonjour,

Je précise que j'apprends l'objet, que dans cette exemple si je fais un if celà fonctionne très bien -> donc peut-être un futur code source, mais le soucis est sur la génération d'une liste de résultat.

Dans l'exemple en dessous, ça ne doit retourner que 2 résulats :

titre 1
titre 2

mais là j'ai titre 2titre 2titre 2titre 2titre 2titre 2titre 2titre 2
mais pas titre 1.


Voici un objet pour se connecter aux différentes bases de données
avec possibilité d'envoyer la requête avec une autre méthode et
d'obtenir le retour (actuellement qu'avec mysql)


Objet :


/*

*Objet permettant la connection a toutes les bases de donnees selon

*$Type_Db :

*

*

* 1 -> Mysql

* 2 -> MSSQL

* 3 -> Oracle

* 4 -> PostgreSQL

*/


class CConnectDB_Request

{


var $Server;

var $Port = '3306';

var $Login;

var $Pass;

var $Database;

var $Type_Db;

var $Connect;


function TypeDataBase()

{

switch($this->Type_Db)

{

//MySQL

case 1:

$this->Connect =
mysql_connect($this->Server.":".$this->Port,$this->Login,$this->Pass)
or die("Connexion au serveur MySQL impossible");


mysql_select_db($this->Database) or die("Connexion a la Base MySQL ".$this->Database." impossible");


break;


//SQL Serveur

case 2:
$this->Connect =
odbc_connect($this->Server,$this->Login,$this->Pass) or
die("Connexion au serveur MSSQL impossible");


break;


//Oracle Serveur

case 3:
$this->Connect =
oci_connect($this->Login,$this->Pass,$this->Database) or
die("Connexion au serveur Oracle impossible");


break;


//PostegreSQL Serveur

case 4:

$this->Connect = pg_connect("host=".$co_req->Server."
port=".$this->Port." dbname=".$this->Database."
user=".$this->Login." password=".$this->Pass."") or
die("Connexion au serveur PostegreSQL impossible");


break;

}

}


function RequestReturnType($Req,$TypeRetour="")

{


switch($this->Type_Db)

{

//MySQL

case 1:


$Result = mysql_query($Req) or die("Erreur dans la requete MySQL");


if($TypeRetour != "")

{

$function = "mysql_".$TypeRetour;


$Result = $function ($Result);

}

else

$Result = mysql_fetch_assoc($Result);


return $Result;


break;


//SQL Serveur

case 2:


odbc_commit($this->Connect);


$Result = odbc_exec($this->Connect,$Req) or die("Erreur dans la requete MSSQL");


return $Result;


break;


//Oracle Serveur

case 3:


//oci_commit($this->Connect);


$Req = oci_parse($this->Connect, $Req); //prepare la requete

$Result = oci_execute ($Req) or die("Erreur dans la requete Oracle");


return $Result;


break;


//PostegreSQL Serveur

case 4:


$Result = pg_query($this->Connect, $Req) or die("Erreur dans la requete PostegreSQL");


return $Result;


break;

}

}


function CloseDb()

{

mysql_close($this->Connect);

}


}


Mon appel avec un while qui boucle à l'infini :


$co_req = new CConnectDB_Request;


$co_req->Server = "127.0.0.1";

$co_req->Login = "root";

$co_req->Pass = "toto";

$co_req->Database = "toto";

$co_req->Type_Db = 1; //MySQL


$co_req->TypeDataBase();


$VerifConnect = "SELECT titre_article ";

$VerifConnect .= "FROM article A ";

$VerifConnect ."WHERE A.id_utilisateur 1 ";


while($ResVerifConnect = $co_req->RequestReturnType($VerifConnect,"fetch_object"))

{

echo $ResVerifConnect->titre_article;


}


Merci pour votre aide car là je ne vois pas du tout

2 réponses

Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
23
Hello,

tu refais un mysql_query() à chaque appel de ta méthode CConnectDB_Request::ResquestReturnType(). Donc tu changes de ressources systématiquement avec la même requête, donc tu boucles.
Messages postés
20
Date d'inscription
mercredi 13 octobre 2004
Statut
Membre
Dernière intervention
27 novembre 2009
1
Franchement merci, je sais que l'erreur est toute bête mais je l'avais vraiment pas vu.

Un grand merci