PHP MySQL => problème

cs_Loulouu Messages postés 3 Date d'inscription mercredi 17 janvier 2007 Statut Membre Dernière intervention 9 juin 2009 - 13 mai 2009 à 11:22
NeoDodge Messages postés 1 Date d'inscription samedi 25 mai 2002 Statut Membre Dernière intervention 28 mai 2009 - 28 mai 2009 à 10:00
Bonjour,

je suis pour l'instant en stage et je dois résoudre certains bugs d'un
site, ce code la n'est pas le miens (c'est celui d'origine), mais après
moult modifications je n'ai pas réussi à résoudre le problème.

Lorsque je remplis certains champs d'un formulaire (exemple ci
dessous), affin d'affiner la recherche, le tri ne s'effectue pas: tout
les enregistrements de la BDD sont renvoyés


<?php

session_start();

?>

<?php

global $num_uc, $garantie_uc, $marque_uc, $date_ach_uc, $type_uc,
$date_affect_uc, $num_inv_uc, $num_serie_uc, $materiel, $nom_util,
$service, $unite, $marque_ecran, $garantie_ecran, $type_ecran,
$date_ach_ecran, $num_inv_ecran, $date_affect_ecran, $num_serie_ecran,
$cpu, $cad_cpu, $ram, $dram, $dd, $se, $lecteur, $dao, $adr_ip, $dns,
$masque, $wins, $passerelle, $date_d, $date_f;

?>


<HTML>

<HEAD>

<LINK REL="stylesheet" HREF="../styles/dde53.css" TYPE="text/css">

<?php

include ('div.php');

?>

</HEAD>



<?php

include ('date.php');

include ('connect.php');

$idconnect = bddconnect();


