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


Using a if in an if with a string check don't work

我不明白为什么我的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-时,页面会响应"La salle séléctionnée est:-Choisisez une salle-a salle séléectionée est:Non-selectioné"。

这是我的完整代码:

<!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 />');
        }
      } 

我得到了这样的回应:字符串(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 />');
        }

但结果是一样的。

所以如果有人能帮我理解。。提前谢谢。

我刚刚想明白了。

条件语句失败的原因是该选项没有"值"。

将其更改为以下内容:

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的浏览器上。