在带有字符串检查的if中使用if不起作用

时间:2016-05-08 15:33:58

标签: php

我不明白为什么我的if if不起作用。这是我的代码:

 if (isset($_POST['salle'])){
        $idSalle = $_POST['salle'];
        echo('La salle séléctionnée est :' . $idSalle  . '<br />');

        if ($idSalle == "- - - Choisissez  une salle - - - ") {
           /* DO NOT PASS HERE :( */

            $idSalle = "Non séléctionné";
            echo('La salle séléctionnée est :' . $idSalle  . '<br />');
        }

      } 

但是,当我在清单上选择 - - - Choisissez une salle - - - 时,页面会回复“Lasalleséléctionnéest: - - - Choisissez une salle - - - < /或者,或者,从逻辑上讲,文本应该是“ Lasalleséléctionnéest:Non-selectionné”。

这是我的完整代码:

<!DOCTYPE html>
<html>
  <head>
  	<link rel="stylesheet" href="css/style.css">
  	<link rel="stylesheet" href="//code.jquery.com/ui/1.11.4/themes/smoothness/jquery-ui.css">
    <script src="//code.jquery.com/jquery-1.10.2.js"></script>
    <script src="//code.jquery.com/ui/1.11.4/jquery-ui.js"></script>

  </head>
  <body>

      <?php 
      include('fonctionsBDD.php');
      $bdd = connectionBDD(); 

       $idSalle = 0;
       $idUtilisateur = 0;
       $dateDebut = 0;
       $dateFin = 0;
      ?>

      

  
     <!-- Choix des filtres à afficher -->

     <p>Quels filtres afficher ?</p>

    <form action="" method="POST">
      <input type="checkbox" name="cbx-zones">Zones</input> 
      <input type="checkbox" mname="cbx-salles">Salles</input>
      <input type="checkbox" name="cbx-dates">Date</input> 
      <input type="checkbox" name="cbx-heures">Heures</input> 
      <p><input type="submit" /></p>
    </form>

    <!-- Zone filtres -->

    <div class="FiltreSalle">

    <form action="" method="POST">

    <?php 
      if (isset($_POST['cbx-zones'])) {
      /* COntenu d'un filtre ici */
}

    ?>
    <!-- Filtre par Area Name-->

<form action="" method="POST">
    <br /><br />

    <label>Choisir la zone </label><br />

    <select name="zone">
     
    <?php
     echo "      <option unselected>- - - Choisissez  une zone - - - </option>\n";
    $reponseSalle = $bdd->query('SELECT * FROM mrbs_area ORDER BY area_name');


     
    while ($donnees = $reponseSalle->fetch(PDO::FETCH_OBJ))
    {
    ?>

               <option value="<?php echo $donnees->id; ?>"> <?php echo $donnees->area_name; ?></option>
    <?php
    }
     
    ?>
    </select>

    <!-- Filtre par salle -->
       <br /><br />

    <label>Choisir la salle</label><br />

    <select name="salle">
     
    <?php
    
    echo "      <option unselected>- - - Choisissez  une salle - - - </option>\n";
    $reponseSalle = $bdd->query('SELECT * FROM mrbs_room ORDER BY room_name');


     
    while ($donnees = $reponseSalle->fetch(PDO::FETCH_OBJ))
    {
    ?>
               <option value="<?php echo $donnees->id; ?>"> <?php echo $donnees->room_name; ?></option>
    <?php
    }
     
    ?>
    </select>

    <!-- Filtre par utilisateurs-->

    <br /><br />

    <label>Choisir l'utilisateur</label><br />

    <select name="utilisateur">
     
    <?php
     
    echo "      <option unselected>- - - Choisissez  un utilisateur - - - </option>\n";
    $reponseSalle = $bdd->query('SELECT * FROM mrbs_users ORDER BY name');


     
    while ($donnees = $reponseSalle->fetch(PDO::FETCH_OBJ))
    {
    ?>
               <option value="<?php echo $donnees->id; ?>"> <?php echo $donnees->name; ?></option>
    <?php
    }
     
    ?>
    </select>




  <!-- Filtres par DatePicker -->
<br /> <br />
<script>
  $(function() {

    

    $( "#from" ).datepicker({
      defaultDate: "+1d",
      changeMonth: true,
      numberOfMonths: 1,
      dateFormat : '@',
      onClose: function( selectedDate ) {
        $( "#to" ).datepicker( "option", "minDate", selectedDate );
      }
    });
    $( "#to" ).datepicker({
      defaultDate: "+1w",
      changeMonth: true,
      numberOfMonths: 1,
      dateFormat : '@',
      onClose: function( selectedDate ) {
        $( "#from" ).datepicker( "option", "maxDate", selectedDate );
        var currentDate = $( ".selector" ).datepicker( "getDate" );
      }
    });
  });
  </script>
 
<label for="from">Du</label>
<input type="text" id="from" name="from">
<label for="to">Au</label>
<input type="text" id="to" name="to">



