Цикл по строкам в ХТМЛ форме

solaso

Новичок
$query = "INSERT INTO `wm_curs_base`(u_id,u_site)
VALUES
(
$value,
$value
)";
Пробовал так, не пишет верно в базу. Или как?

-~{}~ 15.11.08 11:36:

И зачем инсерт, когда мне поля обновлять надо?
 

Фанат

oncle terrible
Команда форума
вот и посмотри пример у себя в коде, раз используется.
Непонятно, в чем твоя проблема.
 

solaso

Новичок
foreach ($_POST['curs'] as $key=>$value) {$query = "UPDATE `wm_curs_base` SET ???"; //Как здесь обновить базу? $result_view = mysql_query($query) or die('Query failed: ' . mysql_error());
 

Фанат

oncle terrible
Команда форума
точно так же, как и в другом месте.
у тебя в коде используется UPDATE. Почему тебе не посмотреть пример в своем собственном коде?
 

solaso

Новичок
Как указать что соответствующий элемент массива из передаваемой формы должен записаться именно в свое соответствующее поле в базе?
Например
//Это одна строка в базе с id=1 (Ключ 0=Значение 1)
Ключ 0=Значение 1
Ключ 1=Значение site1.kz
Ключ 2=Значение
Ключ 3=Значение 0
Ключ 4=Значение 119
Ключ 5=Значение 120
Ключ 6=Значение 4
Ключ 7=Значение 5
Ключ 8=Значение 3
Ключ 9=Значение 5
//Это одна строка в базе

//Обновляем вторую строчку в базе с id=2 (Ключ 10=Значение 2)
Ключ 10=Значение 2
Ключ 11=Значение site2.kz
Ключ 12=Значение
Ключ 13=Значение 0
Ключ 14=Значение 118
Ключ 15=Значение 122
Ключ 16=Значение 4.3
Ключ 17=Значение 5.5
Ключ 18=Значение 3.8
Ключ 19=Значение 5.2
//Обновляем вторую строчку в базе
 

Фанат

oncle terrible
Команда форума
понятно. тебе не запрос надо составить, а данные из формы получить.

Наверное, надо не тупо запихивать все поля формы в единственный массив, а поступать как-то более интеллектуально?
Как-то различать разные колонки в форме и разные строки? Чтобы потом в скрипте можно было понять, какое значение к чему относится ,а не просто валить все в curs[]
Неужели это так сложно сообразить? или соображать вообще не хочется, а хочется, чтобы пришла добрая пилотка 911 и все тебе написала?

Повторяю свою рекомендацию недельной давности:
Убери вторую строку из своей формы, и тренируйся на кошках.

Если в форме будет только одна строка, у тебя получится сделать? Если да, то продемонстрируй. Если нет, то какого черта ты лезешь к многострочной форме, не разобравшись даже, как разобрать одну строку?
 

solaso

Новичок
Различал и поля, не валил все в curs[]. Вот так было
echo "<td align='center'>".$line['u_id']." </td>
<td align='center'><input size='10' name='site[]' value='".$line['u_site']."'></td>
<td align='center'><input size='10' name='site_desc[]' value='".$line['u_site_desc']."'></td>
<td align='center'><input size='10' name='active[]' value='".$line['u_active']."'></td>
<td align='center'><input size='10' name='wmz_buy[]' value='".$line['u_wmz_buy']."'></td>
<td align='center'><input size='10' name='wmz_sale[]' value='".$line['u_wmz_sale']."'></td>
<td align='center'><input size='10' name='wmr_buy[]' value='".$line['u_wmr_buy']."'></td>
<td align='center'><input size='10' name='wmr_sale[]' value='".$line['u_wmr_sale']."'></td>
<td align='center'><input size='10' name='ya_buy[]' value='".$line['u_ya_buy']."'></td>
<td align='center'><input size='10' name='ya_sale[]' value='".$line['u_ya_sale']."'></td>
";

С одной строкой тренироваться не проблема тогда и foreah() не нужен, если только одна строка. Получается. Не могу понять как занести вторую
Вот с одной строкой так будет
$query = "UPDATE `wm_curs_base` SET `u_site`='".$_POST['site']."'";

-~{}~ 15.11.08 16:15:

Впервые столкнулся с многострочкой и торможу. Отдельные уникальные поля занести могу. А как с foreach не пойму, если он вообще нужен ли здесь

-~{}~ 15.11.08 16:21:

Даже так обозвал поля name='site".$line['u_id']."[]' при выводе из базы, чтоб была первая строка name='site1[]' а вторая name='site2[]'

-~{}~ 15.11.08 16:23:

То есть все имена полей при выводе, я сделал уникальными. А как занести в базу в соответствующие поля?
 

Фанат

oncle terrible
Команда форума
Все твои проблемы от невнимательности.
Вот и сейчас в форме вместо site написано site[]

при том, что со скобками - это уже одно из решений твоей проблемы.
сделай пока без цикла, просто два запроса составь руками, используя данные из массивов
$_POST['site'], $_POST['active'] и так далее.
значение поля site из первой строчки у тебя будет в переменной $_POST['site'][0]

-~{}~ 15.11.08 13:27:

кстати да. я забыл про id
поэторму, действительно, надо писать в форме не site[], а site[1], заполняя id в скобках
 

solaso

Новичок
$query = "UPDATE `wm_curs_base` SET `u_site`='".$_POST['site'][1]."' WHERE u_id='1'";
$result_view = mysql_query($query) or die('Query failed: ' . mysql_error());
$query1 = "UPDATE `wm_curs_base` SET `u_site`='".$_POST['site'][2]."' WHERE u_id='2'";
$result_view1 = mysql_query($query1) or die('Query failed: ' . mysql_error());

Ну это работает), так я делал). Как записыает куда нужно, как дальше foreach? Или по другому?

