обновление нескольких строк с помощью php в базу данных mysql - PullRequest
1 голос
/ 13 ноября 2011

Я пытаюсь обновить несколько строк здесь. Однако мне не удается указать правильный идентификатор строки.

<?php
$table = 'DynamicPage';
$query = mysql_query(Query::SelectAllFrom($table));
// Count table rows 
$count = mysql_num_rows($query);
while ($row = mysql_fetch_array($query)) {
    $id[] = $row['ID'];
    echo '        
                    <h3>Column name: </h3><input type="text" name="name" maxlength="30" value="' . $row['Name'] . '" />

                    <h3>Tekst: </h3><textarea type="text" name="fulltext[]" maxlength="2000">' . $row['FullText'] . '</textarea>';
}
echo '<input name="Submit" type="submit" value="Submit" />
                      </form>';
// Check if button name "Submit" is active, do this 
if (isset($_POST['Submit'])) {
    for ($i = 0; $i < $count; $i++) {
        $queryUP = mysql_query("UPDATE $table SET Name='" . $_POST['name'] . "' WHERE id='??????????????'");
        $result  = mysql_query($queryUP);
    }
    if ($result) {
        header("location:index.php");
    }
}
?>

До сих пор я могу обновить первую строку (если id = '1') из последней <h3>Column name: </h3><input type="text" name="name"... Я знаю, что я не передаю идентификаторы в правильном направлении, но я должен понять,о синтаксисе.Если у кого-то есть идея, пожалуйста, дайте мне знать :) Спасибо

Ответы [ 4 ]

0 голосов
/ 13 ноября 2011

Возможно, вам следует добавить скрытое поле ввода с идентификаторами:

HTML-часть

<input type="hidden" name="id[]" value="'.$row['ID'].'" />
<h3>Column name: </h3><input type="text" name="name[]" maxlength="30" value="'.$row['Name'].'" />
<h3>Tekst: </h3><textarea name="fulltext[]" maxlength="2000">'.$row['FullText'].'</textarea>';

PHP

for($i=0; $i<count($_POST['ID']); ++$i){
//query goes here
}

SQL-запрос

UPDATE $table SET Name='{$_POST['name'][$i]}', Tekst='{$_POST['fulltext'][$i]}' WHERE id='{$_POST['id'][$i]}'

Это от головы до головы, не проверено, но должно дать вам представление.И, конечно же, экранируйте все поля ввода.

0 голосов
/ 13 ноября 2011
input type="text" ids="id[]" maxlength="30" value="'.$row['id'].'"
//then submit part
for($i=0; $i<count($_POST['id'];$i++) {
$queryUP = mysql_query("UPDATE $table SET Name='".$_POST['name']."' WHERE id='$_POST['id'][$i]'");
$result = mysql_query($queryUP);
}

0 голосов
/ 13 ноября 2011

Вы можете объединить $ row ['ID'] и $ row ['Name'], чтобы создать имя, которое вы сможете проанализировать позже

<h3>Column name: </h3><input type="text" name="name" maxlength="30" 
     value="' . $row['ID']  . '_' . $row['Name'] . '" />

тогда вы можете использовать что-то вроде:

list($name, $id) = explode($_POST['name'], '_');

** также обратите внимание, что у вас есть угроза безопасности при использовании ввода данных пользователем непосредственно внутри оператора SQL

0 голосов
/ 13 ноября 2011

Попробуйте после теста $_POST['Submit'] isset:

for($i=0;$i<sizeof($id);$i++) {
    $queryUP = mysql_query("UPDATE $table SET Name='".$_POST['name']."' WHERE id = " . $id[$i]);
    $result = mysql_query($queryUP);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...