обновление бд mysql

Runapa

Постоялец
Регистрация
30 Окт 2010
Сообщения
63
Реакции
5
Помогите плиз обновить таблицу.

Запросом из бд я вытаскиваю данные в форму и вывожу таким способом:

PHP:
while ($row = mysql_fetch_assoc($result_langs))
                {
    $langs .= "<tr>";
    $langs .= "<td>".$row['string']."</td>";
    $langs .= "<td><textarea name='name_rus' style='font-size:12px;'>".$row['name_rus']."</textarea></td>";
    $langs .= "<td><textarea name='name_eng' style='font-size:12px;'>".$row['name_eng']."</textarea></td>";
    $langs .= "<td><textarea name='name_lat' style='font-size:12px;'>".$row['name_lat']."</textarea></td>";
    $langs .= "<td><textarea name='name_est' style='font-size:12px;'>".$row['name_est']."</textarea></td>";
    $langs .= "</tr>";   
                }
 
    echo $langs;

А как теперь всё это отправить обратно в бд с внесенными изменениями ?
 
сам запрос к БД будет выглядеть приблизительно так:
PHP:
mysql_query("UPDATE table SET `name_rus`='".$_POST[name_rus]."', `name_eng`='".$_POST[name_eng]."', `name_lat`='".$_POST[name_lat]."', `name_lat`='".$_POST[name_lat]."', `name_est`='".$_POST[name_est]."' ");
при условии что данные которые вы выводите, обернуты в форму типа:
PHP:
$langs .="<form action="" method="post">";
while ($row = mysql_fetch_assoc($result_langs))
                {
    $langs .= "<tr>";
    $langs .= "<td>".$row['string']."</td>";
    $langs .= "<td><textarea name='name_rus' style='font-size:12px;'>".$row['name_rus']."</textarea></td>";
    $langs .= "<td><textarea name='name_eng' style='font-size:12px;'>".$row['name_eng']."</textarea></td>";
    $langs .= "<td><textarea name='name_lat' style='font-size:12px;'>".$row['name_lat']."</textarea></td>";
    $langs .= "<td><textarea name='name_est' style='font-size:12px;'>".$row['name_est']."</textarea></td>";
    $langs .= "</tr>"; 
                }
$langs.="<input type="submit" value="submit"></form>";
ну и естественно в моем примере не учтена проверка безопасности входных данных...
 
Что-то этот код обновил всю таблицу последним айди.
 
Гм... Вы что, с php и mysql совсем не знакомы? Может лучше для начала какие-то книги почитать? Здесь: Для просмотра ссылки Войди или Зарегистрируйся много рекомендаций для начинающих...
По существу вопроса - добавьте ид в скрытое поле и примените его в запросе к БД:
PHP:
$langs .="<form action="" method="post">";
while ($row = mysql_fetch_assoc($result_langs))
                {
    $langs .= "<tr>";
    $langs .= "<td><input type='hidden' name='id' value='".$row['id']."'>".$row['string']."</td>";
    $langs .= "<td><textarea name='name_rus' style='font-size:12px;'>".$row['name_rus']."</textarea></td>";
    $langs .= "<td><textarea name='name_eng' style='font-size:12px;'>".$row['name_eng']."</textarea></td>";
    $langs .= "<td><textarea name='name_lat' style='font-size:12px;'>".$row['name_lat']."</textarea></td>";
    $langs .= "<td><textarea name='name_est' style='font-size:12px;'>".$row['name_est']."</textarea></td>";
    $langs .= "</tr>";
                }
$langs.="<input type="submit" value="submit"></form>";
 
mysql_query("UPDATE table SET `name_rus`='".$_POST[name_rus]."', `name_eng`='".$_POST[name_eng]."', `name_lat`='".$_POST[name_lat]."', `name_lat`='".$_POST[name_lat]."', `name_est`='".$_POST[name_est]."' WHERE `id`='".$_POST['id']."' ");
 
Теперь обновляет только последний айди.
А книжки я читаю, да..

всё еще актуально.
 
конечно он будет обновлять последнюю строку так как запрос находится в не цикла вывода данных
 
конечно он будет обновлять последнюю строку так как запрос находится в не цикла вывода данных
не в том прикол... в $_POST массиве из формы передаются данные только последнего цикла (каждый следующий элемент накладывается на предыдущий так как имена одинаковые )
Для того, чтоб получить все данные их нужно в многоуровневый массив затолкать...
PHP:
$langs .="<form action="" method="post">";
while ($row = mysql_fetch_assoc($result_langs))
                {
    $langs .= "<tr>";
    $langs .= "<td><input type='hidden' name='id[]' value='".$row['id']."'>".$row['string']."</td>";
    $langs .= "<td><textarea name='name_rus[]' style='font-size:12px;'>".$row['name_rus']."</textarea></td>";
    $langs .= "<td><textarea name='name_eng[]' style='font-size:12px;'>".$row['name_eng']."</textarea></td>";
    $langs .= "<td><textarea name='name_lat[]' style='font-size:12px;'>".$row['name_lat']."</textarea></td>";
    $langs .= "<td><textarea name='name_est[]' style='font-size:12px;'>".$row['name_est']."</textarea></td>";
    $langs .= "</tr>";
                }
$langs.="<input type="submit" value="submit"></form>";
а полученный многомерный массив растаскать на запросы циклом:
PHP:
$k=count($_POST['id']);
for ($i=0; $i<$k $i++ ){
mysql_query("UPDATE table SET `name_rus`='".$_POST[name_rus][$i]."', `name_eng`='".$_POST[name_eng][$i]."', `name_lat`='".$_POST[name_lat][$i]."', `name_lat`='".$_POST[name_lat][$i]."', `name_est`='".$_POST[name_est][$i]."' WHERE `id`='".$_POST['id'][$i]."' ");
}
 
Назад
Сверху