Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 16-01-2012 13:33:09

brice97431
Nouveau membre
Date d'inscription: 12-12-2011
Messages: 9

un lien sur le résultat d'un requete SQL

Bonjour je voudrais savoir si c'est possible de mettre un lien sur le résultat d'une requete SQL ? si oui pouvez vous m'indiquer comment le faire svp

Hors ligne

 

#2 16-01-2012 14:33:00

shadypierre
Membre
Date d'inscription: 24-03-2010
Messages: 617

Re: un lien sur le résultat d'un requete SQL

C'est un peu vague comme question, j'ai rien compris à ce que tu veux faire et à mon avis tu ne sais pas trop toi même ce que tu cherche à obtenir hmm

Hors ligne

 

#3 17-01-2012 07:25:50

brice97431
Nouveau membre
Date d'inscription: 12-12-2011
Messages: 9

Re: un lien sur le résultat d'un requete SQL

en fait j'ai une table avec plusieurs champs comme ceci :

---------------id---------+-----------Zone--------------+---------Page---------------

et je fais une requete pour récupérer un des champs pour avoir en vue un truc du genre :

-------Zone-------

      Accueil
      Actu
      Sport

et j'aimerai que sur chaque résultat de la requete ont ai un lien dans le cas de l'exemple : Accueil, Actu, Sport seraient des liens qui pointerait chacun sur une page différente

Hors ligne

 

#4 17-01-2012 09:09:24

shadypierre
Membre
Date d'inscription: 24-03-2010
Messages: 617

Re: un lien sur le résultat d'un requete SQL

Je vois vraiment pas ou tu bloque hmm
Tu arrive à afficher tes noms de "zones" il te reste juste à faire un lien dessus je comprend pas le problème hmm c'est du html

Code:

<a href="">zone</a>

Hors ligne

 

#5 17-01-2012 09:39:51

Orkin
Administrateur
Lieu: Paris
Date d'inscription: 09-12-2011
Messages: 1261

Re: un lien sur le résultat d'un requete SQL

Salut, si j'ai bien compris tu souhaites stocker tes menus directement en base de données pour ensuite les afficher. La seule difficulté c'est que ton menu est réparti en plusieurs zones et donc que tu as une zone qui contient plusieurs pages.

