Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: динамический селект(добавление данных в БД)
 
 автор: Nocash   (15.05.2010 в 10:44)   письмо автору
 
 

дорого времени суток.
столкнулся с такой проблеммой на форме есть один инпут и кнопочка добавить отдел и отправить
при нажатии на добавить отдел появляется еще один инпут и тд. проблемма возникла в добавлении в БД мускул.
добавляется только 1 отдел больше нихочет не в какую. приважу код подскажите где ошибся.
так создается динамичесикй инпут
<script>
function add_sub() 
 {
var i=0;
  var newElem=document.getElementById('tab');//новый СЌР»РµРјРµРЅС‚ СЃС‚раницы (TABLE)  
    newElem.border=0;//толщина СЂР°РјРєРё С‚аблицы  
    var newRow=newElem.insertRow(2);//добавляю СЃС‚СЂРѕРєСѓ РІ СЃРѕР·РґР°РЅРЅРѕР№ С‚аблице  
    var newCell = newRow.insertCell(0);//РІ СЃРѕР·РґР°РЅРЅРѕР№ СЃС‚СЂРѕРєРµ РґРѕР±Р°РІР»СЏСЋ СЃС‚олбец
newCell.width="200";//указываю РґР»РёРЅСѓ СЃС‚олбца 
    newCell.height="40";
newCell.align="center";//указываю РїРѕР·РёС†РёРѕРЅРёСЂРѕРІР°РЅРёРµ 

newCell.innerHTML='<input type="text" name="gnl_division1'+i+'" size="40%">';//заполняю СЏС‡РµР№РєСѓ Р¶РёСЂРЅС‹Рј С‚екстом   
i++;
</script>

а так добавляю в базу
 
<? php
while ($i<5)
{  
 
$sql2 -> db_Insert("ab_gnl""0, '$cat_id', '".@$_POST["gnl_phone1$i"]."', '".@$_POST["gnl_mail1$i"]."', '".@$_POST["gnl_division1$i"]."'");        
$i++;
}
?>

  Ответить  
 
 автор: Valick   (15.05.2010 в 10:48)   письмо автору
 
   для: Nocash   (15.05.2010 в 10:44)
 

[поправлено модератором]

  Ответить  
 
 автор: Nocash   (15.05.2010 в 10:51)   письмо автору
 
   для: Valick   (15.05.2010 в 10:48)
 

а какае отношение это имеет к моему заданному вопросу?? да русский, если вы про коментарии то менял систему (кубунту9.04 на 10 версию) и по запарке забыл настройть кодировку поэтому там каракули. а переделать все как то руки не доходят

  Ответить  
 
 автор: Valick   (15.05.2010 в 10:57)   письмо автору
 
   для: Nocash   (15.05.2010 в 10:51)
 

я про приважу - не режет ни глаз ни слух?
и для начала не
<? php
a
<?php


уберите всех собак @ из кода и включите диагностику ошибок

  Ответить  
 
 автор: Valick   (15.05.2010 в 11:03)   письмо автору
 
   для: Nocash   (15.05.2010 в 10:51)
 

что такое $cat_id'? может Вы добавляете строки с одним и тем же идентификатором? вот и посылает Вас база в известном направлении...
(и что-то с кавычками не совсем понятно чьи откуда "ноги растут")
лучше тело запроса не писать именно в операторе а формировать отдельной переменной
$query="ab_gnl", "0, '$cat_id', '".@$_POST["gnl_phone1$i"]."', '".@$_POST["gnl_mail1$i"]."', '".@$_POST["gnl_division1$i"]."'"; 
echo $query;
$sql2 -> db_Insert($query);

[поправлено модератором]

  Ответить  
 
 автор: NoCash   (15.05.2010 в 11:15)   письмо автору
 
   для: Valick   (15.05.2010 в 11:03)
 

$cat_id это номер последнего добавления в другую таблицу. индикатор ошибок включен никаких ошибок не выдает.
я предпологаю что ошибка заключается в скрипте где добаляются инпуты. отправляется только один инпут т.к одно значение записывается в базу а все остальные записываются пустыми(

  Ответить  
 
 автор: Valick   (15.05.2010 в 11:22)   письмо автору
 
   для: NoCash   (15.05.2010 в 11:15)
 

то что приходит от клиента (как раз то что Вы пуляете из формы) нужно принимать(!), обрабатывать(!) и контролировать(!)

[поправлено модератором]

  Ответить  
 
 автор: ONYX   (15.05.2010 в 11:30)   письмо автору
 
   для: Valick   (15.05.2010 в 11:22)
 

<script>
function add_sub() 
{
var i=0;
  var newElem=document.getElementById('tab')
    newElem.border=0
    var newRow=newElem.insertRow(2)
    var newCell = newRow.insertCell(0)
    newCell.width="200"
    newCell.height="40"
   newCell.align="center"
   newCell.innerHTML='<input type="text" name="gnl_division1'+i+'" size="40%">
  i++
</script> 

А вы уверены что переменная i у вас глобальная? Ведь если у вас на форме появляется новый инпут то в таком случае имена у всех инпутов будут одинаковыми

  Ответить  
 
 автор: NoCash   (15.05.2010 в 11:42)   письмо автору
 
   для: ONYX   (15.05.2010 в 11:30)
 

нет не уверен этот код мне подсказали на другом форуме.

  Ответить  
 
 автор: NoCash   (15.05.2010 в 11:35)   письмо автору
 
   для: Valick   (15.05.2010 в 11:22)
 

пипец я 3 строчки Php вам показал вы его обкакали до нельзя, что же будет если вам хотябы странку показывать???xDDD
попробывал сделать добавление по вашему примеру. записи вообще перестали добавляться

  Ответить  
 
 автор: Valick   (15.05.2010 в 12:10)   письмо автору
 
   для: NoCash   (15.05.2010 в 11:35)
 

попробывал сделать добавление по вашему примеру. записи вообще перестали добавляться
что показало echo $query; ?

  Ответить  
 
 автор: Valick   (15.05.2010 в 11:27)   письмо автору
 
   для: NoCash   (15.05.2010 в 11:15)
 

еще раз повторю
собак в коде (по крайней мере на стадии отладки) быть не должно(!)
$_POST["gnl_phone1$i"] в теле запроса быть не должно(!)
запрос в базу можно сформировать только один(!)

нет не уверен этот код мне подсказали на другом форуме.
что мешает из формы передать массив(!) и обрабатывать как все белые люди с помощью foreach? а не извращаться с while ($i<5)

  Ответить  
 
 автор: NoCash   (15.05.2010 в 12:11)   письмо автору
 
   для: Valick   (15.05.2010 в 11:27)
 

<?PHP
foreach ($_POST["gnl_phone1"] as  $value
foreach (
$_POST["gnl_mail1"] as  $value1
foreach (
$_POST["gnl_division1"] as  $value2
$sql2 -> db_Insert("ab_gnl""0, '$cat_id', '$value', '$value1', '$value2'");
?>

сделал вот так. сейчас добавляет в базу все значения только почему то они повторяются 2 раза(

  Ответить  
 
 автор: Valick   (15.05.2010 в 12:18)   письмо автору
 
   для: NoCash   (15.05.2010 в 12:11)
 

а я наивный думал, что хуже первого варианта быть не может :)
не нужно тыкать функции куда попало, Вы должны четко пердставлять алгоритм и толко после этого садиться за написание кода.
gnl_phone1, gnl_mail1 - кто эти люди, где мои вещи ?
в форме я видел только gnl_division1

  Ответить  
 
 автор: NoCash   (15.05.2010 в 12:29)   письмо автору
 
   для: Valick   (15.05.2010 в 12:18)
 

эти люди находятся тамже где и gnl_division1 не стал их писать дабы незаграмождать сообщение огромным кодом

  Ответить  
 
 автор: Valick   (15.05.2010 в 12:38)   письмо автору
 
   для: NoCash   (15.05.2010 в 12:29)
 

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

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования