есть БД 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'].
первая ошибка, ты задаешь одинаковые имя и ид для инпутов.
Второе, что такое $_POST['value'] и откуда оно должно взяться? У тебя же нет инпута с именем value.
То же с $_POST['id'].
Спустя 10 минут, 3 секунды (26.12.2011 - 15:31) soup-bubble написал(а):
В принципе можно для первого инпута убрать и имя и айди, так как они там не нужны, согласен
$_POST['value'] и ".$_POST['id']." я хотел получить данные из формы, а именно со второго input, куда пользователь сам вносит значения.
А так же сейчас при выводе всех значений из БД - выводится верное колличество, но все поля забиваются только первым значением из базы.
$_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
<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
Я там по путал местами переменные в запросе
И опять делаешь ту же ошибку - в цикле назначаешь одно и то же имя инпуту field, и для чего он вообще нужен?
Я там по путал местами переменные в запросе
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 и БД? В смысле доступный для понимания
и у меня еще один вопрос - может знаете какой-нибудь ресурс, в котором описывается создание xml файла через php и БД? В смысле доступный для понимания
Спустя 3 дня, 15 часов, 35 минут, 7 секунд (30.12.2011 - 09:00) tech написал(а):
Не хотел создавать отдельную тему спрошу тут.
В интернете увидел примеры заппросов:
или
Зачем писать символы \' перед и после значений которые вставляем\заменяем? например тут: \' '.$login.'\' (выделил жирным)
В интернете увидел примеры заппросов:
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)."'
");