Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Bonjour,
J’ai commence a crée un forum mon problème c’est que je n’arrive pas a affiche les sous sujets qui concernent un sujet choisie (chaque sujet contient plusieurs sous sujets) le code suivant me permet d’afficher sauf les sous sujets de 1er sujet
$condi= new Zend_Db_Select(Zend_Db_Table::getDefaultAdapter());
$condi->from('soussujets',
array('idsoussujet','soussujet'))
->where("idsujet= 1 ");
$condit = $condi->query();
$resul = $condit->fetchall();
foreach ($resul as $r )
{
echo $r['soussujet'].'<br>';
}
Comment je peux obtenir idsujet d’un sujet choisie [ where("idsujet= ? ", $idsujet); ] ?
Merci pour la réponse
Hors ligne
Bonjour, j'ai du mal à comprendre ton problème ...
Hors ligne
Pareil j'ai vraiment pas compris la... Ton probléme est sur la requete ou sur l'affichage, qu'est ce qui te pose probleme exactement?
Hors ligne
Par exemple j'ai un forum:
zend framework
- Comment afficher certain enregistrement ?
- Optimisation de requêtes, jointures
- [ZF 1.11.3] Requête SQL avec une sous-requête
….
C++
- a quoi sert les Template…. ?
- c’est quoi l’héritage ?
….
VB
-l’objet ADO c’est quoi ?
-probleme de connexion a la base de donne
…..
Je veux que si je click sur un sujet par exemple : C++ sauf ces sous sujet qui seront affiche (- a quoi sert les Template…. ? - c’est quoi l’héritage ? )
Comment je peut obtenir idsujet d’un sujet choisie afin de le mettre dans la requête
[…. where("idsujet= ? ", $idsujet); ]
J’ai essai ca :
$params = $this->getRequest()->getParams();
$idsujet = (int)$params['idsujet'];
mais ca pas marche il me rend idsujet=0
Merci
Hors ligne
Tu peux montrer l'url qui est précisée lors l'appel de ton script ?
Hors ligne
Non est ce que vous pouvez m dire comment (un exemple si c’est possible)
et merci
Hors ligne
La si j'ai bien compris ton probleme c'est pas du ZF, c’est plus un probleme de PHP tu comprend pas comment récupéré un id de sujet, mais perso je trouve ça plutôt flou comme explication, dsl :$
Hors ligne
Pas de problème,
Mais s il ne s’agit pas de ZF ni de PHP il sagit de quoi alors ?
Moi je veux seulement récupérer id d’un sujet que j’ai choisi
Hors ligne
Si justement c'est du php, enfin si j'ai bien compris ton probleme
Cette phrase me pose probleme :
Je veux que si je click sur un sujet par exemple : C++ sauf ces sous sujet qui seront affiche (- a quoi sert les Template…. ? - c’est quoi l’héritage ? )
il ne manque pas un mot dans le texte en gras?
Hors ligne
Je croie qu’il ne manque rien d’après toi c’est quoi ?
Hors ligne
Bonjour ;
Pour vous, les sous-sujets, c'est quoi exactement ? Les réponses à un sujet donnée ?
Voici comment je vois les choses :
Vous avez un forum qui contient plusieurs sous-forums (tout simplement nommés forum):
C++ est un forum
VB est aussi un forum
Les forums contiennent des sujets. Pour exemple, le forum C++ comporte plusieurs sujets:
- a quoi sert les Template…. ?
- c’est quoi l’héritage ?
Pour moi, un sujet est tout simplement un message (post) qui a été posté par un membre.
Et chaque message (post) peut avoir plusieurs réponses faites par d'autres membres...
Maintenant une question: Dans cette construction que n'arrivez-vous pas à afficher exactement ?
Nous vous remercions d'êtres plus précis car vous êtes assez difficile à suivre.
Dernière modification par nuxwin (10-04-2011 01:17:27)
Hors ligne
bonjour,
Je n’arrive pas a affiche les messages (sujets) de chaque forum
Hors ligne
Bonsoir ;
Pouvez-vous au moins nous communiquer la structure SQL que vous utilisez pour votre forum.
Hors ligne
D’après toi j besoin de 3 tables :
-forums:
CREATE TABLE `eleve`.`forums` (
`idforum` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`forums` VARCHAR( 30 ) NOT NULL
) ENGINE = MYISAM ;
- messages :
CREATE TABLE `eleve`.`messages` (
`idforum` INT NOT NULL ,
`idmessage` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`titres` TEXT NOT NULL,
`messages` TEXT NOT NULL,
foreign key (idforum) references forums (idforum)
) ENGINE = MYISAM ;
- reponses :
CREATE TABLE `eleve`.`reponses` (
`idmessage` INT NOT NULL ,
`idreponse` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`idpersonne` INT NOT NULL ,
`reponse` TEXT NOT NULL ,
`date` DATE NOT NULL ,
`heure` TIME NOT NULL,
foreign key (idmessage) references messages (idmessage),
foreign key (idpersonne) references inscrit (id)
) ENGINE = MYISAM ;
Hors ligne
Absolument pas. Un petit exemple pour vous aider:
Dump du schéma et données que j'ai utilisé pour cette démonstration:
[lang=sql] -- phpMyAdmin SQL Dump -- version 3.3.8.1 -- http://www.phpmyadmin.net -- -- Serveur: localhost -- Généré le : Mar 12 Avril 2011 à 03:08 -- Version du serveur: 5.1.49 -- Version de PHP: 5.3.3-7+squeeze1 SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO"; /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; /*!40101 SET NAMES utf8 */; -- -- Base de données: `helpzf` -- -- -------------------------------------------------------- -- -- Structure de la table `forums` -- DROP TABLE IF EXISTS `forums`; CREATE TABLE IF NOT EXISTS `forums` ( `id` int(10) NOT NULL AUTO_INCREMENT, `name` varchar(30) NOT NULL, `description` varchar(255) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ; -- -- Contenu de la table `forums` -- INSERT INTO `forums` (`id`, `name`, `description`) VALUES (1, 'C++', 'Forum about C++ language'), (2, 'VB', 'Forum about Visual Basic language'); -- -------------------------------------------------------- -- -- Structure de la table `messages` -- DROP TABLE IF EXISTS `messages`; CREATE TABLE IF NOT EXISTS `messages` ( `id` int(10) NOT NULL AUTO_INCREMENT, `id_forum` int(10) NOT NULL, `reply_to` smallint(5) NOT NULL DEFAULT '0', `subject` varchar(130) NOT NULL, `message` text NOT NULL, PRIMARY KEY (`id`), KEY `id_forum` (`id_forum`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=4 ; -- -- Contenu de la table `messages` -- INSERT INTO `messages` (`id`, `id_forum`, `reply_to`, `subject`, `message`) VALUES (1, 2, 0, 'C''est quoi le language Visual Basic ?', 'Bonjour, je voudrais savoir ce qu''est le langage Visual basic.'), (2, 2, 1, 'Re: C''est quoi le language Visual Basic ?', 'Fait une recherche sur Google gros fainéant !'), (3, 2, 1, 'Re: C''est quoi le language Visual Basic ?', 'Ha Ha Ha, c''est super sympa comme réponse ça...');
Maintenant, voici quelques requêtes SQL vraiment basiques qui peuvent vous aider pour commencer:
I. Afficher la liste des forums
[lang=sql] SELECT * FROM forums
Resultat:
id name description 1 C++ Forum about C++ language 2 VB Forum about Visual Basic language
II. Afficher les sujets d'un forum
[lang=sql] SELECT * FROM messages WHERE reply_to = 0 AND id_forum = 2
Résultat:
id id_forum reply_to subject message 1 2 0 C'est quoi le language Visual Basic ? Bonjour, je voudrais savoir ce qu'est le langage V...
III. Afficher les réponses d'un sujet (sujet inclu)
[lang=sql] SELECT * FROM messages WHERE id = 1 OR reply_to = 1
Résultat:
id id_forum reply_to subject message 1 2 0 C'est quoi le language Visual Basic ? Bonjour, je voudrais savoir ce qu'est le langage V... 2 2 1 Re: C'est quoi le language Visual Basic ? Fait une recherche sur Google gros fainéant ! 3 2 1 Re: C'est quoi le language Visual Basic ? Ha Ha Ha, c'est super sympa comme réponse ça...
Si vous voulez simplement récupérer les réponses, il vous suffit de modifier la requête comme suite:
[lang=sql] SELECT * FROM messages WHERE reply_to = 1
Je le répète, il s'agit que d'un exemple très basique. Autrement dit, ce n'est qu'une base de départ. Le schéma proposé ici n'est sûrement pas parfait et surtout, loin d'être complet. Par ailleurs, les requêtes sont vraiment basiques et n'incluent pas de clause de classement et de limite.
J'espère vous avoir éclairé suffisamment. Si vous avez vraiment besoin d'un exemple plus concret je vous le fournirais mais j'aimerais que vous fassiez un petit effort car tel que c'est parti, on va le coder à votre place le forum .
Cordialement ;
Dernière modification par nuxwin (12-04-2011 03:29:20)
Hors ligne
une belle réponse
Par contre si tu as du mal avec ces notions, tu devrais peut etre commencer par faire un peu de code en php / sql simple avant d'attaquer ZF
Hors ligne
Bonjour et merci bcp
Mais mon problème ce n’est pas avec les requêtes SQL
Par exemple on a:
id name description
1 C++ Forum about C++ language
2 VB Forum about Visual Basic language
D’apres toi Pour afficher les sujets d’un forum :
SELECT * FROM messages WHERE reply_to = 0 AND id_forum = 2
Cette requete valable si l’utilisateur clic sur le forum VB
Mais s’il clic sur C++ id_forum va changer:
SELECT * FROM messages WHERE reply_to = 0 AND id_forum = 1
Moi je veux faire (d’une manier générale ):
SELECT * FROM messages WHERE reply_to = 0 AND id_forum = $id_forum
(c’est just pour vous expliquer)
Comment je peux recupere l’id_forum d’un forum que l’utilisateur a choisi pour le mettre dans la variable $id_forum
J’espère que vous comprenez car j’essaie de vous expliquez mon probleme mais je ne sais pas comment hhhhhh
Dernière modification par ifolkiii (12-04-2011 15:28:59)
Hors ligne
Heu... je comprend pas car tu as l'air de bien comprendre certaine notion de developpement et si je comprend bien ta question je vois vraiment pas pourquoi tu bloque la dessus
Quand l'user clique sur le forum C++ par exemple, le lien sera de la forme : http://monsite.com/forum.php/categorie/1
avec 1 = id du sous forum C++
Puis dans le traitement tu récupére la valeur de categorie (ici donc 1) et tu set ton $id_forum avec cette valeur.
--> $this->getRequest()->getParam('categorie');
Hors ligne
Bonsoir :
Je rejoins shadypierre. Il me semble évident que votre problème se situe au niveau du fonctionnement du ZF. Je vais vous fournir un exemple concret.
Dernière modification par nuxwin (12-04-2011 20:34:23)
Hors ligne
bonsoir et Merci,
j'ai teste ce code
$params = $this->getRequest()->getParams(); $idsujet = (int)$params['idsujet'];
mais il ne fonctionne pas car si j fais
echo $idsujet;
il m'affiche 0
Hors ligne