probléme de condition IF

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : probléme de condition IF

par ouckileou » 14 août 2007, 13:31

Modération :
cyberneo,

Merci de faire attention à la grammaire et l'orthographe lorsque tu rédiges tes messages.

Si besoin, voici une liste de sites pour t'aider :
Français : Dictionnaires, conjugaison et orthographe.

par cyberneo » 14 août 2007, 10:39

merci.. g honte :s je savai pas que l'on pouvai affecté les variable directement dans les conditions ^^

par d0m » 14 août 2007, 10:19

tu fais des affectations dans tes if, pas des comparaisons :
if($type="logi" and $rtype="tous")
c'est toujours la première chose à vérifier quand à l'execution on ne rentre pas dans une boucle.

probléme de condition IF

par cyberneo » 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..
<?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 ^^