le 26/03/2009 à 14:09
Génération d'une requete SQL en fonction des donnnées d'un formulaire
Bonjour,
Tout d'abord, il y a une erreur sur cette ligne :
Il maque le signe "=".
Ensuite, ton formulaire est mal réalisé, car si tu le soumets sans faire de sélection, le programme va considérer que tu veux un statut pour une région, qu'il ne pourra trouver, évidemment. Donc :
En outre, les conditions dans "index.php" ne correspondent pas au résultat attendu. De plus, dans une requête, les chaines de caractères s'encadre avec des apostrophes, et non pas avec des guillemets.
Essaie ce code :
La variable "$numero" n'est là que pour vérification.
Enfin, je subodore (c'est beau ça) que la structure de BDD n'est pas la meilleure, car tu ne devrais pas travailler avec des libellés, mais avec des clés.
Tout d'abord, il y a une erreur sur cette ligne :
<option value"1">1</option>
Ensuite, ton formulaire est mal réalisé, car si tu le soumets sans faire de sélection, le programme va considérer que tu veux un statut pour une région, qu'il ne pourra trouver, évidemment. Donc :
<html>
<head>
<title>Page de soumission du formulaire</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script type="text/javascript">
</script>
</head>
<body>
<form action="index.php" method="post">
<fieldset>
<p>
<label for="secteur">Statut </label>
<select name="societe_statut" id="societe_secteur">
<option value="1">-- Tous --</option>
<option value="Inconnu">Inconnu</option>
<option value="Suspect">Suspect</option>
<option value="Prospect">Prospect</option>
<option value="Client ponctuel">Client ponctuel</option>
<option value="Client">Client</option>
<option value="Client important">Client important</option>
<option value="Fournisseur">Fournisseur</option>
</select>
</p>
<p>
<label for="secteur">Secteur : </label>
<select name="societe_secteur" id="societe_secteur">
<option value="1">-- Tous --</option>
<option value="Ile-de-France">Ile-de-France</option>
<option value="Normandie">Normandie</option>
<option value="Nord">Nord</option>
<option value="Centre">Centre</option>
<option value="Bretagne">Bretagne</option>
<option value="Sud">Sud</option>
</select>
</p>
<p>
<label> </label><input type="submit" value="Enregistrer" />
</p>
</fieldset>
</form>
</body>
</html>
En outre, les conditions dans "index.php" ne correspondent pas au résultat attendu. De plus, dans une requête, les chaines de caractères s'encadre avec des apostrophes, et non pas avec des guillemets.
Essaie ce code :
<?php
if($_POST['societe_statut'] == '1' && $_POST['societe_secteur'] == '1')
{
$numero = 'condition N° 1 : tous les statuts pour tous les secteurs';
$where = '';
}
else if($_POST['societe_statut'] != '1' && $_POST['societe_secteur'] == '1')
{
$numero = 'condition N° 2 : un statut pour tous les secteurs';
$where = ' WHERE societe_statut = \'' . $_POST['societe_statut'] . '\'';
}
else if($_POST['societe_statut'] == '1' && $_POST['societe_secteur'] != '1')
{
$numero = 'condition N° 3 : tous les statuts pour un secteur';
$where = ' WHERE societe_secteur = \'' . $_POST['societe_secteur'] . '\'';
}
else
{
$numero = 'condition N° 4 : un statut pour un secteur';
$where = ' WHERE societe_statut = \'' . $_POST['societe_statut'] . '\'
AND societe_secteur = \'' . $_POST['societe_secteur'] . '\'';
}
$sql = 'SELECT *
FROM societe
LEFT JOIN contact ON societe.societe_nom = contact.contact_societe'
. $where . '
ORDER BY societe_nom ASC';
// $demande = mysql_query($sql);
echo $numero . '<br><br>' . $sql;
?>
La variable "$numero" n'est là que pour vérification.
Enfin, je subodore (c'est beau ça) que la structure de BDD n'est pas la meilleure, car tu ne devrais pas travailler avec des libellés, mais avec des clés.