有一行代码困扰我好多天了,百思不得其解
echo '<input type="checkbox" value="' . $row['id'] . '" name="todelete[]" />';
 这里的value值会自动填充到todelete数组里吗?文档里面说方法括号会导致$_POST创造一个数值,并且把value属性值全部赋给name属性的todelete数组。这是为什么呢?  谁能详细讲讲过程
 源文件:
 
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
 <head>
   <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
   <title>Make Me Elvis - Remove Email</title>
   <link rel="stylesheet" type="text/css" href="style.css" />
 </head>
 <body>
   <img src="blankface.jpg" width="161" height="350" alt="" style="float:right" />
   <img name="elvislogo" src="elvislogo.gif" width="229" height="32" border="0" alt="Make Me Elvis" />
   <p>Please select the email addresses to delete from the email list and click Remove.</p>
   <form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
 <?php
   $dbc = mysqli_connect('data.makemeelvis.com', 'elmer', 'theking', 'elvis_store')
     or die('Error connecting to MySQL server.');
   // Delete the customer rows (only if the form has been submitted)
   if (isset($_POST['submit'])) {
     foreach ($_POST['todelete'] as $delete_id) {
       $query = "DELETE FROM email_list WHERE id = $delete_id";
       mysqli_query($dbc, $query)
         or die('Error querying database.');
     } 
    echo 'Customer(s) removed.<br />';
   }
   // Display the customer rows with checkboxes for deleting
   $query = "SELECT * FROM email_list";
   $result = mysqli_query($dbc, $query);
   while ($row = mysqli_fetch_array($result)) {
     echo '<input type="checkbox" value="' . $row['id'] . '" name="todelete[]" />';
     echo $row['first_name'];
     echo ' ' . $row['last_name'];
     echo ' ' . $row['email'];
     echo '<br />';
   }
   mysqli_close($dbc);
 ?>
     <input type="submit" name="submit" value="Remove" />
   </form>
 </body>
 </html>
 

解决方案 »

  1.   

    楼主就是这样的啊。你有什么不解呢?
    <form action="" method="POST">
    <?PHP
    print_r($_POST);
    echo '<input type="checkbox" value="array 1" name="todelete[]" />';
    echo '<input type="checkbox" value="array 2" name="todelete[]" />';
    echo '<input type="checkbox" value="记得结贴" name="todelete_only" />';?>
    <input type="submit" />
    </form>
      

  2.   


    while ($row = mysqli_fetch_array($result)) {
      echo '<input type="checkbox" value="' . $row['id'] . '" name="todelete[]" />';
     //
      }
    因为参与了循环。会从Db 里面读取数据。。
      

  3.   

    (1)value="' . $row['id'] . '"  为什么$row['id']前后要加.  起什么用途?
     (2)todelete[]是个数组吗?什么时候创建的?点选checkbox值为什么会存进去?
     诚心指教
      

  4.   

    嗯,就我现在所知道的,
    (1)value="' . $row['id'] . '" 为什么$row['id']前后要加. 起什么用途?
     这个加“.”是为了连接起来,你也可以用“,”来连接,用这个也快一点,PHP里面的“.”是用来连接字符串
    的。
    第二个,我只是知道是个数组,至于你后面说的存数据进去,确实不知道是什么意思。