Problème sur un formulaire de recherche php

Fermé
pipoch - Modifié par pipoch le 9/06/2010 à 11:16
xav3601 Messages postés 3288 Date d'inscription lundi 10 novembre 2008 Statut Membre Dernière intervention 2 mars 2016 - 9 juin 2010 à 11:25
Bonjour,
j'ai fait un formulaire de recherche en php, j'arrive à récupérer mes valeurs mais il faut que les zones de textes ou de liste déroulantes soient remplis. si je laisse un critères de recherche vide, alors il est considéré comme nul.Je voudrai donc que mes critères non-remplis ne soient pas pris en compte dans ma requete.

voila une partie de mon formulaire :
<form action="modif1_pc.php" method="post">  
<table border="1">  
   <tr><th>Champs</th>  
       <th>zone de texte</th>  
       <th>Exemple</th>  
   </tr>      
               
   <tr><td>Numéro de série :</td>  
       <td><input type="text" name="num_serie_mac"/></td>  
       <td>BBQV34J</td>  
   </tr>  
   <tr><td>Serveur :</td>  
       <td><input type="text" name="fonction_srv"/></td>  
       <td>Proxy</td>  
   </tr>  
   <tr><td>Fin de Stock :</td>  
       <td><input type "text" name="fin_stock"/></td>  
       <td>oui|non</td>  
   </tr>  
   <tr><td><label for="date_achat_mac">Date d'achat :</label></td>  
       <td><select name="date_achat_mac" id="date_achat_mac">  
       <?php  
            $reponse = $cnx->query('SELECT distinct date_achat_mac  
               FROM Machine');  
             while ($data = $reponse->fetch())  
             {  
        ?>  
         <option value="<?php echo $data['date_achat_mac'];?>" >  
   <?php echo $data['date_achat_mac'];?>  
   </option>  
         <?php  
              }  
              $reponse->closeCursor();  
          ?>  
          </select></td></tr>  
</table>  
<input type="submit" name="modif_pc" value="valider"><br/>  


voila une partie de la page appelée par mon formulaire :

<code >
<?php
error_reporting(E_ALL ^ E_NOTICE);

if('$modif_pc')
{
if((!empty($_POST['date_achat_mac'])) &&(!empty($_POST['num_serie_mac']))
&& (!empty($_POST['fonction_srv'])) && (!empty($_POST['fin_stock']))
&& (!empty($_POST['num_mar_mac'])) && (!empty($_POST['num_sal_mac']))
&& (!empty($_POST['ram']))):

$req=$cnx->prepare("SELECT num_mac,nom_reseau,num_serie_mac,nom_mar,
des_mac,date_achat_mac,capacite_dd,ram,
fin_stock,ane_sortie,type_salle,des_lieu,nom_site
FROM Machine,Marque,Salle,Lieu,Site
WHERE num_sal_mac=num_salle AND num_lieu=num_lieu_salle
AND num_site=num_site_lieu AND num_mar=num_mar_mac
AND date_achat_mac= ?
AND num_serie_mac= ?
AND fonction_srv= ?
AND fin_stock=?
AND num_mar_mac= ?
AND num_sal_mac= ?
AND ram= ?") or die(print_r($cnx->errorInfo()));


$req->execute(array($_POST['date_achat_mac'],$_POST['num_serie_mac'],
$_POST['fonction_srv'],$_POST['fin_stock'],
$_POST['num_mar_mac'],$_POST['num_sal_mac'],
$_POST['ram']));

elseif((!empty($_POST['date_achat_mac'])) && ($_POST['num_serie_mac']=="NULL")
&& ($_POST['fin_stock']=="NULL") && ($_POST['num_mar_mac']=="NULL")
&& ($_POST['num_sal_mac']=="NULL") && ($_POST['ram']=="NULL")):

$req=$cnx->prepare("
SELECT distinct num_mac,nom_reseau,num_serie_mac,nom_mar,
des_mac,date_achat_mac,capacite_dd,ram,
fin_stock,ane_sortie,type_salle,des_lieu,nom_site FROM Machine,Marque,Salle,Lieu,Site
WHERE num_sal_mac=num_salle AND num_lieu=num_lieu_salle
AND num_site=num_site_lieu AND num_mar=num_mar_mac
AND date_achat_mac= ?
") or die(print_r($cnx->errorInfo()));

$req->execute(array($_POST['date_achat_mac']));

endif;
}
</code>

Merci d'avance
A voir également:

2 réponses

xav3601 Messages postés 3288 Date d'inscription lundi 10 novembre 2008 Statut Membre Dernière intervention 2 mars 2016 311
9 juin 2010 à 11:18
Salut!
Tu peux dire quel est ton problème actuellement?
Ca te met la valeur null dans ta requete et du coup elle te retourne rien?
0
En fait, sa me met la valeur nulle, donc le requete va chercher dans la BDD les champs qui ont cette valeur ; Et je voudrai que le critère de recherche qui n'est pas remplis ne soit pas pris en compte
0
xav3601 Messages postés 3288 Date d'inscription lundi 10 novembre 2008 Statut Membre Dernière intervention 2 mars 2016 311
9 juin 2010 à 11:23
Il faut que tu créer une requête dynamique en utilisant le pl/sql!
0
ok, merci. je vais me documenter.
le pl/sql fonctionne t'il sur les BDD mysql ??
0
xav3601 Messages postés 3288 Date d'inscription lundi 10 novembre 2008 Statut Membre Dernière intervention 2 mars 2016 311
9 juin 2010 à 11:25
Si tu as des problèmes revient par ici :-)
0