Il y a plusieurs façon (ça doit pouvoir se faire avec une sous requête mais pour aller au plus simple, voici une des solutions.

Dans un premier temps tu fais une requête qui va récupérer toute les zones.

Code:

[lang=sql]SELECT zone FROM TA_TALBE ORDER BY zone ASC

Tu boucles sur le résultat de cette requête qui va te donner la liste des zones ordonnées par ordre alphabétique (tu peux le changer wink)

Dans ta boucle tu vas effectuer X fois cette requête où X est le nombre de zone.

Code:

[lang=sql]SELECT page FROM TA_TABLE WHERE zone = $zone ORDER BY page ASC

Là tu vas avoir toutes les pages pour chaque zone. Je serais toi je vérifierais s'il y a bien des pages associées à ta zone. Voici un exemple d'affichage :

Code:

[lang=php]$mon_affichage = '<h2>' . $zone . '</h2>';
// requete SQL ici
foreach($pages as $page) {
$mon_affichage .= '<a href="ton url">' . $page . '</a>';
}

Ce code n'est pas complet c'est histoire de te donner une idée pour poursuivre wink

Dernière modification par Orkin (17-01-2012 14:24:05)

Hors ligne

 

#6 17-01-2012 13:29:49

brice97431
Nouveau membre
Date d'inscription: 12-12-2011
Messages: 9

Re: un lien sur le résultat d'un requete SQL

quand tu dis que 

Orkin a écrit:

tu as une zone qui contient plusieurs pages

tu veux bien dire que :

- la zone Accueil pointera sur une page
- la zone Actu pointera sur une autre page

tout en sachant que Accueil et Actu sont les résultat de ma requete

c'est bien ça ? histoire qu'il n'y ai pas de confusion smile

je te montre mon code, ça te permettra peut-etre de mieux cerner la chose :

Controlleur:
   

Code:

 public function rubriqueAction()
    {    
        $rubrique = new Application_Model_DbTable_Rubrique();
        $this->view->rubrique = $rubrique->obtenirRubrique();
        
    }

Model:
     

Code:

public function obtenirRubrique()
    {    
        $where = $this->select();
        $where->distinct() // enlève les doulons 
              ->from('zone', 'page');
            
        return $this->fetchAll($where);        
    }

Vue:

Code:

<table>
    <tr>
        <th>Zone</th>
    </tr>
    
    <?php foreach($this->rubrique as $rubrique) : ?>
    <tr>
        <td><?php echo $this->escape($rubrique->page);?></td>
    </tr>
    <?php endforeach; ?>
</table>

Dernière modification par brice97431 (17-01-2012 13:53:01)

Hors ligne

 

#7 17-01-2012 14:29:30

Orkin
Administrateur
Lieu: Paris
Date d'inscription: 09-12-2011
Messages: 1261

Re: un lien sur le résultat d'un requete SQL

Du coup j'ai encore moins compris ce que tu veux faire ...

Tu dis avoir une table comme ceci :

brice97431 a écrit:

---------------id---------+-----------Zone--------------+---------Page---------------

J'en déduis donc avec ces informations que tous les champs sont utiles :
id = clé primaire
zone = champs string
page = champs string

Comme tu as Zone et Page et que tu dis ça après :

brice97431 a écrit:

-------Zone-------

      Accueil
      Actu
      Sport

J'en déduis que zone correspond au champs zone de ta table et est donc un entête/bloc de menu (genre menu utilisateur, menu administrateur, menu commun etc ...) et que page correspond à accueil, actu, sport etc ...

L'exemple, bien qu'incomplet mais avec mes explications tu devrais pouvoir transformer l'écrit en code te permet de "découper" tes menus en plusieurs zone de plusieurs menus (ou balise <a>)

Si je reprend ton code, le contrôleur il n'y a quelques modification à faire et je l'aurai mis dans un helper de vue mais bon tu fais comme tu veux :p.

Dans ton Modèle, si tu utilises les 2 requêtes que je t'ai donné ci-dessus (à traduire pour être utilisé via tes objets) tu ne peux pas avoir de doublons, il faut savoir que le distinct ralenti tes requêtes donc à éviter si tu n'en as pas besoin.

Voici comment je ferais :

Contrôleur

Code:

[lang=php]public function rubriqueAction()
    {
        $data = new Application_Model_DbTable_Rubrique();
        
        $zones = $data->obtenirZone();

        $rubrique = array();
        foreach($zones as $zone) {
                rubrique[$zone] = $data->obtenirRubrique($zone);
        }
        $this->view->rubrique = $rubrique;
    }

Modèle

Code:

[lang=php]public function obtenirRubrique($zone)
    {    
        $where = $this->select();
        $where->from('zone', 'page')
              ->where('zone = ?', $zone); // critère sur la zone
            
        return $this->fetchAll($where);
    }

    public function obtenirZone()
    {
          $where = $this->select();
          $where->from('zone', 'zone');

          return $this->fetchAll($where);
    }

La vue

Code:

[lang=php]

<?php foreach($this->rubrique as $zone => $pages): ?>

<table>
    <tr>
        <th><?php echo $this->escape($zone) ?></th>
    </tr>
    
    <?php foreach($pages as $page) : ?>
    <tr>
        <td><a href="<TON LIEN>"><?php echo $this->escape($page);?></a></td>
    </tr>
    <?php endforeach; ?>
</table>
<?php endforeach; ?>

Voila normalement ça devrait créer plusieurs zones de plusieurs pages (si j'ai pas fait d'erreur) le code est peux être à ajuster je ne l'ai pas testé.

Concernant le champs <TON LIEN> il n'est renseigné nul part et tu n'indiques pas comment tu veux le formater. Tu peux le faire avec l'aide de vue URL. Si tu veux la formater en fonction de l'id du menu de ta table (champ à rajouter dans la clause from de ton modèles sous forme d'un array : array('page', 'id') si je me trompe pas.

Et pour construire ton URL un truc du genre à la place de <TON LIEN> :

Code:

[lang=php]$this->url(array(
         'controller' => '<ton_controller>',
         'action' => '<ton_action>',
         '<ton_parametre_get>' => $page->id
         ), 'default', true /* pour l'encodage des caractères */);

Si c'est pas ça explique toi mieux car c'est pas très clair du tout, sinon j'abandonne smile.

Dernière modification par Orkin (17-01-2012 14:44:45)

Hors ligne

 

#8 17-01-2012 14:40:02

shadypierre
Membre
Date d'inscription: 24-03-2010
Messages: 617

Re: un lien sur le résultat d'un requete SQL

T'es patient Orkin smile
Au début j'ai cru avoir été un peu sec mais quand je vois la réponse obtenu sur developpez.com je me dis qu'on est cool ici xD

Hors ligne

 

#9 17-01-2012 14:47:20

Orkin
Administrateur
Lieu: Paris
Date d'inscription: 09-12-2011
Messages: 1261

Re: un lien sur le résultat d'un requete SQL

Oui mais bon je suis nouveau et je n'ai pas encore le savoir total, donc si je suis désagréable dès que je commence à pouvoir aider, je ne le serais pas en retour ... Mais comme je l'ai dit les explications sur ce qu'il souhaite faire sont très mauvaises donc si c'est pas ce que j'ai compris et que je n'ai pas d'autre explication claire je laisse tomber.

Sur développez.com c'est parfois utile mais malheureusement on a pas très souvent de bonne réponses. Jusqu'à présent j'ai toujours eu quelqu'un qui a pris le temps de m'expliquer ce que je ne comprenais pas ici donc il est normal que j'en fasse de même. La seule différence c'est que j'ai toujours essayé d'être le plus clair possible, ce qui n'est malheureusement pas le cas sur ce sujet (mais on s'égare :p)

Edit : effectivement je viens de lire les messages sur développez.com effectivement ça pique :p

Dernière modification par Orkin (17-01-2012 14:59:57)

Hors ligne

 

#10 18-01-2012 07:15:53

brice97431
Nouveau membre
Date d'inscription: 12-12-2011
Messages: 9

Re: un lien sur le résultat d'un requete SQL

oui c'est une entete comme tu dis et oui c'est la pique sur developpez.com , je suis étudiant et j'ai commencer à développé depuis peu et Zend je connaissais pas du tout donc c cool d'etre comprehensif

Hors ligne

 

#11 18-01-2012 09:25:25

Orkin
Administrateur
Lieu: Paris
Date d'inscription: 09-12-2011
Messages: 1261

Re: un lien sur le résultat d'un requete SQL

On est tous passé par là mais si tu veux avoir réponse à ton problème rapidement prend le temps de bien expliquer pour que n'importe qui puisse comprendre et pas seulement toi.

De plus par rapport à ce que tu as demandé sur développez.com montre que tu poses beaucoup de questions sans forcément essayer de regarder ce qui va pas comme le $return qui ne fonctionnait pas.

Je te conseil de développer sous un IDE (Eclipse ou netbeans suivant les préférences qui sont gratuit, il en existe d'autre mais c'est les plus connu). Si tu débutes en PHP n'hésites pas à aller sur le site du zero et essai de répondre aux question en fin des cours sur PHP, c'est un bon début pour savoir où tu en es sur le langage PHP lui même, ensuite vient le Zend Framework.

Bonne continuation.

Hors ligne

 

#12 24-01-2012 12:26:25

brice97431
Nouveau membre
Date d'inscription: 12-12-2011
Messages: 9

Re: un lien sur le résultat d'un requete SQL

bonjour Orkin j'ai juste pas bien compris une chose
 

Orkin a écrit:

public function obtenirRubrique($zone)
    {   
        $where = $this->select();
        $where->from('zone', 'page')
              ->where('zone = ?', $zone); // critère sur la zone
             
        return $this->fetchAll($where);
    }

tu peux m'expliquer ta ligne de critère sur la zone ? Il faudrait pas déclarer la variable $zone avant ?

Hors ligne

 

#13 24-01-2012 13:34:20

Orkin
Administrateur
Lieu: Paris
Date d'inscription: 09-12-2011
Messages: 1261

Re: un lien sur le résultat d'un requete SQL

brice97431 a écrit:

tu peux m'expliquer ta ligne de critère sur la zone ? Il faudrait pas déclarer la variable $zone avant ?

Si tu as tout à fait raison ... La variable $zone est passé en paramètre de ta fonction obtenirRubrique($zone). C'est à toi lorsque tu vas faire l'appel à ta fonction de lui donné l'id ou la chaine de caractère qui te permet de retrouver ta zone. Cette donnée sera alors enregistré dans la variable $zone que tu pourras utiliser uniquement à l'intérieur de ta fonction.

Si tu ne comprends toujours pas je ne peux que t'encourager à aller lire les tutoriels sur le développement PHP, l'utilisation de fonction et les requêtes SQL/MySQL

Dernière modification par Orkin (24-01-2012 13:35:54)

Hors ligne

 

#14 02-05-2013 13:04:31

edem
Nouveau membre
Date d'inscription: 02-05-2013
Messages: 1

Re: un lien sur le résultat d'un requete SQL

je voudrais faire une requête sql en zend framework mais je sais pas par ou commencer:

sql:
select nomdeveloppeur,prenomdeveloppeur from developpeur;

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages