[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: запрос на добавление в бд
NoCash
помогите составить запрос что бы все занчения в БД заносились правильно. а то когда я просто вывожу на экран через echo переменные содержат то что нужно а при добавлении в базу запись почему то заночиться неправильно добаляю вот так

foreach ($_POST["gnl_phone1"] as $value)
echo $value;
foreach ($_POST["gnl_mail1"] as $value1)
echo $value1;
foreach ($_POST["gnl_division1"] as $value2)
echo $value2;


$sql2 -> db_Insert("ab_gnl", "0, '$cat_id', '$value', '$value1', '$value2'" );




Спустя 2 часа, 36 минут, 44 секунды (17.05.2010 - 10:26) DedMorozzz написал(а):
ф-ю db_Insert в студию
А лучше весь код вставки, не частями.

Спустя 1 час, 50 минут, 37 секунд (17.05.2010 - 12:16) NoCash написал(а):
функция db_Insert обсолютно тоже самое что и простой insert она в движке e107 встроена добавляет обычные записи на ура. проблемма с ARRAY в переменной $value несколллько значений может быть(2 и более). поэтому и возникает проблемма добавления в базу. если бы было заранее извесно сколько юзер добавит записей дело было бы пустековое а вот с массивом никак не могу разобраться. если интересен весь код то опять же часть кода где сформированны инпуты находиться
тут

Спустя 1 час, 24 минуты, 49 секунд (17.05.2010 - 13:41) DedMorozzz написал(а):
твой инсерт - db_Insert("ab_gnl", "0, '$cat_id', '$value', '$value1', '$value2'" );
"нормальный" инсерт - INSERT INTO table_name (column1, column2, column3,...)
VALUES (value1, value2, value3,...)

Итого - покажи свою ф-ю инсерта. Ибо мне не понятно, что такое 0, да и прочее не аналогично

Спустя 27 минут, 49 секунд (17.05.2010 - 14:09) NoCash написал(а):
db_Insert("ab_gnl"-в какую таблицу добавить, "0-первичный ключ отчет с нуля(записать в поле gnl_id), '$cat_id-значение переменной записать в поле gnl_cat' ', '$value - записать в поле gnl_division', '$value1-записать в поле gnl_phone'', '$value2-записать вполе gnl_mail'" );
вот так вот, все достаточно просто

Спустя 8 минут, 39 секунд (17.05.2010 - 14:18) gagger написал(а):
NoCash
А не проще ли воспользоваться обычным способом? Зачем мудрить...

Спустя 30 минут, 49 секунд (17.05.2010 - 14:48) NoCash написал(а):
foreach ($_POST["gnl_phone1"] as  $value2)
echo $value;
foreach ($_POST["gnl_mail1"] as $value1)
echo $value1;
foreach ($_POST["gnl_division1"] as $value)
echo $value2;
//$sql2 -> db_Insert("ab_gnl", "0, '$cat_id', '$value', '$value1', '$value2'" );
$sql2 = ("INSERT INTO 'ab_gnl' (gnl_id, gnl_cat, gnl_phone, gnl_mail, gnl_division) VALUES ('".$cat_id."', '".$value2."', '".$value1."','".$value."' )");
таким способом ничево не добавляет((

Спустя 3 минуты, 14 секунд (17.05.2010 - 14:52) Basili4 написал(а):
Так количество указаных полей 5 а значений 4 не порядок :-)

Спустя 17 минут, 6 секунд (17.05.2010 - 15:09) NoCash написал(а):
дабавил не помогает

Спустя 11 минут, 11 секунд (17.05.2010 - 15:20) Basili4 написал(а):
Может я щас глупость скажу а ты mysql_query($sql2) делаешь ???

Спустя 12 минут, 38 секунд (17.05.2010 - 15:33) DedMorozzz написал(а):
Цитата
INSERT INTO 'ab_gnl' (gnl_id, gnl_cat, gnl_phone, gnl_mail, gnl_division) VALUES ('".$cat_id."', '".$value2."', '".$value1."','".$value."' )"
А такое должно работать?!
Пробей так:
INSERT INTO `ab_gnl` (`gnl_id`, `gnl_cat`, `gnl_phone`, `gnl_mail`, `gnl_division`) VALUES ('".$cat_id."', '".$value2."', '".$value1."','".$value."' )"

PS: но всё равно ты записываешь в 5 полей 4 значения. удали 1 поле, кажеться это айди будет.

Спустя 40 минут, 28 секунд (17.05.2010 - 16:13) gagger написал(а):
$sql2 = mysql_query ("INSERT INTO ab_gnl (gnl_id, gnl_cat, gnl_phone, gnl_mail, gnl_division) VALUES ('$cat_id', '$value2.', '$value1','$value' )"); 

и добавить или удалить одно значение...

Спустя 6 минут, 45 секунд (17.05.2010 - 16:20) Basili4 написал(а):
Убери gnl_id из названий полей

Спустя 3 минуты, 38 секунд (17.05.2010 - 16:23) DedMorozzz написал(а):
2 последних топика из рядов КО? laugh.gif

Спустя 18 часов, 12 минут, 22 секунды (18.05.2010 - 10:36) NoCash написал(а):
в общем обычным селектом ничво не добавляет поэтому вернулся к своему виду.
нарисовал вот так
foreach ($_POST["gnl_phone1"] as  $value2){
{

print "$value2\n<br>" ;}
foreach ($_POST["gnl_mail1"] as $value1){
print "$value1\n<br>";}
foreach ($_POST["gnl_division1"] as $value){
print "$value\n<br>";}
$sql2 -> db_Insert("ab_gnl", "0, '$cat_id', '$value', '$value1', '$value2'" );
}

добавляет столько записей сколько нужно. правильно добавляет $value. а вот $value1 и $value2 записывает однинаковые значения в каждм столбце.
например

gnl_division | gnl_mail | gnl_phone
__________|________|__________
отдел1 | мыло2 | тел2
отдел2 | мыло2 | тел2
а должно быть вот так

gnl_division | gnl_mail | gnl_phone
__________|________|__________
отдел1 | мыло1 | тел1
отдел2 | мыло2 | тел2

Спустя 5 минут, 54 секунды (18.05.2010 - 10:42) DedMorozzz написал(а):
Всё верно (только value тоже должно было быть 2м). Ибо логика такова. Ты берёшь массив данных А, его прогоняешь как Б и вставляешь в запрос. Т.е. На момент выхода из цикла:
 foreach ($_POST["gnl_mail1"] as $value1){ 
print "$value1\n<br>";}

у тебя value1 всегда будет равен конечному значению.

Спустя 6 минут, 8 секунд (18.05.2010 - 10:48) NoCash написал(а):
вот вот с этим я и мучаюсь не могли бы вы подсказать как мне сделать что бы все занчения были такие как мне необходимо? мучаюсь 3 день ужасно достала эта проблемма

Спустя 6 минут, 33 секунды (18.05.2010 - 10:54) DedMorozzz написал(а):
ну как вариант - конкатенировать(соединять) все результаты форича в 1 строку, по типу:

public function Write($text)
{
foreach($text as $fild => $value)
{
foreach($value as $fild1 => $value1)
{
$string.="$fild1,";
$values.="'$value1',";
}
$string= substr_replace($string, '', -1 );
$values= substr_replace($values, '', -1 );
mysql_query("INSERT INTO `$fild` ($string) VALUES ($values)") or die('Ошибка при выполнении запроса');
}
return "Даныые ($string) со значениями ($values) записаны в таблицу $fild";
}

Нашёл дето свой код, как-то так. Под себя чуток измени. смысл тот же. подаёться массив данных и ты его преобразуешь в запрос.
Только у мну был двумерный ассоц. массив, а у тя обычный, эт ещё проще.

Спустя 50 минут, 27 секунд (18.05.2010 - 11:45) NoCash написал(а):
написал вот так значение пустое приходит
foreach($_POST["gnl_phone1"] as  $value2) 
{
foreach ($value2 as $value1)
{
$values2.="'$value1',";
}

$values2= substr_replace($values2, '', -1 );

$sql2 -> db_Insert("ab_gnl", "0, '$cat_id', '$value', '$value1', '$value2'" );

Спустя 17 минут, 32 секунды (18.05.2010 - 12:02) DedMorozzz написал(а):
немного не то, точнее совсем не то. У тебя вообще проще будет сделать без форича, а найти размер массива, сделать цикл фор (вайл) в размер этого массива и в инсерв вставлять по очереди значения. По позже напишу сам код, если не разберёшся

Спустя 7 минут, 20 секунд (18.05.2010 - 12:10) NoCash написал(а):
я изначально пробывал с помощью вайла сделать но потом подумал что поля динамические и с вайлом будет нелогично сделать да и на форуме мне посоветовали сделать с помощью фореча. а с форечем я не сильно дружу вот и парюсь сижу.
буду признателен за код))

Спустя 22 часа, 14 минут, 50 секунд (19.05.2010 - 10:24) NoCash написал(а):
через list канает но записывается в одну ячейку например 2 телефона записываются в одну ячейку 2 отдела в одну ячейку и 2мыла тоже в одну ячейку.
$i=0;
list($pho,$i) = $_POST["gnl_phone1"];
list($mail,$i) =$_POST["gnl_mail1"];
list($div,$i) = $_POST["gnl_division1"];
$sql2 -> db_Insert("ab_gnl", "0, '$cat_id', '$pho,$i', '$mail,$i', '$div,$i'" );
$i++;

подскажите каким образом можно записать в разные ячейки значения

Спустя 5 часов, 49 минут, 46 секунд (19.05.2010 - 16:14) DedMorozzz написал(а):
for ($i=0;$i<=sizeof($_POST["gnl_phone1"]);$i++){
$sql2 = ("INSERT INTO `ab_gnl` (`gnl_id`, `gnl_cat`, `gnl_phone`, `gnl_mail`, `gnl_division`) VALUES ('".$cat_id."', '".{$_POST["gnl_phone1"][$i]}."', '".{$_POST["gnl_mail1"][$i]}."','".{$_POST["gnl_division1"][$i]}."' )")
}
лови
Что такое Кат_ид так и не разобрался, по аналогии вставишь своё.
И снова таки: ты в 5 полей пытаешся засунуть 4 зачения если делать через обычный инсерт. Иль как у тя - через ф-ю, то так:
for ($i=0;$i<=sizeof($_POST["gnl_phone1"]);$i++){
$sql2 -> db_Insert("ab_gnl", "0, \"$cat_id\", \"{$_POST["gnl_phone1"][$i]}\", \"{$_POST["gnl_mail1"][$i]}\", \"{$_POST["gnl_division1"][$i]}\"");
}

Спустя 19 часов, 54 минуты, 31 секунда (20.05.2010 - 12:09) NoCash написал(а):
воооо красота работает спс большое)))
Быстрый ответ:

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