Обновите mysql с данными $ _POST из цикла while - PullRequest
0 голосов
/ 18 июня 2009

Обновление mysql с данными $ _POST из цикла while

Я пытаюсь обдумать это, но я терплю неудачу: [

У меня есть 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, но мне нужен способ сохранить их все, отправить. Есть идеи?

Ответы [ 3 ]

2 голосов
/ 18 июня 2009

Поскольку вы выводите каждый блок в отдельном <form>, вы получите только один обратно. Если вы измените:

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

до

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

Тогда вы сможете посмотреть, какая из них была отправлена ​​обратно.

2 голосов
/ 18 июня 2009

Я не думаю, что ваш подход будет работать, потому что вы генерируете несколько форм, поэтому PHP получит только одну отправленную форму, и вы не сможете сохранить все изменения на своей странице.

Возможно, вы захотите использовать одну форму и назвать свои входные данные в виде массива (см. http://php.net/manual/en/faq.html.php#faq.html.arrays).

например. (Упрощенный)

<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) после отправки этой формы, вы должны увидеть, что зациклить / обработать будет довольно просто.

0 голосов
/ 18 июня 2009

сделать одну форму,

и в этой форме установите все поля,

одна кнопка для отправки,

присваивает элементам ввода уникальный идентификатор для каждой строки, как вы делаете для формы с идентификатором поля

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...