Méthode d'un objet qui boucle
Bonjour,
Voici un d'objet pour ce 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 :
Code:
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 116 117 118 119
|
/*
*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 :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
|
$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 * ";
$VerifConnect .= "FROM utilisateurs U ";
$VerifConnect .= "WHERE U.login_utilisateur = '".$login."' AND U.pass_utilisateur = '".$pass."' ";
while($ResVerifConnect = $co_req->RequestReturnType($VerifConnect,"fetch_object"))
{
echo $ResVerifConnect->id_utilisateur;
} |
Merci pour votre aide
Merci pour votre aide mais
Voilà je me suis dis ok avec une identification simple ça fonctionne.
Donc avec un if cela fonctionne j'ai un seul résultat dans le cas d'une identification.
Mais disons à présent que je veux...lister tous les articles de cet utilisateur disons 100
alors la je dois faire un while.
$ListArticles= "Select * from artciles where id_util = 1"
$co_req->RequestReturnType($ListArticles,"fetch_object")
cette méthode fait :
$Result = mysql_query($ListArticles)
puis
mysql_fetch_object($Result)
donc
$co_req->RequestReturnType contient (mysql_fetch_object($Result))
et je pensais que faire
while($data=$co_req->RequestReturnType($ListArticles,"fetch_object"))
était identique à
while($data=mysql_fetch_object($Result))
je continue de regarder et je vous dis mais si quelqu'un peut m'aider ce serait coool!
:aie: