PHP 使用会话 select 下拉选项

PHP use session to select dropdown option

我有这个上传表单,我想在会话的下拉列表中保留所选选项,以便在提交后显示最后的选择,例如我选择了 'colour' 选项,提交后颜色在下拉列表中仍然处于选中状态。 我回显 $_SESSION['testname'](就在第一个单选按钮之前),它返回 "colour",但在我想回显 'selected' 的选项标签中,如果 "colour" 是最后的选择,它 returns 没什么!我错过了什么?

<?php
session_start();
if(isset($_POST['kategorie'])) {
$_SESSION['testname']=$_POST['kategorie']; }
?>

<?php

$con = mysqli_connect("localhost","Melvin","") or die ("could not connect to server: " . mysqli_connect_error($con));
mysqli_select_db($con, "galerie") or die ("Could not connect to database: " . mysqli_error($con));

if(isset($_POST['submit'])){

$name = $_FILES['file']['name'];
$sub_name = substr($name, 0, -4);
$img_ext = ".jpg";
$tmp_name = $_FILES['file']['tmp_name'];
$location = '_images/_galerie/';
$target = '_images/_galerie/' .$name;

 if(move_uploaded_file($tmp_name,$location.$name)){
  
  echo "file uploaded";
  
  $nam = $_POST['nam'];
  $kategorie = $_POST['kategorie'];
  $size = $_POST['size'];
  
  if ($size == 'thumb') {
   // add "thumb" between filename and extension    
   $extension_pos = strrpos($target, '.'); // find position of the last dot, so where the extension starts
   $thumb = substr($target, 0, $extension_pos) . '_thumb' . substr($target, $extension_pos);   
   $query = mysqli_query($con , "INSERT INTO images(img_name,img_title,img_cat,img_size)VALUES('".$thumb."','$nam','$kategorie','$size')"); 
  } else {
   $query = mysqli_query($con , "INSERT INTO images(img_name,img_title,img_cat,img_size)VALUES('".$target."','$nam','$kategorie','$size')"); 
  }  
  
  function renameImg() {
   $name = $_FILES['file']['name'];
   $target = '_images/_galerie/' .$name;
   $extension_pos = strrpos($target, '.');
   $thumb = substr($target, 0, $extension_pos) . '_thumb' . substr($target, $extension_pos);
   rename($target, $thumb);
   //echo $name . " replaced with " . $thumb;
  };
  renameImg();
  
 } else {
  
  echo "file not uploaded";
   
 }

}
?>

<div style="margin:20px 0 40px 0;">
    <form action="upload.php" method="POST" enctype="multipart/form-data">    
        Upload: <input type="file" name="file">
        Title: <input type="text" name="nam" value="Tattoo Gallery">
        Category: <select name="kategorie" id="selectKat">            
            <option value="black" <?php if(isset($_SESSION['kategorie']) == "black") { echo ' selected';} ?>>Black and white</option>
            <option value="colour" <?php if(isset($_SESSION['kategorie']) == "colour") { echo ' selected';} ?>>Colour</option>                   
        </select>
        
         <br>
            <?php 
    echo $_SESSION['testname'];
    ?>
         
        <input type="radio" name="size" value="full" id="regularRadio" checked="checked">
        <label for="regularRadio">Full size</label>
        <br>         
        <input type="radio" name="size" value="thumb" id="thumbRadio">
        <label for="thumbRadio">Thumbnail</label>
        <br>
        
        <input type="submit" name="submit">
    </form>
</div>

<?php
$result = mysqli_query($con, "SELECT * FROM images WHERE img_size='thumb'");

while($row = mysqli_fetch_array($result)){ 
 echo "<img src=".$row['img_name'] . " &nbsp; class='thumbnails' style='display:inline;float:left;'>";
  
}
?>

您不得使用 isset() 函数。此函数return True or False.

您只需将 $_POST['kategorie'] 或 $_SESSION['testname'] 的值(如我所见)与您的文本("color" 或 "black"), 像这样:

if ($_SESSION['kategorie'] == "black") { echo ' selected'; }