开发者

PHP/MYSQL/ XHTML FORM. How to update multi row table at once?

I have following example of the PHP/SQL which worked perfectly when editing one row & saving changes.

It is working based on POST/GET method - where URL is setting up which row ID to edit / save.

form -> post id & live values

seperate php file -> get 'id' and change row with this 'id'.

<?php

session_name('users');
session_set_cookie_params(2*7*24*60*60);
session_start();

define('INCLUDE_CHECK',true);

require 'connect.php';
require 'functions.php';

if(!$_SESSION['id']) {
    header ("Location: index.php"); 
}


//Function to sanitize values received from the form. Prevents SQL injection
function clean($str) {
    $str = @trim($str);
    if(get_magic_quotes_gpc()) {
        $str = stripslashes($str);
    }

    return mysql_real_escape_string($str);
}

//Sanitize the POST values
$id = clean($_P开发者_如何学JAVAOST['id']);
$usr2 = $_SESSION['usr'];
$live = (isset($_POST['live']))?1:0;
$updated = date("F j, Y, g:i a",time()+60*60);
$title = clean($_POST['title']);
$content = clean($_POST['content']);

//Create INSERT query
$qry = "UPDATE table SET live = '$live' WHERE id='".mysql_real_escape_string($_POST['id']). "'  ";
$result = mysql_query($qry);
echo mysql_error();

//Check whether the query was successful or not
if($result) {
    header("location: notes.php");
    exit();
}else {
    die("Query failed");

}

?>

My question is how to update multiple rows table/form like this one?


The best way to do it is with a simple for loop.

foreach ($_POST as $key=>$value) {
    // You didn't provide the names of the fields, so you will need to validate them here yourself.
    // I usually name them with a prefix, like somefield_3, and then I can use substr() to determine if the field is the one I'm looking for.

    $result=mysql_query("UPDATE whatever SET somefield=1 WHERE id=" . mysql_real_escape_string($key) . ";");

    //etc., etc.
}

Since you are only setting one boolean field, you could also do something like this:

UPDATE table SET live=1 WHERE id IN (1,2,3,4,5);

But I'd recommend doing the loop, since you will inevitably need to update other fields at some point with this query.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