[PHP,Mysql] Menu et lien a la volée
Résolu/Fermé
A voir également:
- [PHP,Mysql] Menu et lien a la volée
- Lien url - Guide
- Créer un lien pour partager des photos - Guide
- Menu déroulant excel - Guide
- Verifier un lien - Guide
- Easy php - Télécharger - Divers Web & Internet
9 réponses
Camuke
Messages postés
224
Date d'inscription
lundi 7 mai 2007
Statut
Membre
Dernière intervention
12 août 2011
88
8 févr. 2010 à 15:45
8 févr. 2010 à 15:45
Salutation,
Si j'ai bien compris tu veux afficher pour chaque categorie de ta table jos_left, les liens correspondant dans jos_left_link?
Si je ne me trompe pas, il manque une information essentielle dans ta base! Tes tables ne sont pas "liées entre elles".
Pour faire se que tu veux (enfin se que j'écrit aux dessus):
BDD:
jos_left(id, title, description)
jos_left_link(id, title, link, description, IdJosLeft)
(ps: Quand tu affiche la structure de ta bdd, un export serai aussi bien (voir mieux), J' entend par la des requêtes SQL insert, c'est tout aussi compréhensible et plus simple a utiliser pour tester)
IdJosLeft est égal a l'id de la catégorie a laquelle il appartient.
Après, il suffit juste de modifier les 2 requêtes sql pour que sa marche:
$left_menu = mysql_query("Select id, title FROM jos_left ORDER BY id ASC") or die (mysql_error());
$left_link = mysql_query("Select title,link FROM jos_left_link WHERE IdJosLeft = ".$donnees_left_menu['id']." ORDER BY id ASC") or die (mysql_error());
Voila
Si j'ai bien compris tu veux afficher pour chaque categorie de ta table jos_left, les liens correspondant dans jos_left_link?
Si je ne me trompe pas, il manque une information essentielle dans ta base! Tes tables ne sont pas "liées entre elles".
Pour faire se que tu veux (enfin se que j'écrit aux dessus):
BDD:
jos_left(id, title, description)
jos_left_link(id, title, link, description, IdJosLeft)
(ps: Quand tu affiche la structure de ta bdd, un export serai aussi bien (voir mieux), J' entend par la des requêtes SQL insert, c'est tout aussi compréhensible et plus simple a utiliser pour tester)
IdJosLeft est égal a l'id de la catégorie a laquelle il appartient.
Après, il suffit juste de modifier les 2 requêtes sql pour que sa marche:
$left_menu = mysql_query("Select id, title FROM jos_left ORDER BY id ASC") or die (mysql_error());
$left_link = mysql_query("Select title,link FROM jos_left_link WHERE IdJosLeft = ".$donnees_left_menu['id']." ORDER BY id ASC") or die (mysql_error());
Voila
Merci Camuke. en effet c'est exactement cela.
Juste une chose, comment faire pour lier? car mes id de tables sont toujours 1.2.3... il faut que je declare comment? (Je fais les export pour creation des que possible et avec les infos que j'ai deja mis.)
Merci (c'est deja bien comme piste :p)
Juste une chose, comment faire pour lier? car mes id de tables sont toujours 1.2.3... il faut que je declare comment? (Je fais les export pour creation des que possible et avec les infos que j'ai deja mis.)
Merci (c'est deja bien comme piste :p)
C'est bon j'ai reussi a bidouiller un truc mais c'est du int pour le IdJosLeft donc si il faut mieux avoir autre chose, dis le moi :p
Camuke
Messages postés
224
Date d'inscription
lundi 7 mai 2007
Statut
Membre
Dernière intervention
12 août 2011
88
9 févr. 2010 à 09:24
9 févr. 2010 à 09:24
Oui, IdJosLeft doit être un int comme les autres id pour éviter les problème de type.
Quand je dit liée, c'est un peu exagère. Concrètement, quand tu va insérer une valeur dans jos_left_link, tu récupère l'id de la bonne catégorie dans jos_left et tu lui attribut.
si c'est fait en php, sa donne un truc comme sa:
$cat = 'maCat';
$req = mysql_query("Select id FROM jos_left Where title=".$cat."") or die (mysql_error());
$result = mysql_fetch_array($req);
$req2= mysql_query("INSERT INTO jos_left_link(title, link, description, idJosLeft) values ('MonTitre', 'monlien', 'PetiteDescription', ".$result['id']." ) or die (mysql_error());
Quand je dit liée, c'est un peu exagère. Concrètement, quand tu va insérer une valeur dans jos_left_link, tu récupère l'id de la bonne catégorie dans jos_left et tu lui attribut.
si c'est fait en php, sa donne un truc comme sa:
$cat = 'maCat';
$req = mysql_query("Select id FROM jos_left Where title=".$cat."") or die (mysql_error());
$result = mysql_fetch_array($req);
$req2= mysql_query("INSERT INTO jos_left_link(title, link, description, idJosLeft) values ('MonTitre', 'monlien', 'PetiteDescription', ".$result['id']." ) or die (mysql_error());
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
oki merci. Ca vas deja aide beaucoup :D.
Dinon autant eviter d'ouvrir un autre post pour une idée qui rejoind la premiere:
Si je veux faire un truc a la joomla ( tu clic sur un lien et dans la nouvelle page les enfants s'affiche), c'est le meme principe non?
Dinon autant eviter d'ouvrir un autre post pour une idée qui rejoind la premiere:
Si je veux faire un truc a la joomla ( tu clic sur un lien et dans la nouvelle page les enfants s'affiche), c'est le meme principe non?
Camuke
Messages postés
224
Date d'inscription
lundi 7 mai 2007
Statut
Membre
Dernière intervention
12 août 2011
88
9 févr. 2010 à 23:05
9 févr. 2010 à 23:05
Oui c'est le meme princiipe.
Malheureusement, je ne parviens pas j'ai une erreur et je ne pârviens pas a la trouver.
Un oeil pl_us exercer que le mien parviendras surment a trouver l'erreur:
"You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'ORDER BY id ASC' at line 1"
voila le code:
on retrouve le premier qui commence a afficher le bloc, le deuxieme affiche bien le lien suivant le bloc de menu mais le troisieme plante alors que j'ai bien diit de prendre les infos depuis la nouvele table et en repiquant l'id du liens precedent.
Voila aussi les export de table sql :p
jos_menu:
jos_left_link:
jos-left_linl2:
Voila, je rappelle juste que je cherche a faire un principe a la joomla, des liens enfants qui ne s'affiche que lorsque l'on a cliquez sur le lien parents et que l'on a changer de page.
Merci de votre aide precieuse
Un oeil pl_us exercer que le mien parviendras surment a trouver l'erreur:
"You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'ORDER BY id ASC' at line 1"
voila le code:
<ul> <?php $left_menu = mysql_query("Select id, title FROM jos_left ORDER BY id ASC") or die (mysql_error()); while ($donnees_left_menu = mysql_fetch_array($left_menu)){ echo'<div class="left_header_articles"></div><div class="right_header_articles"></div><div class="center_header_articles"></div><div class="left"><fieldset><legend>'.$donnees_left_menu['title'].'</legend>'; ?> <ul> <?php $left_linka = mysql_query("Select id, title, link FROM jos_left_link WHERE id_jos_left = ".$donnees_left_menu['id']." ORDER BY id ASC") or die (mysql_error()); while ($donnees_left_linka = mysql_fetch_array($left_linka)){ echo'"'.$donnees_left_linka['id'].'"<a href="'.$donnees_left_linka['link'].'">'.$donnees_left_linka['title'].'</a><br>'; } ?> </ul> <ul> <?php $left_linkb = mysql_query("Select id,title,link FROM jos_left_link2 WHERE id_jos_left_link = ".$donnees_left_linka['id']." ORDER BY id ASC") or die (mysql_error()); while ($donnees_left_linkb = mysql_fetch_array($left_linkb)){ echo'"'.$donnees_left_linkb['id'].'"<a href="'.$donnees_left_linkb['link'].'">'.$donnees_left_linkb['title'].'</a><br>'; } ?> </ul> <?php echo '</fieldset></div><div class="left_footer_articles"></div><div class="right_footer_articles"></div><div class="center_footer_articles"></div><br>'; } ?> </ul>
on retrouve le premier qui commence a afficher le bloc, le deuxieme affiche bien le lien suivant le bloc de menu mais le troisieme plante alors que j'ai bien diit de prendre les infos depuis la nouvele table et en repiquant l'id du liens precedent.
Voila aussi les export de table sql :p
jos_menu:
-- phpMyAdmin SQL Dump -- version 3.2.0.1 -- https://www.phpmyadmin.net/ -- -- Serveur: localhost -- Généré le : Mer 10 Février 2010 à 19:00 -- Version du serveur: 5.1.36 -- Version de PHP: 5.3.0 SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO"; -- -- Base de données: `jof` -- -- -------------------------------------------------------- -- -- Structure de la table `jos_left` -- CREATE TABLE IF NOT EXISTS `jos_left` ( `id` int(11) NOT NULL AUTO_INCREMENT, `title` varchar(255) CHARACTER SET utf8 NOT NULL, `description` text CHARACTER SET utf8 NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=3 ; -- -- Contenu de la table `jos_left` -- INSERT INTO `jos_left` (`id`, `title`, `description`) VALUES (1, 'Acceuil', 'Accueil du site. Contient tout les liens important.'), (2, 'Gloogloo', 'Google du site, sqimple teste de deuxieme bloc de menu');
jos_left_link:
-- phpMyAdmin SQL Dump -- version 3.2.0.1 -- https://www.phpmyadmin.net/ -- -- Serveur: localhost -- Généré le : Mer 10 Février 2010 à 18:59 -- Version du serveur: 5.1.36 -- Version de PHP: 5.3.0 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: `jof` -- -- -------------------------------------------------------- -- -- Structure de la table `jos_left_link` -- CREATE TABLE IF NOT EXISTS `jos_left_link` ( `id` int(11) NOT NULL AUTO_INCREMENT, `id_jos_left` int(11) NOT NULL, `title` varchar(255) CHARACTER SET utf8 NOT NULL, `link` text CHARACTER SET utf8 NOT NULL, `description` text CHARACTER SET utf8 NOT NULL, PRIMARY KEY (`id`), KEY `jos_left` (`id_jos_left`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ; -- -- Contenu de la table `jos_left_link` -- INSERT INTO `jos_left_link` (`id`, `id_jos_left`, `title`, `link`, `description`) VALUES (1, 1, 'Accueil', '/index2.php?titre=titre&contenu=contenu&table=table', 'Liens de retour sur l''accueil.'), (2, 2, 'Google', 'http://www.google.fr', 'direction google'), (3, 2, 'Tyoogle', 'http://www.tyoogle.com/', ''), (4, 1, 'Contact', '/jof/index.php', 'lien pour tester le double lien');
jos-left_linl2:
-- phpMyAdmin SQL Dump -- version 3.2.0.1 -- https://www.phpmyadmin.net/ -- -- Serveur: localhost -- Généré le : Mer 10 Février 2010 à 19:00 -- Version du serveur: 5.1.36 -- Version de PHP: 5.3.0 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: `jof` -- -- -------------------------------------------------------- -- -- Structure de la table `jos_left_link2` -- CREATE TABLE IF NOT EXISTS `jos_left_link2` ( `id` int(11) NOT NULL AUTO_INCREMENT, `id_jos_left_link` int(11) NOT NULL, `title` varchar(255) CHARACTER SET utf8 NOT NULL, `link` text CHARACTER SET utf8 NOT NULL, `description` text CHARACTER SET utf8 NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ; -- -- Contenu de la table `jos_left_link2` -- INSERT INTO `jos_left_link2` (`id`, `id_jos_left_link`, `title`, `link`, `description`) VALUES (1, 4, 'Contactez zai', '/jof/index.php', 'voila le test en lui meme');
Voila, je rappelle juste que je cherche a faire un principe a la joomla, des liens enfants qui ne s'affiche que lorsque l'on a cliquez sur le lien parents et que l'on a changer de page.
Merci de votre aide precieuse
Camuke
Messages postés
224
Date d'inscription
lundi 7 mai 2007
Statut
Membre
Dernière intervention
12 août 2011
88
11 févr. 2010 à 09:59
11 févr. 2010 à 09:59
Le problème est tout simple en fait.
Tu fait ta 1er boucle qui affiche les diffèrent titre de menu. A l'intérieur de cette boucle, tu affiche les différent liens. Jusque la aucun problème.
La 3eme boucle maintenant, tu fait la requete :
Select id,title,link FROM jos_left_link2 WHERE id_jos_left_link = ".$donnees_left_linka['id']." ORDER BY id ASC"
$donnees_left_linka['id'] est égal a un champs de ta requête dans ta 2eme boucle, OR ta 3eme requête est en dehors de la 2eme boucle donc quand voila se que reçoit mysql :
Select id,title,link FROM jos_left_link2 WHERE id_jos_left_link = ORDER BY id ASC
Voila. Je te laisse essayer de trouver tout seul la solution, c'est quand même plus formateur. Dernier conseil, lorsque tu a une erreur avec une requête sql, fait un écho de la requête et regarde si tu vois pas quelque chose qui coince, si tu vois rien, tu l'exécute directement dans phpmyadmin pour voir si elle passe.
Tu fait ta 1er boucle qui affiche les diffèrent titre de menu. A l'intérieur de cette boucle, tu affiche les différent liens. Jusque la aucun problème.
La 3eme boucle maintenant, tu fait la requete :
Select id,title,link FROM jos_left_link2 WHERE id_jos_left_link = ".$donnees_left_linka['id']." ORDER BY id ASC"
$donnees_left_linka['id'] est égal a un champs de ta requête dans ta 2eme boucle, OR ta 3eme requête est en dehors de la 2eme boucle donc quand voila se que reçoit mysql :
Select id,title,link FROM jos_left_link2 WHERE id_jos_left_link = ORDER BY id ASC
Voila. Je te laisse essayer de trouver tout seul la solution, c'est quand même plus formateur. Dernier conseil, lorsque tu a une erreur avec une requête sql, fait un écho de la requête et regarde si tu vois pas quelque chose qui coince, si tu vois rien, tu l'exécute directement dans phpmyadmin pour voir si elle passe.
ok, j'ai trouver, c'etait le } qui etait mal placer.
mais cela ne fonctionne pas comme je le pensait :(
Sait tu ou je peux trouver un tuto ou autre pour que le liens de la 3° boucles (et les autres qui viendront apres) n'appraissent que lorsque l'on clique sur le lien de la 2° boucle? (que l'on change de page ou non).
J'ai bien trouver deux trois script java qui permetent de replier le menu et de l'afficher quand c'est necessaire mais sans mysql derriere et en frame.
mais cela ne fonctionne pas comme je le pensait :(
Sait tu ou je peux trouver un tuto ou autre pour que le liens de la 3° boucles (et les autres qui viendront apres) n'appraissent que lorsque l'on clique sur le lien de la 2° boucle? (que l'on change de page ou non).
J'ai bien trouver deux trois script java qui permetent de replier le menu et de l'afficher quand c'est necessaire mais sans mysql derriere et en frame.