Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
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
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
Hors ligne
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
Je vois vraiment pas ou tu bloque
Tu arrive à afficher tes noms de "zones" il te reste juste à faire un lien dessus je comprend pas le problème c'est du html
<a href="">zone</a>
Hors ligne
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.
[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 )
Dans ta boucle tu vas effectuer X fois cette requête où X est le nombre de zone.
[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 :
[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
Dernière modification par Orkin (17-01-2012 14:24:05)
Hors ligne
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
je te montre mon code, ça te permettra peut-etre de mieux cerner la chose :
Controlleur:
public function rubriqueAction() { $rubrique = new Application_Model_DbTable_Rubrique(); $this->view->rubrique = $rubrique->obtenirRubrique(); }
Model:
public function obtenirRubrique() { $where = $this->select(); $where->distinct() // enlève les doulons ->from('zone', 'page'); return $this->fetchAll($where); }
Vue:
<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
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
[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
[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
[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> :
[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 .
Dernière modification par Orkin (17-01-2012 14:44:45)
Hors ligne
T'es patient Orkin
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
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
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
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
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
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
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