未发布隐藏价值

时间:2015-03-12 23:07:38

标签: php mysql post hidden

我在使用以下代码时遇到了一些问题。 隐藏字段未发布到下一页。 我试图将它放在选项字段旁边,但这会产生一些不同的问题,比如复制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>

1 个答案:

答案 0 :(得分:0)

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

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

你还有其他一些问题。

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