foreach ($_POST as $key => $val ){print "$key = $val <br>\n";
$sql= "INSERT INTO $tab ($key) VALUES ('$val')";}
$sql_otvet=mysql_query($sql, $bd) or die ("Ошибка!!!".mysql_error());
Цмклом
foreach ($_POST as $key => $val ){print "$key = $val <br>\n";}я вытаскиваю все значения POST, далее print'ом вывожу на экран все красиво в два столбика, но в таблицу $tab он заносит только последнее значение последнего столбика!!!
Скобку "}" передвигать пробывал, как я понимаю он $sql - запрос просто игнорирует, а после - когда обработает весь массив и запомнит там последние значения $key = $val начинает заносить их в базу.
Подскажите что можно сделать, чтоб в ручную не писать т.к. полей много.
Спасибо.
Спустя 49 минут, 25 секунд (14.03.2010 - 09:55) Guest написал(а):
В переменную $sql на последнем шаге цикла foreach() заносятся как раз последние значения $key = $val. В итоге запрос срабатывает только для них. По идее запрос надо тоже внести в этот цикл...
Спустя 14 минут, 59 секунд (14.03.2010 - 10:10) sergeiss написал(а):
А зачем ты делаешь ИНСЕРТ, когда тебе нужно формировать сначала список имен полей и значений?
В цикле вносишь эти данные в 2 массива, и затем формируешь 1 запрос, после цикла. И не забываешь учесть, что символьные поля надо заключать в кавычки.
В цикле вносишь эти данные в 2 массива, и затем формируешь 1 запрос, после цикла. И не забываешь учесть, что символьные поля надо заключать в кавычки.
Спустя 1 час, 29 минут, 42 секунды (14.03.2010 - 11:40) ABC написал(а):
В том то и дело что в {} foreach нельзя определить массив, я пытался всяко разно... если знаете как покажите ?
Спустя 7 минут, 15 секунд (14.03.2010 - 11:47) sergeiss написал(а):
Цитата (A.B.C. @ 14.03.2010 - 12:40) |
если знаете как покажите ? |
А не надо в цикле ОПРЕДЕЛЯТЬ массив, его там заполнять надо. Определи его до цикла!
$keys=array();
$values=array();
foreach( $POST as $key => $value )
{
...
$keys[]=$key;
$values[]=$value;
...
}
Спустя 24 минуты, 32 секунды (14.03.2010 - 12:12) ABC написал(а):
$i=0;
$tab=$_SESSION['mmod'];
$key=array();
$val=array();
foreach ($_POST as $key => $val ){print "$key = $val <br>\n";}
//$key[]=$key;
//$val[]=$val;
do {$i=$i+1;
$sql= "INSERT INTO $tab ($key) VALUES ('$val')";} while ($i!=12);
$sql_otvet=mysql_query($sql, $bd) or die ("Ошибка!!!".mysql_error());
пробывал уже по всякому, закидывает только последнее значение!!!...но ведь можно как то обойти это!
Спустя 2 минуты, 24 секунды (14.03.2010 - 12:14) ABC написал(а):
ab=$_SESSION['mmod'];
$key=array();
$val=array();
foreach ($_POST as $key => $val )
{
print "$key = $val <br>\n";
$key[]=$key;
$val[]=$val;
$sql= "INSERT INTO $tab ($key) VALUES ('$val')";}
$sql_otvet=mysql_query($sql, $bd) or die ("Ошибка!!!".mysql_error());
}
Так тоже делал... парни поробуйте у себя скрипт то обычный, под любую БД
Спустя 1 минута, 37 секунд (14.03.2010 - 12:16) sergeiss написал(а):
A.B.C. - а вот интересно. Сколько раз надо людям повторять одно и то же, чтобы они прочитали? И чтобы "дошло"???

Цитата (sergeiss @ 14.03.2010 - 11:10) |
В цикле вносишь эти данные в 2 массива, и затем формируешь 1 запрос, после цикла. |
Обращаю внимание на слова "формируешь запрос после цикла"!!! И вносишь сразу все поля, формируя из них список (на основании 2-х созданных массивов).
PS. И прочитай про функцию implode() - для формирования списков параметров и величин очень полезна она будет.
Спустя 16 минут, 14 секунд (14.03.2010 - 12:32) ABC написал(а):
Уважаемый sergeiss, он не дает мне в цикле сделать
Пишет ошибку я уже все комбинации попробывал не могу понять смысл...почему он не заносит их в массив ... дело в том что вот эти массивы они поодиночке не существуют почему то...только в связке...я уже вообще запутался..
$key[]=$key;
$val[]=$val;
Пишет ошибку я уже все комбинации попробывал не могу понять смысл...почему он не заносит их в массив ... дело в том что вот эти массивы они поодиночке не существуют почему то...только в связке...я уже вообще запутался..
Спустя 10 минут, 37 секунд (14.03.2010 - 12:43) sergeiss написал(а):
Цитата (A.B.C. @ 14.03.2010 - 13:32) |
он не дает мне в цикле сделать |
А ты сопоставь написанное тобой
foreach ($_POST as $key => $val )
{
...
$key[]=$key;
$val[]=$val;
...
}
и написанное мной
$keys=array();
$values=array();
foreach( $POST as $key => $value )
{
...
$keys[]=$key;
$values[]=$value;
...
}
Знаешь такую детскую игру, для самых маленьких - "найди 10 отличий"?

