将下拉列表值保存到php会话

时间:2015-04-01 19:20:03

标签: php mysql

我创建了一个下拉列表,该列表由来自mysql db的数据填充,我试图将所选值保存在会话变量中,但我不知道如何写这个(***在哪里)?是否需要将其发布到服务器端,尽管它全部都在PHP中?

    <?php
$servername1 = "localhost";
$username1 = "root";
$password1 = "";
$dbname1 = "gpdb1";
$conn1 = new mysqli($servername1, $username1, $password1, $dbname1);
if ($conn1->connect_error) {
die("connection failed: " . $conn1->connect_error);
}
$sql2 = "SELECT DoctorID, Title, Surname FROM doctors";
$result2 = $conn1->query($sql2);
echo "<select name='doctor' value=''><option>Select a Doctor</option>";
if ($result2->num_rows > 0) {
foreach($result2 as $row2) 
{echo "<option value=".$row2['DoctorID'].">".$row2['Title']."     ".$row2['Surname']."</option>"; 
}
}echo "</select>";
$_SESSION['selected']=***;
if (isset($_SESSION['selected'])){
echo $SESSION['selected'];}
?>

谢谢:)

2 个答案:

答案 0 :(得分:0)

首先,我建议您缩进代码,以提高可读性!

HTML属性&#34;值&#34;在您的代码中没有用处,您可以删除它。

然后,使用isset()控制会话字段没有用,因为您正在上面设置它。

我认为您只需控制帖子字段中的给定值是否正确。

您要寻找的是:

$_SESSION['selected'] = $_POST['doctor'];

答案 1 :(得分:0)

首先启用错误报告:

<?php
// Turn off error reporting
error_reporting(0);

// Report runtime errors
error_reporting(E_ERROR | E_WARNING | E_PARSE);

// Report all errors
error_reporting(E_ALL);

// Same as error_reporting(E_ALL);
ini_set("error_reporting", E_ALL);

// Report all errors except E_NOTICE
error_reporting(E_ALL & ~E_NOTICE);
?>

然后你应该在你的html代码中正确设置所有相关的标签,但为了这个,你需要在select元素上使用“name”标签。然后确保执行脚本时的html代码看起来像这样(

<!DOCTYPE html>
<html>
<body>

<form action="do_stuff.php">
<select name="doctor">
  <!-- your loop generates this part -->

  <option value="doc1">Doctor 1</option>
  <option value="doc2">Doctor 2</option>
  <option value="doc3">Doctor 3</option>
  <option value="doc4">Doctor 4</option>
</select>
<input type="submit">
</form>

</body>
</html>

在您的php文件中,检查表单是否已提交后,应检查$_POST['doctor']。然后就像@Kern用适当的变量指向集合$_SESSION['selected']

为了便于调试,请使用var_dump($variable),这有助于您在大多数情况下找到琐碎的错误。所以在脚本开头的var_dump($ _ POST)找出发生了什么。