<input type='submit' value='Envoyer'><br /><br />

 </form>


  <!-- Traitement des données -->
 <?php

          /* Une salle seulement */

          if (isset($_POST['salle'])){
            $idSalle = $_POST['salle'];
            echo('La salle séléctionnée est :' . $idSalle  . '<br />');

            var_dump($idSalle);

            if ($idSalle == "- - - Choisissez  une salle - - - ") {
                $idSalle = "Non séléctionné";
                echo('La salle séléctionnée est :' . $idSalle  . '<br />');
            }

          } 
          
         
/*
           $idUtilisateur = $_POST['utilisateur'];
          $dateDebut = $_POST["from"];
          $dateFin = $_POST["to"];
          echo('L utilisateur séléctionné est :' . $idUtilisateur  . '<br />');
          echo('La date de début séléctionnée est :' . $dateDebut  . '<br />');
          echo('La date de fin séléctionnée est :' . $dateFin . '<br />');    */  
  ?>


<!-- Requêtage -->

<?php 

?>
<?php
 /*
  $req = $bdd->prepare('SELECT count(*), ?
    FROM mrbs_entry JOIN mrbs_room  ON mrbs_entry.room_id = mrbs_room.id JOIN mrbs_area ON mrbs_room.area_id = mrbs_area.id
    WHERE mrbs_entry.start_time BETWEEN UNIX_TIMESTAMP("'.$datedeb.'") and UNIX_TIMESTAMP("'.$datefin.'")
    or mrbs_entry.end_time BETWEEN UNIX_TIMESTAMP("'.$datedeb.'") and UNIX_TIMESTAMP("'.$datefin.'")
    and mrbs_entry.create_by like "'.$nomUtilisateur.'";');


  $req->execute(array());

  while ($donnees = $req->fetch())
  {
    echo '<li>' . $donnees['nom'] . ' (' . $donnees['prix'] . ' EUR)</li>';
  }
  echo '</ul>';

  $req->closeCursor(); */
  ?>


  </body>
</html>

当我添加一个var_dump($ idSalle);在这里:

 /* Une salle seulement */

      if (isset($_POST['salle'])){
        $idSalle = $_POST['salle'];
        echo('La salle séléctionnée est :' . $idSalle  . '<br />');

        var_dump($idSalle);

        if ($idSalle == "- - - Choisissez  une salle - - - ") {
            $idSalle = "Non séléctionné";
            echo('La salle séléctionnée est :' . $idSalle  . '<br />');
        }

      } 

我收到了这样的回复:string(32)“ - - - Choisissez une salle - - - ”

我尝试使用trim():

      if (isset($_POST['salle'])){
        $idSalle = trim($_POST['salle']);
        echo('La salle séléctionnée est :' . $idSalle  . '<br />');

        var_dump($idSalle);

        if ($idSalle == trim("- - - Choisissez  une salle - - -")) {
            $idSalle = "Non séléctionné";
            echo('La salle séléctionnée est :' . $idSalle  . '<br />');
        }

但结果是一样的。

所以,如果有人能帮助我理解......提前致谢。

1 个答案:

答案 0 :(得分:1)

我只是想通了。

条件语句失败的原因是因为该选项没有&#34;值&#34;。

将其更改为以下内容:

echo "      <option unselected value=\"- - - Choisissez  une salle - - - \">Choisissez une salle</option>\n";

因此,如果您愿意,可以删除trim()并保留空格。

但是,您可能希望从中删除尾随空格。如果这样做,您将需要对条件语句执行相同的操作。

传递测试并使用添加的else{...}

<?php 

if (isset($_POST['salle'])){
        $idSalle = $_POST['salle'];
        echo('La salle séléctionnée est :' . $idSalle  . '<br />');

        if ($idSalle == "- - - Choisissez  une salle - - - ") {
           /* DO NOT PASS HERE :( */

            $idSalle = "Non séléctionné";
            echo('La salle séléctionnée est :' . $idSalle  . '<br />');
        }
         else {
         echo "Xxxxxxxxxxxxx";
         }

      } 



?>

<form action="" method="POST">
    <br /><br />

<select name="salle">

    <?php

    echo "      <option unselected value=\"- - - Choisissez  une salle - - - \">Choisissez une salle</option>\n";
    echo "      <option value=\"123\">123</option>\n";
    ?>
    </select>

<input type='submit' value='Envoyer'><br /><br />

 </form>

测试 - 删除了if ($idSalle == "- - - Choisissez une salle - - -")

中的尾随空格

失败并使用添加的else{...}

<?php 

if (isset($_POST['salle'])){
        $idSalle = $_POST['salle'];
        echo('La salle séléctionnée est :' . $idSalle  . '<br />');

        if ($idSalle == "- - - Choisissez  une salle - - -") {
           /* DO NOT PASS HERE :( */

            $idSalle = "Non séléctionné";
            echo('La salle séléctionnée est :' . $idSalle  . '<br />');
        }
         else {
         echo "Xxxxxxxxxxxxx";
         }

      } 



?>

<form action="" method="POST">
    <br /><br />

<select name="salle">

    <?php

    echo "      <option unselected value=\"- - - Choisissez  une salle - - - \">Choisissez une salle</option>\n";
    echo "      <option value=\"123\">123</option>\n";
    ?>
    </select>

<input type='submit' value='Envoyer'><br /><br />

 </form>

即使在符合HTML5标准的浏览器上也是如此。