显示所有行并通过提交更新所有行 [英] Display all rows and update all rows by a submit

查看:97
本文介绍了显示所有行并通过提交更新所有行的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想通过php查询显示所有行,并通过sql中的提交按钮更新所有行.我可以通过以下方式通过自己的提交按钮显示所有行并更新特定行.但是我想通过一个提交按钮来全部更新.

I want to display all rows by a php query and update all by a submit button in sql. I this way below a can display all row and update particular row by its own submit button. But I want to update all by a single submit button.

为此,我非常感谢,我想循环进行更新.但在这种情况下,我不明白该怎么做.

So for do it, I thank, I want to loop for update. But I cannot understand how to do it in this case.

这是我的代码:

<?php
include_once('../db.php');
global $db;
$result = mysqli_query($dbh,"SELECT * FROM ppad");
if(!$result) {
    die("Database query failed: " . mysqli_error());
}
    while($row = mysqli_fetch_assoc($result)) {
    $id=$row['id']; 
    $name=$row['name'];
    $date=$row['date'];
    $title=$row['title'];
    $Detail=$row['Detail'];

echo '<form action="padSproccess.php" method="POST">        
<table width="100%" border="1">
<tr>
    <td width="10%">Date</td>
    <td width="14%">Time</td>
    <td width="20%">Name(url)</td>
    <td width="30%">Detail</td>
</tr>
<tr>
    <td width="10%"><input type="text" name="date" maxlength="2" value="'.$date.'"></td>
    <td width="14%"><input type="text" name="title" maxlength="50" value="'.$title.'"></td>
    <td width="20%"><input type="text" name="name" maxlength="50" value="'.$name.'"></td>
    <td width="30%"><input type="text" name="Detail" maxlength="100" value="'.$Detail.'"></td>
    <input type="hidden" name="id" value="'.$id.'">
    </tr>
</table>
    <input type="submit" name="submit" id="submit" value="Submit">
</form>';}
?>

padSproccess.php

include("../db.php");
global $db;
if(isset($_POST['submit'])){
    $date = mysqli_real_escape_string($dbh,$_POST['date']);
    $title = mysqli_real_escape_string($dbh,$_POST['title']);
    $name = mysqli_real_escape_string($dbh,$_POST['name']);
    $Detail = mysqli_real_escape_string($dbh,$_POST['Detail']);
    $id = mysqli_real_escape_string($dbh,$_POST['id']);
    // update data in mysql database 
    $update = mysqli_query($dbh,"UPDATE ppad SET date='$date', month='$month', name='$name', Detail='$Detail' WHERE id = '$id'"); 

// if successfully updated. 
}

推荐答案

您首先需要准备的是一个总体表单,而不是每个表单都有一个表单(除非您想使用JavaScript来触发Ajax调用).因此,您需要做的是确保每一行都可以与一个特定的ID相关联:

What you need to do first is have an overall form, not a form for each (unless you want to throw in javascript to fire off ajax calls). So what you'll need to do is make sure each row can be associated with a specific id:

<?php

include_once '../db.php';

$result = mysqli_query($dbh, "SELECT * FROM ppad");

if(!$result) {
    die("Database query failed: " . mysqli_error());
}

?>

<form action="padSproccess.php" method="POST">
    <table width="100%" border="1">
        <thead>
            <tr>
                <td width="10%">Date</td>
                <td width="14%">Time</td>
                <td width="20%">Name(url)</td>
                <td width="30%">Detail</td>
            </tr>
        </thead>
        <tbody>
        <?php

            while($row = mysqli_fetch_assoc($result)) {
                $id     = $row['id']; 
                $name   = $row['name'];
                $date   = $row['date'];
                $title  = $row['title'];
                $Detail = $row['Detail'];

                echo '
                    <tr>
                        <td width="10%"><input type="text" name="date[' . $id . ']" maxlength="2" value="'.$date.'"></td>
                        <td width="14%"><input type="text" name="title[' . $id . ']" maxlength="50" value="'.$title.'"></td>
                        <td width="20%"><input type="text" name="name[' . $id . ']" maxlength="50" value="'.$name.'"></td>
                        <td width="30%"><input type="text" name="Detail[' . $id . ']" maxlength="100" value="'.$Detail.'"></td>
                    </tr>
                ';
            }

        ?>
        </tbody>
    </table>
    <input type="submit" name="submit" id="submit" value="Submit">
</form>

然后在padSproccess.php中,您将收到一个namesdatestitlesDetails的数组,每个数组均由该行的ID键.这样就变成了这样的东西:

Then in padSproccess.php you'll receive an array of names, dates, titles and Details, each one keyed by the ID of the row. So that'll change to something like this:

<?php

include "../db.php";

if(isset($_POST['submit'])){
    $ids = array_keys($_POST['name']);

    foreach ($ids as $id) {
        $date   = mysqli_real_escape_string($dbh,$_POST['date'][$id]);
        $title  = mysqli_real_escape_string($dbh,$_POST['title'][$id]);
        $name   = mysqli_real_escape_string($dbh,$_POST['name'][$id]);
        $Detail = mysqli_real_escape_string($dbh,$_POST['Detail'][$id]);
        $id     = mysqli_real_escape_string($id);
        // update data in mysql database 
        $update = mysqli_query($dbh,"UPDATE ppad SET date='$date', month='$month', name='$name', Detail='$Detail' WHERE id = '$id'"); 
    }

// if successfully updated. 
}

这篇关于显示所有行并通过提交更新所有行的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