if ($idconnect) {


    $ok = false;

    $ip = false;

    $name = $nom_util;

     if ($num_uc !"") {         $num_uc "AND micro.num_uc LIKE '%".$num_uc."%' "; $ok = true; }

    if ($garantie_uc !"") {     $garantie_uc "AND uc.garantie_uc LIKE '".$garantie_uc."' "; $ok = true; }

    if ($marque_uc !"") {     $marque_uc "AND uc.marque_uc LIKE '".$marque_uc."' "; $ok = true; }

    if ($date_ach_uc !"") {     $date_ach_uc "AND uc.date_ach_uc LIKE '".$date_ach_uc."' "; $ok = true; }

    if ($type_uc !"") {         $type_uc "AND uc.type_uc LIKE '".$type_uc."' "; $ok = true; }

    if ($date_affect_uc !"") {     $date_affect_uc "AND uc.date_affect_uc LIKE '".$date_affect_uc."' "; $ok = true; }

    if ($num_inv_uc !"") {     $num_inv_uc "AND uc.num_inv_uc LIKE '".$num_inv_uc."' "; $ok = true; }

    if ($num_serie_uc !"") {     $num_serie_uc "AND uc.num_serie_uc LIKE '".$num_serie_uc."' "; $ok = true; }

    if ($materiel !"") {         $materiel "AND micro.materiel LIKE '".$materiel."' "; $ok = true; }

    if ($nom_util !"") {         $nom_user "AND micro.nom_util LIKE '%".$nom_util."%'"; $ok = true; }

    if ($service !"") {         $service "AND micro.service LIKE '".$service."' "; $ok = true; }

    if ($unite !"") {         $unite "AND micro.unite LIKE '".$unite."' "; $ok = true; }


    if ($marque_ecran !"") {     $marque_ecran "AND
ecran.marque_ecran LIKE '".$marque_ecran."' "; $ok true; $ecr true;
}

    if ($garantie_ecran !"") {     $garantie_ecran "AND
ecran.garantie_ecran LIKE '".$garantie_ecran."' "; $ok true; $ecr
true; }

    if ($type_ecran !"") {     $type_ecran "AND ecran.type_ecran = '".$type_ecran."' "; $ok = true; $ecr = true; }

    if ($date_ach_ecran !"") {    $date_ach_ecran "AND
ecran.date_ach_ecran LIKE '".$date_ach_ecran."' "; $ok true; $ecr
true; }

    if ($num_inv_ecran !"") {     $num_inv_ecran "AND
ecran.num_inv_ecran LIKE '".$num_inv_ecran."' "; $ok true; $ecr
true; }

    if ($date_affect_ecran !"") { $date_affect_ecran "AND
ecran.date_affect_ecran LIKE  '".$date_affect_ecran."' "; $ok = true;
$ecr = true; }

    if ($num_serie_ecran !"") {     $num_serie_ecran "AND
ecran.num_serie_ecran LIKE '".$num_serie_ecran."' "; $ok true; $ecr
true; }


    if ($cpu !"") {         $cpu "AND uc.cpu LIKE '".$cpu."'     "; $ok = true; }

    if ($cad_cpu !"") {         $cad_cpu "AND uc.cad_cpu LIKE '".$cad_cpu."' "; $ok = true; }

    if ($ram !"") {         $ram "AND uc.ram LIKE '".$ram."' "; $ok = true; }

    if ($dram !"") {         $dram "AND uc.dram_uc LIKE '".$dram."' "; $ok = true; }

    if ($dd !"") {         $dd "AND uc.dd LIKE '".$dd."' "; $ok = true; }

    if ($se !"") {         $se "AND uc.se LIKE '".$se."' "; $ok = true; }

    if ($lecteur !"") {         $lecteur "AND uc.lecteur LIKE '".$lecteur."' "; $ok = true; }

    if ($dao !"") {         $dao "AND uc.dao LIKE '".$dao."' "; $ok = true; }

    if ($adr_ip !"") {         $adr_ip "AND ip.ip LIKE '".$adr_ip."' "; $ok = true; $ip=true; }

    if ($dns !"") {         $dns "AND ip.dns LIKE '".$dns."' "; $ok = true; $ip=true; }

    if ($masque !"") {         $masque "AND ip.masque LIKE '".$masque."' "; $ok = true; $ip=true; }

    if ($wins !"") {         $wins "AND ip.wins LIKE '".$wins."' "; $ok = true; $ip=true; }

    if ($passerelle !"") {     $passerelle "AND ip.passerelle LIKE '".$passerelle."' "; $ok = true; $ip=true; }

    if ($date_d "") {         $date_d "%"; }

    if ($date_f "") {         $date_f "%"; }


    

    if ($ok == true ) { // Si au moins un des critères a été renseigné


        $req = "SELECT * FROM micro, uc "; // Création de la requête avec les table micro, uc et ecran


        if ($ip == true) { // Ajout de la table IP dans la requête

            $req .= ", ip ";

        }

        if ($ecr == true) {

            $req .= ", ecran ";

        }


        $req .=    "WHERE micro.ref_uc = uc.ref_uc "; // Jointures

    

        if ($ip == true) { // Ajout des champs IP, DNS, PSRL, DNS et
WINS de la table IP dans la requête + joiture avec la table IP

            $req ."AND micro.ref_ip ip.ref_ip ";    

            $req .= $adr_ip." ";

            $req .= $masque." ";

            $req .= $passerelle." ";

            $req .= $dns." ";

            $req .= $wins." ";

        }


        if ($ecr == true) {

            $req ."AND micro.ref_ecran ecran.ref_ecran ";

            $req .= $marque_ecran." ";

            $req .= $type_ecran." ";

            $req .= $garantie_ecran." ";

            $req .= $num_inv_ecran." ";

            $req .= $num_serie_ecran." ";

            $req .= $date_ach_ecran." ";

            $req .= $date_affect_ecran." ";

        }


        $req .= $num_uc." ";

        $req .= $nom_user." ";

        $req .= $service." ";

        $req .= $unite." ";

        $req .= $materiel." ";

        $req .= $marque_uc." ";

        $req .= $type_uc." ";

        $req .= $num_inv_uc." ";

        $req .= $num_serie_uc." ";

        $req .= $date_ach_uc." ";

        $req .= $date_affect_uc." ";

        $req .= $garantie_uc." ";

        $req .= $cpu." ";

        $req .= $cad_cpu." ";

        $req .= $dd." ";

        $req .= $ram." ";

        $req .= $dram." ";

        $req .= $lecteur." ";

        $req .= $se." ";

        $req .= $dao." ";

        $req .= "ORDER BY micro.num_uc";

    

    } else { // Sinon, sélection de l'ensemble des micros

        $req "SELECT * FROM micro, uc WHERE micro.ref_uc uc.ref_uc ORDER BY num_uc";

    }


    $res = mysql_query($req);

    $num = mysql_num_rows($res);


    if ($res) {

        if ($num == 0) {

            echo 'Aucune fiche trouvée !!';

            echo '[form_search_fiche.php?p=m Retour]';

        } else

        {

            echo '<form name="selection" action="caract_micro.php" method="POST">';

            echo '';

            echo '----
Résultat de la
recherche, ';

            if ($num == 1) {

                echo '----
'.$num.' fiche
trouvée, ';

            } else {

                echo '----
'.$num.' fiches
trouvées, ';

            }

            echo '----
, ';

            echo '----
';

                echo '<table width="98%" border=0 cellspacing=0>';

                echo '----
';

                echo ', Choix</td>';

                echo 'N° du micro, ';

                echo 'Marque, ';

                echo 'Type, ';

                echo 'Utilisateur, ';

                echo 'Service, ';

                echo 'Unité, ';

                echo '
';

            echo '</td></tr><tr><td>';

?>



<?

    echo '';

        $_SESSION['tab_micro'] = array();

        $i=0;

        while ($ligne = mysql_fetch_array ($res))

        {

            $ref = $ligne[0];

            $num_m = $ligne[1];

            $marque = $ligne[16];

            $type = $ligne[17];

            $nom = $ligne[4];

            $service = $ligne [2];

            $unite = $ligne[3];

            

            $_SESSION['tab_micro'][$i] = $ref;

            

    

            //Selection du libellé long pour la marque

            if ($marque != \"\") {

            $req4=\"SELECT * FROM marque WHERE lbl_court_marque = '\".$marque.\"'\";

            $res4=mysql_query($req4);
            while ($ligne mysql_fetch_array ($res4)) { $marque $ligne[2]; }

            } else {

                $marque = \"&nbsp;\";

            }

            //Selection du libellé long pour le type

            if ($type != \"\") {

            $req5=\"SELECT * FROM type_uc WHERE lbl_court_type = '\".$type.\"'\";

            $res5=mysql_query($req5);
            while ($ligne mysql_fetch_array ($res5)) { $type $ligne[2]; }

            } else {

                $type = \"&nbsp;\";

            }

            //Affichage de la ligne correspondant à un micro

            echo '----
';

            echo ', ';

            echo ''.$num_m.', ';

            echo ''.$marque.', ';

            echo ''.$type.', ';

            echo ''.$nom.', ';

            echo ''.$service.', ';

            echo ''.$unite.', ';

            $i++;

        }

            echo '
';

            echo '</td></tr>';

            echo '<tr><td height="5"></td></tr>';

            echo '<tr><td align="center">&nbsp&nbsp&nbsp&nbsp';

            echo '';

            if ($_SESSION['grade'] == 'administrateur')

            {

                echo '&nbsp&nbsp&nbsp&nbsp</td></tr>';

            }

            echo '<tr><td align="center"></td></tr>';

            echo '<tr><td align="center">[print_search.php?req='.$req.' Imprimer]</td></tr>';

            echo '</table>';

            echo '</form>';

        }

    } else {

        echo 'ERREUR';

        echo '[body.php Retour]';

    }

}

?>




</html>


Donc quelqu'un aurait il une solution

merci d'avance

2 réponses

cs_Loulouu Messages postés 3 Date d'inscription mercredi 17 janvier 2007 Statut Membre Dernière intervention 9 juin 2009
14 mai 2009 à 08:15
svp j'ai besoin d'aide :/
0
NeoDodge Messages postés 1 Date d'inscription samedi 25 mai 2002 Statut Membre Dernière intervention 28 mai 2009
28 mai 2009 à 10:00
Fais un "echo $res" avant d'exécuter ta requête pour commencer. De cette manière, tu sauras quelle requête est exécutée et si le problème vient de la construction ou de l'exécution.

Man is the best computer we can put aboard a spacecraft ... and the only one that can be mass produced with unskilled labor.

- Werner Von Braun
0
Rejoignez-nous