-~{}~ 15.11.08 16:42:

Кстати да, я айди запихал в скобки. Самый первый скрипт так и написал, потом запутался.

-~{}~ 15.11.08 16:43:

Можете проверить мои поля http://spasibo.kz/kurs_base_edit.php

-~{}~ 15.11.08 16:44:

Прошу прощения за ссылки, как проблема решится, прошу модераторов удалить тему или ссылки.
 

Фанат

oncle terrible
Команда форума
Ну, раз ты обновляешь только одно поле, то проблемы вообще никакой нет.
сначала проходишь в цикле по site, потом по active и так далее.

-~{}~ 15.11.08 13:52:

Да никому твои ссылки не нужны, кроме тебя самого.
Ты сам себя проверяй. Всегда делай именно то, что хочешь, а не то, что само написалось. Иначе вообще не имеет смысла ни за что браться.

вот сейчас я тебе сказал обновить два поля. А ты пишешь запрос, который обновляет одно. при том, что перед тобой стоит задача составять запрос из кучи массивов, а не из одного.
И так у тебя во всем.
 

solaso

Новичок
foreach ($_POST['site'] as $key=>$value)
//"<p> Ключ " .$key."=Значение ". $value . "</p>";
{

$query = "UPDATE `wm_curs_base` SET `u_site`='".$_POST['site'][$key]."' WHERE u_id='".$key."'";
$result_view = mysql_query($query) or die('Query failed: ' . mysql_error());

}
Так работает.
Так выходит для каждого $_POST['поле'] foreach делать?

-~{}~ 15.11.08 16:56:

В моем запросе выше без цикла, обновляется два. Я проверяю.
 

solaso

Новичок
В первой строке поле site и во второй строке, хотите еще поле актив.
Тогда так
$query = "UPDATE `wm_curs_base` SET `u_site`='".$_POST['site'][1]."', `u_active`='".$_POST['active'][1]."' WHERE u_id='1'";
$result_view = mysql_query($query) or die('Query failed: ' . mysql_error());
$query1 = "UPDATE `wm_curs_base` SET `u_site`='".$_POST['site'][2]."', `u_active`='".$_POST['active'][2]."' WHERE u_id='2'";
$result_view1 = mysql_query($query1) or die('Query failed: ' . mysql_error());

-~{}~ 15.11.08 17:03:

кстати $key начинается не с 0, почему?
 

Фанат

oncle terrible
Команда форума
хотите еще поле актив.
понимаешь, какое дело. это не я хочу. это ты хочешь.
чтобы все было в одном цикле.
не надо думать, что мне надо обновлять списки валюты. меня это вообще не интересует.

если объединить два твоих последних кода, все будет работать. что еще неясно?
 

solaso

Новичок
Пойду думать. Не надумаю приду.

-~{}~ 15.11.08 17:18:

Дело в том что foreach ($_POST as $key=>$value) без указания поля, не работает. Где я ошибся, а то конечно будет один запрос красивый. Как надо в foreach указать?
 

solaso

Новичок
Работает. Но что занчит они все одинаковые? Могу указать
foreach ($_POST[site] as $key=>$value) или
foreach ($_POST[site_desc] as $key=>$value) или
foreach ($_POST[active] as $key=>$value)
Почему во всех случаях будет работать? Ведь выбирается массив одного поля?
 
Сверху