IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

[Tableaux] Faire passer les résultats d'une requete d'une page à l'autre


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    146
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 146
    Points : 52
    Points
    52
    Par défaut [Tableaux] Faire passer les résultats d'une requete d'une page à l'autre
    Bonjour,

    je vous fait part d'un problème qui, je pense, sera résolu rapidement mais qui me pose bien des soucis.

    Sur une page "controleur" j'ai le code suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    	case 'listerClient':
    		listerClient();
     
     
    				$vue->set_filenames(array(
    'contenu' => 'templates/Clients/listerClients.tpl'
    ));
     
    break;
    Ce code me permet d'afficher le template listeClients.tpl et, juste avant, de faire appel à la fonction listerClient()


    Sur une autre page, nommée mapping, j'ai le code suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     	function listerClient() {
     		$reponse=mysql_query("SELECT * FROM clients");
     		// On fait une boucle pour lister tout ce que contient la table :
    		while ($donnees = mysql_fetch_array($reponse) )
    		{
    			echo $donnees['nom']; ?><br /><?php
    		}
     	}
    Et cette partie de code, me permet de lancer la requete.

    Le résultat s'affiche correctement sur le template définit plus haut, cependant, il se trouve que mon affichage est effectué dans le fichier mapping, alors que je voudrais qu'il soit effectué dans le premier fichier (controleur).

    Ma question est donc la suivante: comment puis-je effectuer l'affichage de mes résultats dans le fichier controleur et non mapping? Je n'arrive pas à m'en sortir avec des "return" par exemple....


    Pouvez-vous m'aider? Avez-vous besoin d'autres informations?

    Merci

    David

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    146
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 146
    Points : 52
    Points
    52
    Par défaut
    Voilà ce que je tente, mais ça ne marche pas mieux... (cet essai fait même une boucle infinie je pense...)

    Dans le controleur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    		case 'listerClient':
    		while (listerClient() != NULL) {
    		echo listerClient();
    		}
     
     
    		$vue->set_filenames(array(
    			'contenu' => 'templates/Clients/listerClients.tpl'
    		));
     
    break;

    Dans le mapping:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     	function listerClient() {
     		$reponse=mysql_query("SELECT * FROM clients");
     		$donnees = mysql_fetch_array($reponse);
    		return $donnees;
     
     }


    Help help help

    Merci

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 3
    Points : 3
    Points
    3
    Par défaut
    Commence par définir ce que retourne listerClient() : une liste de clients. Tel que tu as commencé, ça devrait être un tableau à deux dimensions.

    Si tu n'es pas sûr de la partie sql, tu peux dans listerClient() créer une liste "à la main" et la retourner.
    ex :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    function listeClient(){
       $lesClients=array(
          array(
             "id" => 1,
             "nom" => "Dupond"),
          array(
             "id" => 2,
             "nom" => "Smith"),
       );
       return $lesClients;
    }
    ensuite dans ton controleur, tu affecte au template (smarty à vue de nez) la liste à traiter.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $vue->assign('lesClient",listerClient());
    si tout se passe bien tu peux te recentrer sur la requete SQL, si ce n'était pas déjà fait.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
     	function listerClient() {
    		$lesClients=array();
     		$reponse=mysql_query("SELECT * FROM clients");
     		// On fait une boucle pour lister tout ce que contient la table :
    		$i=0;
    		while ($donnees = mysql_fetch_array($reponse) )
    		{
    		   $lesClients[$i]=array(
    		      "id" => row["id"],
    		      "nom" => row["nom"]
    		      );
    		      $i++;
    		}
    		return $lesClients;
     	}

Discussions similaires

  1. Faire une requete avec une jointure ramenant une base SQL et un ebase Oracle
    Par Clement M dans le forum Développement de jobs
    Réponses: 3
    Dernier message: 22/12/2014, 14h13
  2. Réponses: 1
    Dernier message: 10/06/2014, 17h05
  3. Dupliquer une requete d une base vers une autre
    Par adelsunwind dans le forum Requêtes et SQL.
    Réponses: 6
    Dernier message: 15/07/2010, 13h09
  4. Réponses: 2
    Dernier message: 26/09/2006, 08h56
  5. Utilisation d'une requete dans une requete update
    Par hellbilly dans le forum Access
    Réponses: 4
    Dernier message: 09/01/2005, 15h09

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo