Vous n'êtes pas identifié(e).
Pages :: 1
Bonjour,
Je suis débutant en PHP/MySql et j'essaie de faire un ti formulaire pour le taff ou ke dois gérer des archives, le problème c'est que je bute avec un problème d'affichage
de ma requête. J'ai un formulaire de recherche multicritères avec un fichier php (que je colle en dessous) ou la requête vers la base de données me donne rien, même pas une erreur.
Arriverez-vous à m'aider?
Merci d'avance
Voici le code:
<?php
$id = $_POST['ID'];
$champ1 = "ID";
$n_boite = $_POST['N_Boite'];
$champ2 = "N_Boite";
$service = $_POST['Service'];
$champ3 = "Service";
$annee_de= $_POST['Annee_de'];
$champ4 = "Annee_de";
$annee_a= $_POST['Annee_a'];
$champ5 = "Annee_a";
$a_destruc= $_POST['A_destruc'];
$champ6 = "A_destruc";
$n_immeuble= $_POST['N_immeuble'];
$champ7 = "N_immeuble";
$descript= $_POST['Descript'];
$champ8 = "Descript";
if($_POST['et_ou1'] == 'AND')
{
if(empty($_POST['ID']))
{
$id = 1;
$champ1 = 1;
}
}
else
{
if(empty($_POST['ID']))
{
$id= 1;
$champ1 = 2;
}
}
if($_POST['et_ou2'] == 'AND')
{
if(empty($_POST['N_Boite']))
{
$n_boite = 1;
$champ2 = 1;
}
}
else
{
if(empty($_POST['N_Boite']))
{
$n_boite = 1;
$champ2 = 2;
}
}
if($_POST['et_ou3'] == 'AND')
{
if(empty($_POST['Service']))
{
$service = 1;
$champ3 = 1;
}
}
else
{
if(empty($_POST['Service']))
{
$service = 1;
$champ3 = 2;
}
}
if($_POST['et_ou4'] == 'AND')
{
if(empty($_POST['Annee_de']))
{
$annee_de= 1;
$champ4 = 1;
}
}
else
{
if(empty($_POST['Annee_de']))
{
$annee_de= 1;
$champ4 = 2;
}
}
if($_POST['et_ou5'] == 'AND')
{
if(empty($_POST['Annee_a']))
{
$annee_a = 1;
$champ5 = 1;
}
}
else
{
if(empty($_POST['Annee_a']))
{
$annee_a= 1;
$champ5 = 2;
}
}
if($_POST['et_ou6'] == 'AND')
{
if(empty($_POST['A_destruc']))
{
$a_destruc= 1;
$champ6 = 1;
}
}
else
{
if(empty($_POST['A_destruc']))
{
$a_destruc= 1;
$champ6 = 2;
}
}
if($_POST['et_ou7'] == 'AND')
{
if(empty($_POST['N_immeuble']))
{
$n_immeuble = 1;
$champ7 = 1;
}
}
else
{
if(empty($_POST['N_immeuble']))
{
$n_immeuble= 1;
$champ7 = 2;
}
}
if($_POST['et_ou8'] == 'AND')
{
if(empty($_POST['Descript']))
{
$descript = 1;
$champ8 = 1;
}
}
else
{
if(empty($_POST['Descript']))
{
$descript = 1;
$champ8 = 2;
}
}
$host = '*******';
$user = '*****';
$pass = '*****';
$db = '******';
$tables = '*******';
// connection à la DB
mysql_connect ($host,$user,$pass) or die ('Erreur : '.mysql_error() );
mysql_select_db($db) or die ('Erreur :'.mysql_error());
echo $select = "SELECT * FROM $tables WHERE $champ1 = '".$id."' ".$_POST["et_ou1"]." $champ2 = '".$n_boite."' ".$_POST["et_ou2"]." $champ3 = '".$service."' ".$_POST["et_ou3"]." $champ4 = '".$annee_de."' ".$_POST["et_ou4"]." $champ5 = '".$annee_a."' ".$_POST["et_ou5"]." $champ6 = '".$a_destruc."' ".$_POST["et_ou6"]." $champ7 = '".$n_immeuble."' ".$_POST["et_ou7"]." $champ8 = '".$descript."' ";
if($id=="" AND $n_boite=="" AND $service=="" AND $annee_de=="" AND $annee_a=="" AND $a_destruc=="" AND $n_immeuble=="" AND $descript=="")
echo 'Vous devez preciser en moins un critére de recherche !!';
else
{
$result = mysql_query($select) or die ('Erreur :'.mysql_error());
$total = mysql_num_rows($result);
if($total)
{
echo "<table width=\"100%\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\">
<tr>
<td width=\"9\" height=\"19\"> </td>
<td width=\"50\"> </td>
<td width=\"9\"> </td>
<td width=\"100\"> </td>
<td width=\"9\"> </td>
<td width=\"200\"> </td>
<td width=\"9\"> </td>
<td width=\"70\"> </td>
<td width=\"9\"> </td>
<td width=\"70\"> </td>
<td width=\"9\"> </td>
<td width=\"70\"> </td>
<td width=\"9\"> </td>
<td width=\"300\"> </td>
<td width=\"9\"> </td>
</tr>";
echo "<tr>
<td height=\"22\"> </td>
<td valign=\"top\" align=\"center\" bgcolor=\"#cccccc\"><b>ID</b> </td>
<td> </td>
<td valign=\"top\" align=\"center\" bgcolor=\"#cccccc\"><b>N° DE BOITE</b> </td>
<td> </td>
<td valign=\"top\" align=\"center\" bgcolor=\"#cccccc\"><b>SERVICE</b> </td>
<td> </td>
<td valign=\"top\" align=\"center\" bgcolor=\"#cccccc\"><b>ANNEE DE</b> </td>
<td> </td>
<td valign=\"top\" align=\"center\" bgcolor=\"#cccccc\"><b>ANNEE A</b> </td>
<td> </td>
<td valign=\"top\" align=\"center\" bgcolor=\"#cccccc\"><b>ANNEE DESTRUCTION</b> </td>
<td> </td>
<td valign=\"top\" align=\"center\" bgcolor=\"#cccccc\"><b>DESCRIPTION</b> </td>
</tr>";
echo "<tr>
<td height=\"22\"> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
</tr>
<tr>";
while($row = mysql_fetch_array($result));
{
echo '<td height="22"> </td>
<td valign="top">'.$row['ID'].' </td>
<td> </td>
<td valign="top">'.$row['N_Boite'].' </td>
<td> </td>
<td valign="top">'.$row['Service'].' </td>
<td> </td>
<td valign="top">'.$row['Annee_de'].' </td>
<td> </td>
<td valign="top">'.$row['Annee_A'].' </td>
<td> </td>
<td valign="top">'.$row['A_destruc'].' </td>
<td> </td>
<td valign="top">'.$row['Descript'].' </td>
<td> </td>
</tr>';
}
echo '<tr>
<td height="50"> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
</tr>
</table>';
}
else echo '<div align="center"><span class="Style1">Aucun résulat ne corresponds à votre recherche !!... </span></div>';
mysql_free_result($result);
mysql_close();
}
?>
Dernière modification par Ruca (23-02-2011 08:50:36)
Hors ligne
Oui il me retourne cette erreur de syntaxe:
J'ai beau changer les ' ou " j'ai toujours la même erreur.
Merci de ton aide
Hors ligne
Quelle usine à gaz !
Essaye comme cela
et montre-nous ce que donne l'echo $select
Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy
Hors ligne
Le voila le "echo $select;"
Merci c'est cool
Dernière modification par Ruca (23-02-2011 11:57:49)
Hors ligne
une usine a gaz ??????
moi, je dirai plutôt un plat de spaghettis
en plus, j'ai faim et c'est l'heure de la bouffe :D
a++
Hors ligne
De toutes manières, sans parenthèses, la conjonction que fera SQL entre les AND et les OR a peu de chances d'être celle attendue.
Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy
Hors ligne
J'avais exactement la même réponse avant de changer, je vais essayer quelque chose
merci ++
Hors ligne
Bonjour,
Merci pour se post car c'est l'exemple type d'un developpement qui necessite un minimum de construction logique avec un algo en place, avec une réalisation qui souhaite le faire sans le faire vraiment car "on ne veut pas s'embéter". Moralité on se retrouve avec une requête MySQL construite "dynamiquement" (notez les guillemets) complètement instable où on a une chance sur deux que ca marche.
Pour faire ça proprement,
1) on commence par faire un tableau du style $result[x] qui contient chaque variable $_POST retournée par le formulaire. On s'assure que pour chaque variable la valeur passée est admissible auquel cas on a $result[x]=$_POST[blabla] et dans tous les autres cas $result[x]="" (par exemple).
2) ensuite on effectue une boucle dans laquelle on construit la clause where dynamiquement. Si $result[x]=="" ou strlen($result[x]==0 on ne fait rien sinon on concatène $where comme il se doit.
3) on nettoie la variable $where (, à la fin de chaîne par ex)
4) on construit la requête par concaténation : Oh^^ la requête est propre et fonctionne à chaque fois! comme c'est bizarre^^
Bonne continuation
PS: Vous noterez également pour la petite histoire, que lorsque on construit ces fonctions comme cela, on a plus besoin d'utiliser a gogo des fonctions de protection de chaînes pour les requêtes SQL, où il arrive un moment où on ne sait plus ce que l'on doit proteger ou combien de fois elle l'a déjà été.
PS2: On notera aussi que la requête ne sera jamais propre tant que le Select sera construit ainsi : Select * ....
Dernière modification par Jc (23-02-2011 22:30:52)
POO PHP+Ajax en MVC avec PDO et Bases de données épaisses : What else?
Hors ligne
En fait, c'est une tendance générale de beaucoup de débutants en PHP. Comme c'est dynamique, autant dynamisé, quitte à dynamité le code.
Autre exemple contre-productif fréquent, construire en dynamique les choses les plus statiques comme un menu ou un <select>.
Et avec la mode AJAX (Hein Pierrot) ce n'est pas prêt de s'arrêter.
Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy
Hors ligne
Pages :: 1