Méthode d'un objet qui boucle à l'infini

Résolu
cs_lord1366 Messages postés 20 Date d'inscription mercredi 13 octobre 2004 Statut Membre Dernière intervention 27 novembre 2009 - 17 mars 2009 à 17:46
cs_lord1366 Messages postés 20 Date d'inscription mercredi 13 octobre 2004 Statut Membre Dernière intervention 27 novembre 2009 - 17 mars 2009 à 23:20
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

malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
17 mars 2009 à 20:10
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.
3
cs_lord1366 Messages postés 20 Date d'inscription mercredi 13 octobre 2004 Statut Membre Dernière intervention 27 novembre 2009 1
17 mars 2009 à 23:20
Franchement merci, je sais que l'erreur est toute bête mais je l'avais vraiment pas vu.

Un grand merci
0
Rejoignez-nous