Affiche pas les requetes

Fermé
Ruca - 22 févr. 2011 à 13:56
Ruca75 Messages postés 5 Date d'inscription mardi 22 février 2011 Statut Membre Dernière intervention 23 février 2011 - 23 févr. 2011 à 07:58
Bonjour à tous ceux qui liront ce message :)

Voila j'ai un problème d'affichage de ma requête su bdd mysql.
J'ai un formulaire multicritères avec un fichier php que je posterai à la suite du message ou la requête vers la base de données me donne rien, même pas une erreur.
Arriverez-vous à me dépanner? En tous cas merci beaucoup en avance.

voici le code:
<style type="text/css">
.Style2 {
color: #009900;
font-weight: bold;
font-style: italic;
font-size: 36px;
}
</style>

<?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();
}
?>

2 réponses

elpens Messages postés 815 Date d'inscription mercredi 10 septembre 2008 Statut Contributeur Dernière intervention 24 avril 2014 136
22 févr. 2011 à 14:02
Salut,

Je ne suis pas sur du tout mais je pense qu'il y a un probleme dans ton SELECT:
"SELECT * FROM $tables WHERE $champ1 = '".$id."'
Tu devrais mettre $table entre guillemet car c'est une variable (comme tu l'as fait pour $id)

Sinon je te conseil de mettre des echo un peu partout et tu devrai facilement voir ou cela bloque
0
Donc après l'écho ma requête m'affiche:

SELECT * FROM ma_base WHERE 1 = '1' AND N_Boite = '2' OR 1 = '1' AND 1 = '1' AND 1 = '1' AND 1 = '1' AND 1 = '1' AND 1 = '1'

si je mets $tables entre guillemets:

SELECT * FROM 'ma_base' WHERE 1 = '1' AND N_Boite = '2' OR 1 = '1' AND 1 = '1' AND 1 = '1' AND 1 = '1' AND 1 = '1' AND 1 = '1' Erreur :Erreur de syntaxe près de ''ma_base' WHERE 1 = '1' AND N_Boite = '2' OR 1 = '1' AND 1 = '1' AND 1 = '' à la ligne 1

Ma requête affiche toujours rien (j'avais oublié de marquer)
Merci de ton aide.
0
elpens Messages postés 815 Date d'inscription mercredi 10 septembre 2008 Statut Contributeur Dernière intervention 24 avril 2014 136
22 févr. 2011 à 14:32
De rien
0
elpens Messages postés 815 Date d'inscription mercredi 10 septembre 2008 Statut Contributeur Dernière intervention 24 avril 2014 136
22 févr. 2011 à 14:53
Dsl j'ai mal lu ton post...

Tu as un probleme avec ta syntaxe SQL:

SELECT * FROM 'ma_table' WHERE id=1 AND N_Boite = 2

As tu testé tes requetes SQL?
0
Ruca75 Messages postés 5 Date d'inscription mardi 22 février 2011 Statut Membre Dernière intervention 23 février 2011
22 févr. 2011 à 14:55
Comment je peux faire pour les tester? (Je débute dsl)

Merci
0
elpens Messages postés 815 Date d'inscription mercredi 10 septembre 2008 Statut Contributeur Dernière intervention 24 avril 2014 136
22 févr. 2011 à 15:09
Pas de problèmes, tout le monde a une fois débuté.... quand a moi je suis un peu rouillé ;-)

Cela dépend du prog que tu utilises. Moi j'ai toujours travaillé avec EasyPHP et il y a un outil sous http://127.0.0.1/home/mysql qui te permet d'effectuer tes requetes SQL

Mais ton probleme est que tu utilise des variables dans ta requete:
WHERE 1=1 doit etre WHERE id=1 --> Tu as un probleme avec ta concaténation
0
Ruca75 Messages postés 5 Date d'inscription mardi 22 février 2011 Statut Membre Dernière intervention 23 février 2011
22 févr. 2011 à 15:22
Si je mets quelque chose dans les champs de mon formulaire j'ai ceci:
SELECT * FROM ma_table WHERE ID = '1' OR N_Boite = '1' OR Service = '1' OR Annee_de = '1' OR Annee_a = '1' OR A_destruc = '1' OR N_immeuble = '1' OR Descript = '1'

et si je test ma requete (avec easyphp) j'ai ceci:

#1064 - Erreur de syntaxe près de '$select = "SELECT * FROM $tables WHERE $champ1 = '".$id."' ".$_POST["et_ou1"]." ' à la ligne 1

$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. "'";
0