8796 sujets

Développement web côté serveur, CMS

Bonjour à toutes et tous,

J'ai deux tables menus et contenus :

CREATE TABLE menus (id_menu INT not null AUTO_INCREMENT, lib_menu VARCHAR (100) NOT NULL, id_parent INT, image_menu VARCHAR (100), url_page VARCHAR (100), ordre_menu INT, PRIMARY KEY (id_menu));

CREATE TABLE contenu (id_contenu INT not null AUTO_INCREMENT, categorie VARCHAR (100) NOT NULL, nom_lien VARCHAR (40), photo_contenu VARCHAR (40), lieu VARCHAR (40), titre VARCHAR (40), dateetnbrepage VARCHAR (20), editeur VARCHAR (40), texte TEXT, ordre_contenu INT, PRIMARY KEY (id_contenu));


Sur mon site, j'ai un menu à gauche qui correspond à la table menus, dont voici le code PHP/SQL :

<div id="menu">
<?php
require("identification/connexion_sql.php");
// on attaque le php ici
// dans un premier temps on recupere les menus de niveau 1 donc ceux qui ont l'id_parent egal a 0
$req1 = "SELECT id_menu, lib_menu FROM menus WHERE id_parent='0' ORDER BY ordre_menu" or die ("impossible d'effectuer la requête");
$rep1 = mysql_query($req1);
while($row1 = mysql_fetch_array($rep1)) {

// on affiche le menu de niveau 1
echo "<div class=\"menu\" id=\"menu".$row1['id_menu']."\" onclick=\"afficheMenu(this)\"><a href=\"#\">".$row1['lib_menu']."</a></div><br>\n";
// ensuite on fait une seconde requete pour chercher les sous menus de ce niveau, s'il y en a on les affiche, sinon on ne fait rien

$req2="SELECT id_menu, lib_menu FROM menus WHERE id_parent='".$row1['id_menu']."' ORDER BY ordre_menu"  or die ("impossible d'effectuer la requête");
$rep2=mysql_query($req2);
$nb2=mysql_num_rows($rep2);
if (isset($nb2) && $nb2>0) {

echo "<div id=\"sousmenu".$row1['id_menu']."\" style=\"display:none\"><br>\n";
while ($row2=mysql_fetch_array($rep2)) {
$num = $row2['id_menu'];
$lib = htmlentities($row2['lib_menu']);
print '<div class="sousmenu"><a href="contenu.php?num='.$num.'&lib='.$lib.'">'.$lib.'</a></div><br>';
}
echo "</div>\n";

}
}
?>
</div>



Lorsque je clique sur un un lien du sous-menu, je vais vers une page nommée contenu.php? pour laquelle je transmets des variables ($num et $lib)

Cette page contenu.php devrait afficher les noms des liens correspondant au sous-menu cliqué, mais j'ai un soucis dans la requête de cette page.

Voici le code PHP/SQL qui ne fonctionne pas. Je n'ai pas d'erreur, tout simplement lorsque je clique sur un lien du sous-menu le contenu correspondant ne s'affiche pas :

<?php
$ca = htmlentities($_GET['lib']);
$idm = $_GET['num'];
require("identification/connexion_sql.php");

$requete = "Select id_contenu, nom_lien, categorie FROM contenu, menus WHERE contenu.categorie = (SELECT lib_menu FROM menus WHERE menus.lib_menu='$ca') ORDER BY contenu.ordre_contenu";
$reponse = mysql_query($requete) or die ("impossible d'effectuer la requête");
while($affiche = mysql_fetch_array($reponse)) {
$liencontenu = htmlentities($affiche['nom_lien']);
$id_contenu = $affiche['id_contenu'];

print '<div id="lien" class="lien"><a href="fiche.php?id='.$id_contenu.'&nomlien='.$liencontenu.'" class="lien">'.$liencontenu.'</a></div>';

}
mysql_close();
?>


Pour mieux comprendre, voici la page où je fais les tests : Smiley url http://www.la-grange-sardieres.fr/site%20Fab/presentation2css.php[/url]

Merci beaucoup pour votre aide.
loixi a écrit :
c'est un peut bête, moi aussi j'ai un problème de requette, j'aimerais que quand j'envoie mon formulaire, les infos soient marquer dans la requette et crée la table mais ça me mais une erreur de syntax:

&lt;?php include &quot;mise en page/basedonné.php&quot;;?&gt;
&lt;?php
$reponse = $bdd-&gt;query('CREATE TABLE IF NOT EXISTS `' . $_POST['nomfilm'] . '`(
  `id_acteur` int(11) NOT NULL AUTO_INCREMENT,
  `nomacteur` varchar(255) NOT NULL,
  `role` varchar(255) NOT NULL,
  `url` varchar(255) NOT NULL,
  `photo` varchar(100) NOT NULL,
  PRIMARY KEY (`id_acteur`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=4 ;
INSERT INTO `' . $_POST['nomfilm'] . '` (`id_acteur`, `nomacteur`, `role`, `url`, `photo`) VALUES
(1, `' . $_POST['NomActeur1'] . '`, `' . $_POST['RoleActeur1'] . '`, `' . $_POST['urlActeur1'] . '`, `' . $_POST['tof1'] . '`),
(2, `' . $_POST['NomActeur2'] . '`, `' . $_POST['RoleActeur2'] . '`, `' . $_POST['urlActeur2'] . '`, `' . $_POST['tof2'] . '`),
(3, `' . $_POST['NomActeur3'] . '`, `'. $_POST['RoleActeur3'] . '`, `' . $_POST['urlActeur3'] . '`, `' . $_POST['tof3'] . '`),
(4, `' . $_POST['NomActeur4'] . '`, `' . $_POST['RoleActeur4'] . '`, `' . $_POST['urlActeur4'] . '`, `' . $_POST['tof4']. '`);') or die(print_r($bdd-&gt;errorInfo()));

while ($donnees = $reponse-&gt;fetch())
{
} $reponse-&gt;closeCursor();
?&gt;


Je veux juste que le nom de la table chanche a chaque fois, mais je n'arrive pas, quand ca marche, ça marque tout betement: $_POST[&quot;nomfilm&quot;]

trop fort j'ai trouver tout seule je suis en train de modifier le code^^.
Par contre comment faire quand un mot a un ' ?

Edit ca marche, ca crée bien la table mais ne marque pas les info a l'intérieur.


Merci de supprimer ton message et de créer un topic pour celui-ci.
Ici c'est mon post !! Smiley cligne
loixi a écrit :
Sympa^^.
C'etait pour éviter de crée 1200sujets^^.


Ouais mais en attendant, tu réquisitionnes le mien.

bonne soirée
Modérateur
Bonjour,

loixi, quaresma a tout à fait raison. Si tu as une question, il ne faut jamais utiliser le sujet d'un autre, mais créer ton propre sujet et ce, même si le sujet est similaire. Un auteur par sujet.

Merci de ta compréhension.