PS. И, черт побери, выкини запрос из цикла!!!

Спустя 11 минут, 2 секунды (14.03.2010 - 12:54) Nikitian написал(а):
foreach($_POST as &$k=>&$v)list($k,$v)=list(mysql_escape_string($k),mysql_escape_string($v));
$sql= "INSERT INTO $tab (`".implode("`,`",array_keys($_POST))."`) VALUES ('".implode("','",array_values($_POST))."')";
Спустя 30 минут, 12 секунд (14.03.2010 - 13:24) ABC написал(а):
foreach($_POST as &$k=>&$v)list($k,$v)=list(mysql_escape_string($k),mysql_escape_string($v));
$sql= "INSERT INTO $tab (`".implode("`,`",array_keys($_POST))."`) VALUES ('".implode("','",array_values($_POST))."')";
Спасибо Nikitian и sergeiss буду разбираться на данный момент пишет ошибку
Fatal error: Key element cannot be a reference Z:\home\localhost\www\hita_1\prodaem_anketaS.php on line 33
Через пару часов надо браться с новыми силами т.к. сейчас комп охота уже разбить

Еще раз спасибо за помощь и консультации.
Спустя 18 минут, 50 секунд (14.03.2010 - 13:43) Игорь_Vasinsky написал(а):
Fatal error: Key element cannot be a reference Z:\home\localhost\www\hita_1\prodaem_anketaS.php on line 33
установи PHPXEDIT - редактор, все строки пронумерованы - посмотри что за строка.
Спустя 25 минут, 8 секунд (14.03.2010 - 14:08) Nikitian написал(а):
Там я в одном месте опечатался, получилось что в list() один из параметров был описан как константа. Уже везде поменял.
Спустя 13 часов, 52 минуты, 39 секунд (15.03.2010 - 04:00) ABC написал(а):
sergeiss, большое тебе спасибо!!!....поутру разобрался действительно я тупил!!!! эх мир не без добрых людей...
Спустя 4 минуты, 18 секунд (15.03.2010 - 04:05) ABC написал(а):
$keys=array();
$vals=array();
foreach ($_POST as $key => $val ){print "$key = $val <br>\n";
$keys[]=$key;
$vals[]=$val;}
$s=implode (",",$keys);
print $s;
всего то ..

Спустя 8 часов, 42 минуты, 17 секунд (15.03.2010 - 12:47) qpayct написал(а):
танцы с бубном?
какие строчки? $s ?? или каждый элемент массива отдельно?

какие строчки? $s ?? или каждый элемент массива отдельно?
Спустя 2 минуты, 23 секунды (15.03.2010 - 12:49) sergeiss написал(а):
qpayct - ТС, вроде бы, разобрался уже с проблемой. Хотя бы в первом приближении. А ты опять его путаешь
, вопросы какие-то задаешь.

Спустя 3 минуты, 56 секунд (15.03.2010 - 12:53) qpayct написал(а):
Цитата (Nikitian @ 14.03.2010 - 11:54) |
|
интересно.
а ссылки в ПХП5 можно кажись не создавать, если не ошибаюсь они сами автоматом по ссылкам берутся....
Спустя 10 минут, 7 секунд (15.03.2010 - 13:03) ABC написал(а):
Главное было вытащить этот массив уж не знаю почему я так тупил...
))...для анализа и последующего занесения в таблицу......
Скажите, а вы тоже пользуетесь примерной схемой, а потом анализируете на корректность... и т.д. или
каждое поле - т.е. каждую переменную проверяете отдельно (если они одинаковые) типа
или
?

Скажите, а вы тоже пользуетесь примерной схемой, а потом анализируете на корректность... и т.д. или
каждое поле - т.е. каждую переменную проверяете отдельно (если они одинаковые) типа
if (isset($_POST('a')) {}
или
if (empty($_POST('a')) {}
?
_____________
Не тот велик, кто не падал, а тот кто падал и поднимался.