Menu déroulant à l'aide de PHP
jaybolo
Messages postés
2
Statut
Membre
-
ppp -
ppp -
Bonjour à tous
Je me retourne vers vous pour un grand S.O.S. et oui en fait je suis débutant en programmation PHP/SQL. Je bosse sur un projet d'études actuellement en créant un site (un annuaire de sites classés par thème puis par rubrique). Mon site est associé à une base de données content 3 tables (themes, rubriques,sites).
Bon pour lancer la recherche des sites par thèmes et par rubriques, je veux fair eun menu déroulant qui en fontion du thème choisisse les rubriques aossicées.
j'ai fait un codea à base du net, de bouquin . mais là, je sis dépassé car je crois que je suis arrivé au summum de la perfection. Cela ne marche pas. Je lance un SOS à celui qui veut bien me voir mon code et m'aider à le faire fonctionner car je suis un peu préssé par le temps. ou si quelqu'un a un code source que je peux manipluer ce serait cool.
merci d'avance
jaybolo toujours play
Je me retourne vers vous pour un grand S.O.S. et oui en fait je suis débutant en programmation PHP/SQL. Je bosse sur un projet d'études actuellement en créant un site (un annuaire de sites classés par thème puis par rubrique). Mon site est associé à une base de données content 3 tables (themes, rubriques,sites).
Bon pour lancer la recherche des sites par thèmes et par rubriques, je veux fair eun menu déroulant qui en fontion du thème choisisse les rubriques aossicées.
j'ai fait un codea à base du net, de bouquin . mais là, je sis dépassé car je crois que je suis arrivé au summum de la perfection. Cela ne marche pas. Je lance un SOS à celui qui veut bien me voir mon code et m'aider à le faire fonctionner car je suis un peu préssé par le temps. ou si quelqu'un a un code source que je peux manipluer ce serait cool.
merci d'avance
<?php
DEFINE ('DB_USER', 'root'); //définition des paramètres sous forme de constantes
DEFINE ('DB_PASSWORD' , '');
DEFINE ('DB_HOST', 'localhost');
DEFINE ('DB_NAME' , 'togoweb');
//Ouvrir la connection et sélectionner la base de données
$dbc = @mysql_connect (DB_HOST, DB_USER, DB_PASSWORD) or die ('Connexion à MySQL impossible :
'.mysql_error(). '<br>');
mysql_select_db (DB_NAME) OR die ('Sélection de la base de données impossible: '.mysql_error(). '<br>');
?>
<br>
<form name="recherche" action="recherchenico.php" method="POST">
<table width="400" border="0" style="border : 1px solid #000000">
<tr>
<td><span class="style2">Votre thème</span></td>
<td>
<select name="theme" onChange="document.recherche.submit();">
<? $sql = "select * from themes";
$req = mysql_query($sql);
while ($res = mysql_fetch_array($req)) { ?>
<option value="<? echo $res["id"];?>"><? echo $res["nom"];?></option>
<? }?>
</select></td>
</tr>
<? if (!empty($_POST["theme"])) { ?>
<tr>
<td class="style2">Votre rubrique</td>
<td>
<select name="rubriques" onChange="document.recherche.submit();">
<? $sql = "select * from rubriques where fk_themes=".$_POST["theme"];
$req = mysql_query($sql);
while ($res = mysql_fetch_array($req)) { ?>
<option value="<? echo $res["id"];?>"><? echo $res["nom"];?></option>
<? } ?>
</select></td>
</tr>
<? } ?>
<tr><td> </td><td><input type="submit" name="submit" value="Lancer la recherche"/></td></tr>
</table>
</form>
jaybolo toujours play
A voir également:
- Menu déroulant à l'aide de PHP
- Menu déroulant excel - Guide
- Excel menu déroulant en cascade - Guide
- Menu déroulant google sheet - Accueil - Guide bureautique
- Easy php - Télécharger - Divers Web & Internet
- Canon quick menu - Télécharger - Utilitaires
8 réponses
Salut!
Ta question est un peu compliquée "ça ne marche pas" soit :-).
Peux-tu expliquer, quels sont les messages d'erreur, qu'est ce qui devrait se produire et qui ne se produit pas?
Je subodore que tu veux changer les options du menu en fonction du premier choix?
Si j'ai bien compris, le mieux ce serait de reposter ta question, détaillée, avec javascript dans le sujet, plutôt que PHP qui ne permet pas, je crois, ce genre de réponse dynamique sans aller-retour avec le serveur.
Eric.
Ta question est un peu compliquée "ça ne marche pas" soit :-).
Peux-tu expliquer, quels sont les messages d'erreur, qu'est ce qui devrait se produire et qui ne se produit pas?
Je subodore que tu veux changer les options du menu en fonction du premier choix?
Si j'ai bien compris, le mieux ce serait de reposter ta question, détaillée, avec javascript dans le sujet, plutôt que PHP qui ne permet pas, je crois, ce genre de réponse dynamique sans aller-retour avec le serveur.
Eric.
salut merci de m'avoir répondu.
comme je le disias , je suis débutant. mon premier select doit aller chercher tous les themes répertoriés dans ma base En fonction du thème associé, le deuxième select doit aller chercher dans ma base les rubriques associés au thème choisi dans le premier select.
Sa ne marche pas:: sur ma page je vois mon menu select mais quand je clique dessus , c'est vide
voilà si celka peut t'aider pour m'aider à voir ce qui ne marche pas .
jaybolo toujours play
comme je le disias , je suis débutant. mon premier select doit aller chercher tous les themes répertoriés dans ma base En fonction du thème associé, le deuxième select doit aller chercher dans ma base les rubriques associés au thème choisi dans le premier select.
Sa ne marche pas:: sur ma page je vois mon menu select mais quand je clique dessus , c'est vide
voilà si celka peut t'aider pour m'aider à voir ce qui ne marche pas .
jaybolo toujours play
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
A première vue, ta syntaxe de deuxième requête risque de poser problème:
Notamment avec tes guillemets. Il en manque et tu déclare ta clef avec des guillemets doubles.
Dans les requête le mieux est déja d'éviter d'indenter au maximum les guillemets (quand je fais ça, je me perds tout le temps), et surtout dans les clefs d'éléments array.
Je te conseillerais de simplifier par :
L'affichage des erreurs éventuelles ne mange pas de pain, peut te renseigner quand un truc ne fonctionne pas et peut être supprimé si tu le désires quand ton script sera validé.
Eric.
$sql = "select * from rubriques where fk_themes=".$_POST["theme"];
Notamment avec tes guillemets. Il en manque et tu déclare ta clef avec des guillemets doubles.
Dans les requête le mieux est déja d'éviter d'indenter au maximum les guillemets (quand je fais ça, je me perds tout le temps), et surtout dans les clefs d'éléments array.
Je te conseillerais de simplifier par :
$theme=$_POST['theme']; //simple guillemets pour la clef
$query="SELECT * FROM rubriques WHERE fk_themes='$theme'";//simple guillemets pour encadrer la variable, double pour fermer la déclaration
$sql=mysql_query("$query",$dbc);
if (!$sql)
echo "erreur : ".mysql_errno()." : ".mysql_error()."<br/>";
L'affichage des erreurs éventuelles ne mange pas de pain, peut te renseigner quand un truc ne fonctionne pas et peut être supprimé si tu le désires quand ton script sera validé.
Eric.
Il ne "faut" pas gérer les erreurs, mais quand ça ne marche pas voires'afficher la raison, même si elle est cryptique peut te mettre sur la voie des corrections.
De la même façon mysql_query utilise la connection courante par défaut, mais normalement tu la précises en second argument ($dbc). Ca n'est pas obligatoire, ça augmente la lisibilité quand il y a des choses qui ne marchent pas.
L'essentiel de ce que je te suggère c'est d'augmenter la lisibilité des opérations pour essayer de voir à quel moment il y a un problème.
Il me semble également que tu compliques beaucoup ton code en ouvrant et fermant sans cesse des portions de scripts. Il serait beaucoup plus lisible d'imbriquer plus d'HTML dans ton PHP avec des echos, et de supprimer toutes ces balises <?...?>, on ne sait pas trop où on en est, surtout lorsqu'il s'agit de rajouter un }. Enfin c'est un point de vue d'amateur non programmeur, pour moi c'est vraiment difficile à lire, je suppose que les pros sont plus à l'aise.
Eric.
De la même façon mysql_query utilise la connection courante par défaut, mais normalement tu la précises en second argument ($dbc). Ca n'est pas obligatoire, ça augmente la lisibilité quand il y a des choses qui ne marchent pas.
L'essentiel de ce que je te suggère c'est d'augmenter la lisibilité des opérations pour essayer de voir à quel moment il y a un problème.
Il me semble également que tu compliques beaucoup ton code en ouvrant et fermant sans cesse des portions de scripts. Il serait beaucoup plus lisible d'imbriquer plus d'HTML dans ton PHP avec des echos, et de supprimer toutes ces balises <?...?>, on ne sait pas trop où on en est, surtout lorsqu'il s'agit de rajouter un }. Enfin c'est un point de vue d'amateur non programmeur, pour moi c'est vraiment difficile à lire, je suppose que les pros sont plus à l'aise.
Eric.
Oh ben oui je suis bien d'accord, mais pour la mise au point, j'ai du mal à m'y retrouver. Quitte à après voir où on peut alléger la charge du serveur.
Quand aux messages d'erreur qui permettent de "rapidement" trouver où ça cloche, j'ai des fois du mal :-).
Récemment je suis resté 2 jours sur un 1064 : erreur de syntaxe MySql, en étant ben malheureux, parce que franchement ma syntaxe, je voyais pas où était le problème.
Motif, le nom du champ (table créée avec PHPMyAdmin) était trop long ('références', soit 10 caractères)... M'a fallu un moment pour trouver. Le pire c'est que dépité je copiais collais des requêtes directes depuis PHPMyAdmin pour essayer de comparer avec ce qui clochait, mais dans mon script ça ne marchait jamais. Si quelqu'un peut m'expliquer ce que j'ai mal configuré...
Enfin, bon avec des champs plus courts, ça marche...
Eric.
Quand aux messages d'erreur qui permettent de "rapidement" trouver où ça cloche, j'ai des fois du mal :-).
Récemment je suis resté 2 jours sur un 1064 : erreur de syntaxe MySql, en étant ben malheureux, parce que franchement ma syntaxe, je voyais pas où était le problème.
Motif, le nom du champ (table créée avec PHPMyAdmin) était trop long ('références', soit 10 caractères)... M'a fallu un moment pour trouver. Le pire c'est que dépité je copiais collais des requêtes directes depuis PHPMyAdmin pour essayer de comparer avec ce qui clochait, mais dans mon script ça ne marchait jamais. Si quelqu'un peut m'expliquer ce que j'ai mal configuré...
Enfin, bon avec des champs plus courts, ça marche...
Eric.