Problème d'affichage avec mon MVC

Eléphanteau du PHP | 35 Messages

01 juin 2006, 15:36

Bonjour à tous,

Alors je suis étudiante, et je dois faire un site en intranet avec du PHP5 Objet et du Mysql5 tout ca biensur en MVC.

Voila j'ai un soucis au moment de la récupération du tableau (résultat de la requête) qui contient des objets

Je vous mets le code avec la requête
<?
 require_once "connectdb.php";
   class ressourceDAO2 {
   	
   		/**
 	 * Méthode affichant le résultat de la recherche demandée 
 	 */
 	function rechercherRessource( $titre, $auteur, $typeRessource )
 	{
 		 $a = new connectDb("root","","bookinweb","localhost");
 		 
 		$requeteRechercheRessource = "SELECT ressource.TitreRessource, ressource.AuteurRessource, " .
 								     "ressource.IdTypeRessource, typeressource.NomTypeRessource, " .
 								     "typeressource.IdTypeRessource FROM ressource INNER JOIN typeressource ".
 								     "ON ressource.IdTypeRessource = typeressource.IdTypeRessource " .
 								     "WHERE  ressource.TitreRessource LIKE \"%". $titre ."%\"  ".
 								     "AND  ressource.AuteurRessource LIKE \"%". $auteur ."%\"  " .
 								     "AND typeressource.NomTypeRessource LIKE \"%". $typeRessource ."%\" ".
 								     "ORDER BY TitreRessource;";
 		$resultat=mysql_query($requeteRechercheRessource) or die('Erreur SQL!'.$requeteRechercheRessource.'<br />'.mysql_error()); 
 		
 		$tableau = array();
 		$i = 0;
 										     
 		 while ($ligne = mysql_fetch_array($resultat, MYSQL_ASSOC))
 		{
				$tableau[$i] = $ligne;
				$i++;
		}
 mysql_close();
 							     
return $tableau;
 	}
 } 
?>
et voila par la suite le fichier qui me sert pour l'appel et pour le moment l'affichage
<?
 require_once "ressourceDAO2.php";
 class pageControlerUser {
 	
 	function consulterRessources() {
 		
 	}
 	
 	function consulterRessourcesTri() {
 		
 	}
 	
 	function rechercherRessources( $titre, $auteur, $typeRessource) 
 	{
 		
 		ressourceDAO2::rechercherRessource($titre, $auteur, $typeRessource);
 			
 	}
 }
 
 $toto = new pageControlerUser();
 
 $toto->rechercherRessources("","","");
?>
J'ai essayé de faire un foreach, un for contenant un array_values mais rien ne marche.

Pourriez-vous m'aider s'il vous plait.

Merci par avance
[-o< :cry:

Eléphanteau du PHP | 37 Messages

01 juin 2006, 15:39

mais tu doit en faire quoi de ce tableau?
l'afficher l'enregistrer(sous quel format alors)

Mammouth du PHP | 1311 Messages

01 juin 2006, 15:45

salut

tout d'abord si tu est en php5 regarde de coté de pdo, en tout cas revois ton objet d'acces au données il me parait suspect (meme tres suspect)

sinon fait un
unction rechercherRessources( $titre, $auteur, $typeRessource)
    {
        
       echo var_dump( ressourceDAO2::rechercherRessource($titre, $auteur, $typeRessource));
            
    } 

Eléphanteau du PHP | 35 Messages

01 juin 2006, 20:51

mais tu doit en faire quoi de ce tableau?
l'afficher l'enregistrer(sous quel format alors)
Je souhaite justement l'afficher en utilisant le $tableau de l'autre fichier et c la que je coince

Eléphanteau du PHP | 35 Messages

01 juin 2006, 22:04

salut

tout d'abord si tu est en php5 regarde de coté de pdo, en tout cas revois ton objet d'acces au données il me parait suspect (meme tres suspect)

sinon fait un
unction rechercherRessources( $titre, $auteur, $typeRessource)
    {
        
       echo var_dump( ressourceDAO2::rechercherRessource($titre, $auteur, $typeRessource));
            
    } 
Coucou,

Si je fais un

echo var_dump( ressourceDAO2::rechercherRessource($titre, $auteur, $typeRessource));

Voila ce qu'il me renvoi

array(3) { [0]=> array(4) { ["TitreRessource"]=> string(7) "Anglais" ["AuteurRessource"]=> string(4) "tutu" ["IdTypeRessource"]=> string(1) "3" ["NomTypeRessource"]=> string(3) "DVD" } [1]=> array(4) { ["TitreRessource"]=> string(5) "PHP 5" ["AuteurRessource"]=> string(4) "toto" ["IdTypeRessource"]=> string(1) "1" ["NomTypeRessource"]=> string(5) "Livre" } [2]=> array(4) { ["TitreRessource"]=> string(4) "toto" ["AuteurRessource"]=> string(4) "Toto" ["IdTypeRessource"]=> string(1) "1" ["NomTypeRessource"]=> string(5) "Livre" } } 

dc mon accès é bon mais l'affichage du tableau me bloque

Mammouth du PHP | 19672 Messages

01 juin 2006, 22:30

Petit truc : au lieu de :
echo var_dump( ressourceDAO2::rechercherRessource($titre, $auteur, $typeRessource));
fais plutôt :
<pre>
<?php
var_dump( ressourceDAO2::rechercherRessource($titre, $auteur, $typeRessource));
?>
</pre>
Le "echo" est de trop. ça produira l'affichage comme ceci :

Code : Tout sélectionner

array(3) { [0]=> array(4) { ["TitreRessource"]=> string(7) "Anglais" ["AuteurRessource"]=> string(4) "tutu" ["IdTypeRessource"]=> string(1) "3" ["NomTypeRessource"]=> string(3) "DVD" } [1]=> array(4) { ["TitreRessource"]=> string(5) "PHP 5" ["AuteurRessource"]=> string(4) "toto" ["IdTypeRessource"]=> string(1) "1" ["NomTypeRessource"]=> string(5) "Livre" } [2]=> array(4) { ["TitreRessource"]=> string(4) "toto" ["AuteurRessource"]=> string(4) "Toto" ["IdTypeRessource"]=> string(1) "1" ["NomTypeRessource"]=> string(5) "Livre" } }
C'est beaucoup plus visuel : tu as un tableau à deux dimensions : la première dimension contient un nombre variable d'éléments (ici trois) qui sont eux-même des tableaux contenant chacun quatre éléments.

L'affichage de ce type de structure se fait dans des boucles imbriquées, ce n'est pas particulièrment sorcier : où est-ce que tu bloques ?
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Sertt
Invité n'ayant pas de compte PHPfrance

19 juin 2006, 23:40

$tableau = array();
        $i = 0;
                                             
         while ($ligne = mysql_fetch_array($resultat, MYSQL_ASSOC))
        {
                $tableau[$i] = $ligne;
                $i++;
        } 
Je te déconseille de crée un deuxième tableau. En effet, je suppose que par la suite tu fais un
foreach($objet->rechercherRessource(....) as $cle => $valeur)
{...}
Ce qui veut dire que tu parcours 2 fois les mêmes données (4 fois si tu utilises fetch_array).

J'avais déjà testé et je trouvais que cela ralentissait le script de manière considérable (au point que j'avais décidé de retourner la ressource Sql... mais bon, ce n'est plus du MVC après....^^)

Dans un des scripts d'exemple que j'ai lu récemment (je suis aussi en train de me documenter su le MVC), j'ai vu l'utilisation de ce code-ci
 return key_array_change_case(mysql_fetch_array($sql))
Je précise que je n'ai pas testé.

Abon entendeur...