Accés base de données .... fetch assoc

Eléphanteau du PHP | 14 Messages

25 déc. 2005, 22:00

Bonjour ,


Voila , j'ai un petit problème pour accéder à plusieurs lignes sur ma base de donnée MySQL.

J'essaye de mettre au point une fonction qui traite les requetes SQL que je lui envois.

J'ai donc écris ceci dans BaseDD.php:
function SelectSQL($ReqSelect){	
	$this->Query=$resultatNum = mysql_query($ReqSelect)or die('Erreur SQL !<br><p>&nbsp;</p>'.$ReqSelect.'<br>'.mysql_error());
		return mysql_fetch_assoc($resultatNum);      
	}
J'instancie un objet Base dans ma classe principal (PageBase) et j'y écris une autre fonction censé passer le relais à l'objet crée .

Donc j'écris ceci dans PageBase.php:
function SelectSQLPage($Requete){
	return $this->Base->SelectSQL($Requete);
}
Pour mes requetes il me suffit de taper dans mes pages d'utilisations (index.php par exemple) :
$RequeteUtilisateur="Select * from dessin;";
$sqlSel=$PB->SelectSQLPage($RequeteUtilisateur);
Où $PB est un objet instancié de PageBase.php.
Ce qui me permet d'éviter de faire créer deux objets différents (un PageBase et un BaseDD) directement dans la page index...

Ce systême fonctionne convenablement lorsque je fais appel à une seule ligne du tableau mysql_fetch_assoc.
il me suffit de faire ceci pour accéder à l'info :
$Monchamp = $sqlSel['Monchamp'];
Mais je n'arrive pas à accéder à l'ensemble des informations lorsque le tableau fetch_assoc contient plusieurs ligne.

En fouinant sur le net , j'ai remarque qu'il fallait créer une boucle While et ainsi copier chaque ligne dans un tableau, comme ceci :
while ($article = mysql_fetch_assoc($SQLQuery)) {
        $articles[]= $article;
}
le problème est que je ne peux pas opérer de la même façon ici.
mon instruction fetch_assoc fait directement partie d'une méthode.

J'ai essayé de faire ceci :
$sqlSel=$PB->SelectSQLPage($RequeteUtilisateur);
while ($sqlNom){
				$articles[]= $sqlNom;
			}
Mais ça ne fonctionne pas ,je rentre dans une boucle infins à mon avis... il doit rechercher si la variable $sqlNom existe ... et non si le tableau fetch_assoc ne contient plus d'autre ligne.

Est-ce que quelqu'un pourrait m'expliquer comment faire pour accéder aux variables dans l'ensemble du tableau.

Ou simplement me proposer une solution alternative pour la mise en place de méthodes qui gére les requetes SQL.

Merci d'avance.
Dart

Mammouth du PHP | 1311 Messages

25 déc. 2005, 22:08

essaye de faire un foreach sur le resultat que tu obtient
perso je n'ai jamais reussi a trouver le pb ca ma gonfler assez vite
une solution de contournement assez l'aide est
	public function GetArrayAssoc()
	{
		if(self::num_rows()>0)
		{
			while($d=mysql_fetch_assoc($this->res))
			{
				$tableau[]=$d;
			}
		}
		else 
			$tableau=false;
		return $tableau;
	}
ou
si tu est en php5 cree un attribut resultat
ou
$this->resultat=mysql_fetch_assoc($this->res)
et le parcourir avec Iterator
mais bon si tu peut avoir php5.1 vaut mieux utiliser PDO