[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Помогите, не могу вставить строчки в БД
GET
Проблема такая, есть поля, методом POST передаются переменные с них, проверять из не надо там всплывающие списки:

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 запрос, после цикла. И не забываешь учесть, что символьные поля надо заключать в кавычки.

Спустя 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. - а вот интересно. Сколько раз надо людям повторять одно и то же, чтобы они прочитали? И чтобы "дошло"??? blink.gif
Цитата (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 отличий"? wink.gif

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

Спустя 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

Через пару часов надо браться с новыми силами т.к. сейчас комп охота уже разбить smile.gif..

Еще раз спасибо за помощь и консультации.

Спустя 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;


всего то ..smile.gif

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

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

Спустя 3 минуты, 56 секунд (15.03.2010 - 12:53) qpayct написал(а):
Цитата (Nikitian @ 14.03.2010 - 11:54)

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))."')";

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

Спустя 10 минут, 7 секунд (15.03.2010 - 13:03) ABC написал(а):
Главное было вытащить этот массив уж не знаю почему я так тупил...smile.gif))...для анализа и последующего занесения в таблицу......

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

каждое поле - т.е. каждую переменную проверяете отдельно (если они одинаковые) типа
if (isset($_POST('a')) {}


или
 if (empty($_POST('a')) {}


?


_____________
Не тот велик, кто не падал, а тот кто падал и поднимался.
Быстрый ответ:

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