php - 隐藏值未发布

标签 php mysql post hidden

我在使用以下代码时遇到了一些问题。 隐藏字段不会发布到下一页。 我试图将它放在选项字段旁边,但这会产生一些不同的问题,例如复制下拉菜单。

谁能帮帮我?

<?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>

最佳答案

您至少应该使用 mysqli,确保您在安全页面上建立连接,例如:

// connect.php
<?php
function db(){
  return new mysqli('host', 'username', 'password', 'database');
}
?>

你还有其他一些问题。

1) 由于 mysql_fetch_array() 总是返回下一行结果,当 mysql_fetch_array() 在第二个 while 循环中再次调用时,$linefalsey,因为没有更多的行可以获取,所以循环不会运行。如果您像那样使用 fetch,您可以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。

关于php - 隐藏值未发布,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29022028/

相关文章:

php - 计算出勤时间戳2

php - 复制一个包含所有关系的 Doctrine 对象

mysql - 如果我在 MySQL 中删除一个设置了 foreignkey_checks=0 的表,FK 会发生什么?

mysql - MS Access - 使用表单添加新记录并向子表单添加信息

javascript - 如何在 Jquery Ajax 表单提交中添加错误处理

php - Facebook JS SDK & PHP SDK 无需刷新?

php - 用于股票系统的EAV模型方案还是其他方法?

php - 回显已发布 ID 的行名称,用于预选的表单值

JAVA:无法从 401 读取正文

php - 获取登录信息 - 该代码如何工作?