首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >表格及表格提交

表格及表格提交
EN

Stack Overflow用户
提问于 2016-11-01 12:52:51
回答 2查看 1.3K关注 0票数 0

我必须提交数据库中不同单元格中的所有值,当我单击submit时,只有一个提交,只插入最后一个学生和最后一个科目标记示例(退缩和物理):

代码语言:javascript
复制
<tbody>
    <?php
    $query="SELECT *FROM `students` WHERE `standard`='".$standard."'";
    $ex_query=mysql_query($query);
    while($row=mysql_fetch_array($ex_query)) {
        $id=$row['id'];
        $fname=$row['fname'];
        $lname=$row['lname'];
        $rollno = $row['rollno'];
        $standard = $row['standard'];
        $section = $row['section'];
    ?>

                <tr>
                    <th scope="row">1</th>
                    <td><?php echo $fname; ?> <?php echo $lname; ?>
                        <input type="hidden" name="name" value="<?php echo $fname; ?> <?php echo $lname; ?>">
                    </td>
                    <td><?php echo $standard; ?>
                        <input type="hidden" name="standard" value="<?php echo $standard; ?>">
                    </td>
                    <td><?php echo $section; ?>
                        <input type="hidden" name="section" value="<?php echo $section; ?>">
                    </td>
                    <?php  $querysub="SELECT *FROM `subject`";
                            $ex_querysub=mysql_query($querysub);
                            while($row=mysql_fetch_array($ex_querysub))
                                {
                    $id=$row['id'];
                    $subject=$row['subject'];
                 ?>

                    <td><input type="hidden" name="subject" value="<?php echo $subject; ?>"><input type="text" class="form-control col-md-7 col-xs-12" name="marks"></td>
                    <?php } ?>
                    <!-- <td><a href="javascript:void(0)" onClick="edit(<?php echo $id ?>)"><i class="fa fa-edit"></i></a></td>
                    <td><a href="javascript:void(0)" onClick="deldata(<?php echo $id ?>)"><i class="fa fa-trash-o"></i></a></td> -->
                </tr>
            <?php } 
        ?>                              
    </tbody>
</table>
<input type="submit" name="submit">


<?php


if(isset($_POST['submit'])) {

    $id 
    $name = $_POST['name'];
    $standard = $_POST['standard'];
    $section = $_POST['section'];
    $subject = $_POST['subject'];
    $marks = $_POST['marks'];

    $query="INSERT INTO `marks` (`id` ,`name` ,`standard` ,`section`  ,`subject` ,`marks`) VALUES (NULL, '$name', '$standard', '$section', '$subject', '$marks')";
    $ex_query=mysql_query($query); ?>
    <!-- <script>
        window.location.href="view-standard.php";
    </script> -->   <?php
}
}
?>
</form>
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-11-01 13:01:07

可以将行索引添加到每个元素名中,如下所示

代码语言:javascript
复制
<tr>
  <th scope="row">1
  </th>
  <td>
    <?php echo $fname; ?> 
    <?php echo $lname; ?>
    <input type="hidden" name="name[]" value="<?php echo $fname; ?> <?php echo $lname; ?>">
  </td>
  <td>
    <?php echo $standard; ?>
    <input type="hidden" name="standard[]" value="<?php echo $standard; ?>">
  </td>
  <td>
    <?php echo $section; ?>
    <input type="hidden" name="section[]" value="<?php echo $section; ?>">
  </td>
  <?php  $querysub="SELECT *FROM `subject`";
$ex_querysub=mysql_query($querysub);
while($row=mysql_fetch_array($ex_querysub))
{
$id=$row['id'];
$subject=$row['subject'];
?>
  <td>
    <input type="hidden" name="subject[]" value="<?php echo $subject; ?>">
    <input type="text" class="form-control col-md-7 col-xs-12" name="marks">
  </td>
  <?php } ?>
  <!-- <td><a href="javascript:void(0)" onClick="edit(<?php echo $id ?>)"><i class="fa fa-edit"></i></a></td>
<td><a href="javascript:void(0)" onClick="deldata(<?php echo $id ?>)"><i class="fa fa-trash-o"></i></a></td> -->
</tr>

例如,当您访问$_POST['name']时,您将得到一个包含所有值的数组,您可以使用一个循环并将它们插入数据库中。

票数 0
EN

Stack Overflow用户

发布于 2016-11-02 09:55:18

代码语言:javascript
复制
$i=0;
while ($row = mysql_fetch_assoc($ex_querysub)) {
    ?>
    <td>
        <input type="text" name="form[<?php echo $i; ?>]['name']" value="<?php echo $row['name']; ?>" />
    </td>
    <td>
        <input type="text" name="form[<?php echo $i; ?>]['section']" value="<?php echo $row['section']; ?>" />
    </td>
    .... you got the idea
    <?php

    $i++;
}

始终使用mysql_fetch_assoc而不是mysql_fetch_array

以及行动本身

代码语言:javascript
复制
<?php

if (isset($_POST['form'])) {
     foreach ($_POST['form'] as $row) {
          $sql = sprintf("INSERT INTO marks SET 
          name = '%s',
          section = '%s'
          ... add all fields here
           ", 
          strip_tags($row['name']), // you should always sanitize your input from user. Or you'll have SQL Injection problems
          strip_tags($row['section']),
          );

          mysql_query($sql);
     }
}

我一直倾向于使用第二种形式的INSERT语句http://dev.mysql.com/doc/refman/5.7/en/insert.html。它类似于更新,而且更容易理解。特别是如果您有大的插入查询。通常,插入时应该跳过主键,即auto_increment。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40360461

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档