使用while循环中的$ _POST数据更新mysql

时间:2009-06-18 12:22:09

标签: php mysql post

使用while循环

中的$ _POST数据更新mysql

我试图让这个问题绕过我的脑袋,但我很难做到:[

我在数据库中有3行,我在while()循环中回显。 用户可以更改search_terms,然后将字段保存在mysql中,但我不知道如何执行此操作,因为有3行,所以我不能这样做;

<?php
    if($_POST['update']) {
        mysql_query("....");
    }
?>

这是我的代码;

<?php
    $box_query = mysql_query("SELECT * FROM `ta_boxs`");
    while($box = mysql_fetch_array($box_query)) {

        echo '<div class="box_content">';
        echo '<div class="box">'."\n";
        echo '<span class="box_top"></span>';
        echo '<div class="box_header"><input type="text" id="title" name="title" class="title-input" value="'.$box['title'].'" /></div>';
        echo '<span class="sept"></span>';
        echo '<div class="admin-back">';
        echo '<form id="form-'.$box['id'].'" name="form-'.$box['id'].'" method="post" action="">';
        echo '<p class="sub"><span>Includes:</span> Search for these terms in Twitter Feeds.</p>';
        echo '<p class="sub-small">Please enter one word per field or click "add word".</p>';
        echo '<p><input type="text" id="search_term_1" name="search_term_1" value="'.$box['search_term_1'].'" class="term-input" />';
        echo '<p><input type="text" id="search_term_2" name="search_term_2" value="'.$box['search_term_2'].'" class="term-input" />';
        echo '<p><input type="text" id="search_term_3" name="search_term_3" value="'.$box['search_term_3'].'" class="term-input" />';
        echo '<span class="hr"></span>';
        echo '<p class="sub"><span>Excludes:</span> Ignore these terms in Twitter Feeds.</p>';
        echo '<p class="sub-small">Please enter one word per field or click "add word".</p>';
        echo '<p><input type="text" id="search_term_1" name="search_term_1" value="'.$box['exc_search_term_1'].'" class="term-input" />';
        echo '<p><input type="text" id="search_term_2" name="search_term_2" value="'.$box['exc_search_term_2'].'" class="term-input" />';
        echo '<p><input type="text" id="search_term_3" name="search_term_3" value="'.$box['exc_search_term_3'].'" class="term-input" />';
        echo '<input type="hidden" id="update" name="update" value="yes" />'
        echo '<p><input type="submit" id="update_'.$box['id'].'" name="update_'.$box['id'].'" value="Update" /></p>';
        echo '</form>';
        echo '</div>';
        echo '</div>'."\n";
        echo '<span class="box_bottom"></span>';
        echo '</div>';  
    }
?>

可能有1个输出,或100,但我需要一种方法来保存它们,onsubmit。有什么想法吗?

3 个答案:

答案 0 :(得分:2)

由于您输出的是不同<form>的每个方框,因此您只需返回一个方框。 如果你改变:

<input type="hidden" id="update" name="update" value="yes" />

<input type="hidden" id="update" name="update" value="' . $box['id'] . '" />

然后你就能看到哪一个被贴回来了。

答案 1 :(得分:2)

我不认为您的方法会起作用,因为您正在生成多个表单,因此PHP只会获得一个提交的表单,并且您将无法保存页面上的所有更改。

您可能需要考虑使用一个表单并将输入命名为数组(请参阅http://php.net/manual/en/faq.html.php#faq.html.arrays)。

e.g。 (简化的)

<form method="post">

<?php while($box = mysql_fetch_array($box_query)): ?>

<!-- div box thing -->  

<input name="box[<?php echo $box['id'];?>][search_term_1]" value="<?php echo $box['search_term_1']; ?>">
<input name="box[<?php echo $box['id'];?>][search_term_2]" value="<?php echo $box['search_term_2']; ?>">
<input name="box[<?php echo $box['id'];?>][search_term_3]" value="<?php echo $box['search_term_3']; ?>">

<input name="box[<?php echo $box['id'];?>][exc_search_term_1]" value="<?php echo $box['exc_search_term_1']; ?>">
<input name="box[<?php echo $box['id'];?>][exc_search_term_2]" value="<?php echo $box['exc_search_term_2']; ?>">
<input name="box[<?php echo $box['id'];?>][exc_search_term_3]" value="<?php echo $box['exc_search_term_3']; ?>">

<!-- end div box thing -->

<?php endwhile; ?>

</form>

如果您在提交该表单后print_r($_POST),您应该会看到循环/处理相当容易。

答案 2 :(得分:0)

制作一个表格,

并以此形式设置所有字段

提交一个按钮,

将输入元素的唯一ID赋予每一行,就像使用框ID

一样