[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: обновление полей в mysql из php
soup-bubble
Добрый день. Помогите пожалуйста справиться с задачей:
есть БД structure, в ней 3 колонки (id, data, parent id).
Необходимо в php странице вывести все поля из колонки data - каждое поле в input, а так же рядом с каждой должен быть пустой input, в котором пользователь водит цифру. После того как все поля заполнены нажимается кнопка сохранить - и поля в БД в колонке parent id обновляются данными из пустых inputov в соответствии с каждой строкой. Буду очень признателен за помощь!



Спустя 3 часа, 46 минут (25.12.2011 - 19:51) inpost написал(а):
soup-bubble
Ты покажи свой код, как сам пытался сделать.
И в чём, собственно, проблема твоя? Хочешь, чтобы за тебя всё написали, а сам не предпринял усилий?

Спустя 18 часов, 59 минут, 16 секунд (26.12.2011 - 14:50) soup-bubble написал(а):
Да, извините что сразу не выложил код.

if (!isset($_POST['submit'])) {
?>
<form id="form1" name="form1" method="post" action="view.php">
<?php
$q=mysql_query("SELECT * FROM structure");
$structure=mysql_fetch_assoc($q);

while($row = mysql_fetch_array($q)) { echo "<br />"
?>
<input name="<?php echo $structure['id'];?>" type="text" id="<?php echo $structure['id'];?>" value="<?php echo $structure['data'];?>">
<
input name="<?php echo $structure['id'];?>" type="text" id="<?php echo $structure['id'];?>">
<
br /><?php
}?>
<input type="submit" name="submit" value="сохранить" />
</
form>
<?php
}
else {
//Редактируем данные:
$q=mysql_query("UPDATE structure SET parent_id='".$_POST['value']."', WHERE id='".$_POST['id']."'");
if (!q) {
echo "Не удалось выполнить запрос SQL";
}
}

?>

Спустя 31 минута, 35 секунд (26.12.2011 - 15:21) killer8080 написал(а):
soup-bubble
первая ошибка, ты задаешь одинаковые имя и ид для инпутов.
Второе, что такое $_POST['value'] и откуда оно должно взяться? У тебя же нет инпута с именем value.
То же с $_POST['id'].

Спустя 10 минут, 3 секунды (26.12.2011 - 15:31) soup-bubble написал(а):
В принципе можно для первого инпута убрать и имя и айди, так как они там не нужны, согласен
$_POST['value'] и ".$_POST['id']." я хотел получить данные из формы, а именно со второго input, куда пользователь сам вносит значения.
А так же сейчас при выводе всех значений из БД - выводится верное колличество, но все поля забиваются только первым значением из базы.

Спустя 5 минут, 19 секунд (26.12.2011 - 15:37) killer8080 написал(а):
Цитата (soup-bubble @ 26.12.2011 - 14:31)
но все поля забиваются только первым значением из базы.

Естественно, ты внимательно посмотри на свой код.
Сначала зачем то крадешь первый ряд
$structure=mysql_fetch_assoc($q);

потом в цикле читаешь ряды в $row, а в вывод подставляешь $structure user posted image
<input name="<?php echo $structure['id'];?>" type="text" id="<?php echo $structure['id'];?>">

Спустя 11 минут, 57 секунд (26.12.2011 - 15:49) soup-bubble написал(а):
Так, с выводом разобрался, спасибо большое, а как теперь сделать чтоб данные из вторых инпутов (которые вводит пользователь) обновляли данные в БД в столбце с именем parent_id по нажатии на кнопку сохранить?

Спустя 13 минут, 54 секунды (26.12.2011 - 16:03) killer8080 написал(а):
принцип такой, задаешь имена инпутов в виде массива, с ключами соответ. id
разметку добавь как надо

if(isset($_POST['data']) && is_array($_POST['data'])){
foreach($_POST['data'] as $id => $parent_id)
mysql_query("UPDATE `table` SET `parent_id`=".(int)$id." WHERE `id`=".(int)$parent_id);
}

$q = mysql_query("SELECT * FROM `structure`");

while($row = mysql_fetch_assoc($q)){
echo '<input type="text" name="data['.$row['id'].']" value="'.$row['parent_id'].'" /> <br />';
}



Спустя 49 минут, 19 секунд (26.12.2011 - 16:52) soup-bubble написал(а):
Добавил следующий код, но он не обновляет поля:

if(isset($_POST['data']) && is_array($_POST['data'])){
foreach($_POST['data'] as $id => $parent_id)
mysql_query("UPDATE `table` SET `parent_id`=".(int)$id." WHERE `id`=".(int)$parent_id);
}
?>
<form id="form1" name="form1" method="post" action="view.php">
<?php
$q = mysql_query("SELECT * FROM `structure`");

while($row = mysql_fetch_assoc($q)){
echo '<input type="text" name="data['.$row['id'].']" value="'.$row['parent_id'].'" /> <br />';echo '<input type="text" name="field" value="'.$row['data'].'" /> <br />';
}
echo '<input type="submit" name="submit" value="сохранить" />
</form>'
;

?>

Спустя 21 минута, 51 секунда (26.12.2011 - 17:14) killer8080 написал(а):
soup-bubble
Я там по путал местами переменные в запросе
mysql_query("UPDATE `table` SET `parent_id`=".(int)$parent_id." WHERE `id`=".(int)$id);

И опять делаешь ту же ошибку - в цикле назначаешь одно и то же имя инпуту field, и для чего он вообще нужен?

Спустя 11 минут, 15 секунд (26.12.2011 - 17:25) soup-bubble написал(а):
Да да да, все заработало - спасибо огромнейшее!!!
и у меня еще один вопрос - может знаете какой-нибудь ресурс, в котором описывается создание xml файла через php и БД? В смысле доступный для понимания

Спустя 3 дня, 15 часов, 35 минут, 7 секунд (30.12.2011 - 09:00) tech написал(а):
Не хотел создавать отдельную тему спрошу тут.
В интернете увидел примеры заппросов:
mysql_query('insert into `table` (`log`) values (\''.$login.'\'');

или
mysql_query('update table set `name`=\''.$_POST['text'].'\'  where `id`='1);

Зачем писать символы \' перед и после значений которые вставляем\заменяем? например тут: \' '.$login.'\' (выделил жирным)

Спустя 5 минут, 42 секунды (30.12.2011 - 09:06) inpost написал(а):
Потому что они не умеют программировать.
А в целом, это экранизация кавычек из-за того, что начальную и конечную кавычку не могли создать двойную, поэтому изврат внутри. А вообще, такой код точно писал кто-то, кто в программировании всего пару месяцев.

Спустя 1 день, 1 час, 21 минута, 14 секунд (31.12.2011 - 10:27) tech написал(а):
Я так понял люди с опытом не используют такой "стиль"?

Спустя 4 часа, 11 минут, 1 секунда (31.12.2011 - 14:38) inpost написал(а):
tech
Вот тебе адекватный стиль:
mysql_query("
UPDATE `table` SET
`name`='"
.mysql_real_escape_string($_POST['text'])."'
WHERE `id`= 1"

);
mysql_query("
INSERT INTO `table` SET
`log` = '"
.mysql_real_escape_string($login)."'
"
);
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.