|
|
|
|
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
<?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>
Salut!
|
Salut merci de m'avoir répondu.
|
A première vue, ta syntaxe de deuxième requête risque de poser problème:
$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.
|
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.
|