Affiche pas les requetes

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

  1. Contributeur
    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
    1. 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.
      1. Contributeur
        De rien
      2. Contributeur
        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?
      3. Comment je peux faire pour les tester? (Je débute dsl)

        Merci
      4. Contributeur
        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
      5. 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. "'";