probléme de condition IF
Posté : 14 août 2007, 10:12
bonjour a tous,
je ne compren absolument pas pourquoi mes condition ne fonctionne pas mais j'ai une pas de recherche qui envoi 3 parametre a la page qui contien les script permettan la connexion a la base de donnée et la recherche sql des données ( les 3 paramétre sont $type = matériel ou logiciel, $rtype et le type de recherche au moin un mot/ tous/ expression exacte et $rech contien les mot clé de la recherche.
Ma deuxiéme pas receptionne bien les paramétres et les affiches pour mes test mais ne va pas dans la bonne condition pour le traitement cela dépend a chaque foi c'est différent ca change c'est pas juste une erreur dans la condition qui fait que ca va tous le temp dans celle la non c'est aléatoir
Voici une partie de mon code a l'état brut..
Merci pour votre aide ^^
je ne compren absolument pas pourquoi mes condition ne fonctionne pas mais j'ai une pas de recherche qui envoi 3 parametre a la page qui contien les script permettan la connexion a la base de donnée et la recherche sql des données ( les 3 paramétre sont $type = matériel ou logiciel, $rtype et le type de recherche au moin un mot/ tous/ expression exacte et $rech contien les mot clé de la recherche.
Ma deuxiéme pas receptionne bien les paramétres et les affiches pour mes test mais ne va pas dans la bonne condition pour le traitement cela dépend a chaque foi c'est différent ca change c'est pas juste une erreur dans la condition qui fait que ca va tous le temp dans celle la non c'est aléatoir
Voici une partie de mon code a l'état brut..
<?php
$type=$_POST['type'];
$rech=$_POST['recherche'];
$rtype=$_POST['type_rech'];
echo $rtype.' '.$type; // test pour la recupération
//recuperation des retour a la ligne et des guillemet
$rech= nl2br($rech);
$rech= addslashes($rech);
//Connexion a la base de données
$host = 'localhost';
$bdd = 'basedsidt';
//connexion au serveur mysql
$connect = mysql_connect($host,'root','');
// on sélectionne la base
mysql_select_db($bdd,$connect);
include('accueil_outil_gest.php');
//on coupe la chaine de caractere a chaque espace
//$mots = explode(" ", $rech);
$mots = preg_split('#[^\S]+#si', $rech);
//on compte le nombre de mot
$long = count($mots);
//initialisation de la variable condition
$condition = "";
$i=0;
if (empty($rech))
{
echo '<DIV id=content>';
echo 'Veuillez entrer une recherche';
include ('rechercher_procedure.php');
exit ();
}
else if($type="logi" and $rtype="tous")
{
echo 'recherche par mot clé (tous) - logiciel '; //test permettant de tester la condition utilisé
for ($i=0; $i<$long;$i++)
{
if($mots[$i]> "2")
{
$condition = $condition .'AND (proc_soft.proc_s_description like \'%'.$mots[$i].'%\' OR pb_soft.pb_s_description like \'%'.$mots[$i].'%\')';
$condition = ltrim($condition,'AND');
$table = '(relation_soft_pb LEFT JOIN proc_soft ON proc_soft.proc_s_num = relation_soft_pb.proc_s_num)LEFT JOIN pb_soft ON relation_soft_pb.pb_s_num = pb_soft.pb_s_soft';
}
}
}
else if($type="logi" and $rtype="omoin")
{
echo 'recherche par mot clé (au moin un) - logiciel ';
for ($i=0; $i<$long;$i++)
{
if($mots[$i]> "2")
{
$condition = $condition .'OR (proc_soft.proc_s_description like \'%'.$mots[$i].'%\' OR pb_soft.pb_s_description like \'%'.$mots[$i].'%\')';
$condition = ltrim($condition,'OR');
$table = '(relation_soft_pb LEFT JOIN proc_soft ON proc_soft.proc_s_num = relation_soft_pb.proc_s_num)LEFT JOIN pb_soft ON relation_soft_pb.pb_s_num = pb_soft.pb_s_soft';
}
}
}
else if($type="logi" and $rtype="exact")
{
echo 'recherche par mot clé (expression exacte) - logiciel';
$condition = 'proc_soft.proc_s_description like \'%'.$rech.'%\' OR pb_soft.pb_s_description like \'%'.$rech.'%\'';
$table = '(relation_soft_pb LEFT JOIN proc_soft ON proc_soft.proc_s_num = relation_soft_pb.proc_s_num)LEFT JOIN pb_soft ON relation_soft_pb.pb_s_num = pb_soft.pb_s_soft';
}
else if ($type="mat" and $rtype="tous")
{
echo 'recherche par mot clé(tous) - matériel ';
for ($i=0; $i<$long;$i++)
{
if($mots[$i]> "2")
{
$condition = $condition .'AND (proc_hard.proc_h_description like \'%'.$mots[$i].'%\' OR pb_hard.pb_h_description like \'%'.$mots[$i].'%\')';
$condition = ltrim($condition,'AND');
$table = '(relation_hard_pb LEFT JOIN proc_hard ON proc_hard.proc_h_num = relation_hard_pb.proc_h_num)LEFT JOIN pb_hard ON relation_hard_pb.pb_h_num = pb_hard.pb_h_num';
}
}
}
////////////////////////////////////
$sql = 'Select * from '.$table.' where '.$condition ;
echo '<br>'.$sql; // affichage de la requete pour voir si le contenu correspond a la condition (des foi ca diverge)
// requête SQL qui compte le nombre total d'enregistrement dans la table et qui
//récupère tous les enregistrements
$data = mysql_query($sql) or die ('Erreur: '.mysql_error());
$total = mysql_num_rows($data);
//si on récupére un résultat on affiche le tableau
if($total)
{
echo '<div id=content>';
echo '<table>';
echo '<tr>';
echo '<td>Num procédure</td>';
echo '<td>Createur</td>';
echo '<td>Description</td>';
echo '</tr>';
echo '<tr>';
while($row = mysql_fetch_array($data))
{
echo '<tr>';
echo '<td>'.$row["proc_s_num"].'</td>';
//selectionner le Nom et le prenom du createur
$sql_nom = 'select * from utilisateur where util_num = '.$row["util_num"];
$res = mysql_query($sql_nom) or die ('Erreur : '.mysql_error());
$nom=mysql_fetch_assoc($res);
echo '<td>'.$nom["util_prenom"].'<br>'.$nom["util_nom"].'</td>';
echo '<td>'.$row["pb_s_description"].'</td>';
echo '</tr>';
}
echo '</tr>';
echo '</table>';
echo '</div>';
}
else
{
echo 'la recherche n\'a donnée aucun résultat';
}
?> Merci pour votre aide ^^