我在使用以下代码时遇到了一些问题。 隐藏字段未发布到下一页。 我试图将它放在选项字段旁边,但这会产生一些不同的问题,比如复制dropdownmenue。
有人可以帮我吗?
<?php
$dbhost = 'localhost';
$dbuser = '-----';
$dbpass = '-----';
$db = '-----';
$conn = mysql_connect($dbhost,$dbuser,$dbpass);
mysql_select_db($db);
$query = "SELECT * FROM Eintraege"; $result = mysql_query($query);
?>
<form action="deletescript.php" method="post">
<select name="loeschen">
<?php
while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) {
?>
<option value="<?php echo $line['ID'];?>"><?php echo $line['Titel'];?></option>
<?php
}
?>
</select>
<?php
while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) {
?>
<input type="hidden" name="titel" value="<?php echo $line['Titel'];?>" />
<?php
}
?>
Vorname <br /><input type="text" name="name" value="" class="text" /><br /><br />
Name <br /><input type="text" name="vorname" value="" class="text" /><br /><br />
Email <br /><input type="text" name="email" value="" class="text" /><br /><br />
<input type="submit" name="submit" />
</form>
答案 0 :(得分:0)
您至少应该使用mysqli
,确保您在安全页面上拥有连接,例如:
// connect.php
<?php
function db(){
return new mysqli('host', 'username', 'password', 'database');
}
?>
你还有其他一些问题。
1)由于mysql_fetch_array()
总是返回下一行结果,当您在第二个while循环中再次调用mysql_fetch_array()
时,$line
为falsey
,因为没有要获取更多行,因此循环不会运行。如果你正在使用这样的抓取,你可以reset($line)
,但我建议不这样做。
2)您不能两次使用相同的HTML name
属性,除非您在其末尾添加[]
。然后,您可以在PHP中以数组形式访问它。
// otherpage.php
<?php
include 'connect.php'; $db = db(); $opts = $hdns = '';
if($q = $db->query('SELECT * FROM Eintraege')){
if($q->num_rows > 0){
while($r = $q->fetch_object()){
$t = $r->Titel;
$opts .= "<option value='$t'>$t</option>";
$hdns .= "<input name='titel[]' type='hidden' value='$t' />";
}
// now you can echo $opts and $hdns where you want
}
else{
$errors[] = 'No result rows were found';
}
$q->free();
}
else{
$errors[] = 'database connection failure';
}
$db->close(); if(isset($errors))die(implode(' & ', $errors));
?>
要在您提交的页面上获取titel
个命名输入,请执行以下操作:
<?php
if(isset($_POST['titel'])){
// get each one
foreach($_POST['titel'] as $t){
// $t is each one
}
}
?>
请注意,将数据放入隐藏的输入然后将其发送回服务器通常是没有意义的,因为无论如何您都可以访问该信息。如果您希望根据客户端输入访问数据库,您将需要学习AJAX。