Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: доработка обработчика веб форм

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (3): [1] 2 3 »   

> Без описания
Алтенрион
Отправлено: 03 Октября, 2012 - 03:05:23
Post Id



Частый гость


Покинул форум
Сообщений всего: 180
Дата рег-ции: Сент. 2012  
Откуда: Москва, Россия


Помог: 0 раз(а)




Собственно, постараюсь понятно и доходчиво объяснить суть проблемы.

Имеется 15 веб форм. Они методом POST передают обработчику данные. В обработчике требуется проверить на существование информации в этих переменных и в случае обнаружения таковой внести все данные построчно в базу.

Более подробно:

Имеются 15 checkbox -ов, пользователь может из них выбрать любые и в любом кол-ве. При подтверждении заполнения форм, все данные передаются скрипту обработчика.

В нем реализуется такая проверка :

PHP:
скопировать код в буфер обмена
  1. if (isset($_POST['a'])) { $a= $_POST['a'];
  2.         if ($a== '') { unset($a);} }  
  3. if (isset($_POST['b'])) { $a= $_POST['b'];
  4.         if ($b== '') { unset($b);} }  
  5. if (isset($_POST['c'])) { $a= $_POST['c'];
  6.         if ($c== '') { unset($c);} }  
  7. if (isset($_POST['d'])) { $a= $_POST['d'];
  8.         if ($d== '') { unset($d);} }  
  9. if (isset($_POST['e'])) { $a= $_POST['e'];
  10.         if ($e== '') { unset($e);} }  
  11.  
  12.             ---- || -----
  13.  
  14. if (isset($_POST['z'])) { $a= $_POST['z'];
  15.         if ($z== '') { unset($z);} }  
  16.  




Таким образом выполняется проверка существования выделения пользователем соответствующих чек-боксов.

Далее все данные надо занести в 1 переменную с разделением на строки :

PHP:
скопировать код в буфер обмена
  1.  
  2.  
  3. $gt = $a.'\n'.$b.'\n'.$c.'\n'.$d.'\n'.$e. ... .$z;
  4.  
  5.  



Собственно Это очень сырое написание. Убедительная просьба помочь сократить код, или помочь разобраться , возможно ли здесь применение цикла foreach.

(Отредактировано автором: 03 Октября, 2012 - 03:05:54)

 
 Top
tato
Отправлено: 03 Октября, 2012 - 03:47:50
Post Id



Посетитель


Покинул форум
Сообщений всего: 468
Дата рег-ции: Сент. 2011  
Откуда: Владивосток


Помог: 8 раз(а)




В форме:
CODE (html):
скопировать код в буфер обмена
  1.  
  2. ...
  3.  
  4. <input type="checkbox" name="mydata[checkbox_id]" />
  5.  
  6. ...
  7.  


Обрати внимание на name фактически мы создаем таким образом массив mydata, где
ключом является checkbox_id.

далее

PHP:
скопировать код в буфер обмена
  1.  
  2. if( isset( $_POST['mydata'] ) )
  3. {
  4.      // если массив существует
  5.  
  6.      // перебираем
  7.     foreach( $_POST['mydata'] as $checkbox_id=>$value )
  8.     {
  9.         echo "$checkbox_id was checked!<br>";
  10.     }
  11. }
  12.  


Отмечу, что $value всегда будет true (в данном примере), т.к. если чек бокс не выделен, он и не попадет в массив mydata.

(Отредактировано автором: 03 Октября, 2012 - 03:49:42)



-----
просто ?: сложно
 
 Top
Алтенрион
Отправлено: 03 Октября, 2012 - 04:04:02
Post Id



Частый гость


Покинул форум
Сообщений всего: 180
Дата рег-ции: Сент. 2012  
Откуда: Москва, Россия


Помог: 0 раз(а)




Честно говоря не очень уверен в применении такого варианта.

--- name у каждого чек бокса свой. так вместо checkbox_id надо будет 15 раз написать разный идентификатор id?

появляется даже при 1 отмеченном чек боксе...

PHP:
скопировать код в буфер обмена
  1. $gt = $a.'\n'.$b.'\n'.$c.'\n'.$d.'\n'.$e. ... .$z;
-- этот вариант записи применим для записи в бд построчно ?
В случае отсутствия переменной или ее идентичности пустоте, она будет записываться как пробел, или будет вызывать ошибку?



.

(Отредактировано автором: 03 Октября, 2012 - 04:04:21)

 
 Top
Okula
Отправлено: 03 Октября, 2012 - 07:04:40
Post Id



Участник


Покинул форум
Сообщений всего: 1389
Дата рег-ции: Окт. 2010  


Помог: 42 раз(а)




Алтенрион пишет:
--- name у каждого чек бокса свой. так вместо checkbox_id надо будет 15 раз написать разный идентификатор id?

Ну ты же писал для каждого чекбокса свой name, вот и подправь его. В чём проблема?
 
 Top
AlexAnder
Отправлено: 03 Октября, 2012 - 09:20:26
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 915
Дата рег-ции: Авг. 2012  
Откуда: Россия


Помог: 34 раз(а)




Спойлер (Отобразить)

(Отредактировано автором: 03 Октября, 2012 - 09:20:52)



-----
Оказывается, недостаточно читать справочники, чтобы правильно писать коды. sadex ©

Форумы стали местом обучения программированию, а не решения трудных вопросов. KingStar ©
 
 Top
Алтенрион
Отправлено: 03 Октября, 2012 - 14:30:35
Post Id



Частый гость


Покинул форум
Сообщений всего: 180
Дата рег-ции: Сент. 2012  
Откуда: Москва, Россия


Помог: 0 раз(а)




Okula пишет:
Алтенрион пишет:
--- name у каждого чек бокса свой. так вместо checkbox_id надо будет 15 раз написать разный идентификатор id?

Ну ты же писал для каждого чекбокса свой name, вот и подправь его. В чём проблема?



Я не говорю что это проблема, я уточняю как именно подправить... Закатив глазки
PHP:
скопировать код в буфер обмена
  1.  
  2.  
  3. <p id="not_rec" ><input type="checkbox"  name="a" value="r" /> ***********************************************</p>
  4. <p id="rec"><input type="checkbox"  name="b" value="r" />  ***********************************************</p>
  5. <p id="rec"><input type="checkbox"  name="c" value="r" />  ***********************************************</p>
  6. <p id="not_rec" ><input type="checkbox"  name="d" value="r" />  ***********************************************</p>
  7. <p id="not_rec" ><input type="checkbox"  name="e" value="r" />  *********************************************** </p>
  8. <p id="not_rec" ><input type="checkbox"  name="f" value="r" /> ***********************************************</p>
  9. <p id="rec"><input type="checkbox"  name="g" value="r" />  ***********************************************</p>
  10. <p id="not_rec" ><input type="checkbox"  name="k" value="r" />  *********************************************** </p>
  11. <p id="not_rec" ><input type="checkbox"  name="r" value="r" />  *********************************************** </p>



Заменить на :


PHP:
скопировать код в буфер обмена
  1.  
  2.  
  3. <p id="not_rec" ><input type="checkbox"  name="mydata[a]" value="r" /> ***********************************************</p>
  4. <p id="rec"><input type="checkbox"  name="mydata[b]" value="r" />  ***********************************************</p>
  5. <p id="rec"><input type="checkbox"  name="mydata[c]" value="r" />  ***********************************************</p>
  6. <p id="not_rec" ><input type="checkbox"  name="mydata[d]" value="r" />  ***********************************************</p>
  7. <p id="not_rec" ><input type="checkbox"  name="mydata[e]" value="r" />  *********************************************** </p>
  8. <p id="not_rec" ><input type="checkbox"  name="mydata[f]" value="r" /> ***********************************************</p>
  9. <p id="rec"><input type="checkbox"  name="mydata[g]" value="r" />  ***********************************************</p>
  10. <p id="not_rec" ><input type="checkbox"  name="mydata[k]" value="r" />  *********************************************** </p>
  11. <p id="not_rec" ><input type="checkbox"  name="mydata[r]" value="r" />  *********************************************** </p>
  12.  
  13.  






И что именно выполнит значение Value в строке

PHP:
скопировать код в буфер обмена
  1.  
  2.  
  3. foreach( $_POST['mydata'] as $checkbox_id=>$value )
  4.  
  5.  


Растерялся

/
 
 Top
AlexAnder
Отправлено: 03 Октября, 2012 - 14:39:46
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 915
Дата рег-ции: Авг. 2012  
Откуда: Россия


Помог: 34 раз(а)





http://www.php[dot]su/learnphp/cs/?cycles#foreach


Спойлер (Отобразить)

повторение id - not good

(Отредактировано автором: 03 Октября, 2012 - 14:50:13)



-----
Оказывается, недостаточно читать справочники, чтобы правильно писать коды. sadex ©

Форумы стали местом обучения программированию, а не решения трудных вопросов. KingStar ©
 
 Top
Алтенрион
Отправлено: 03 Октября, 2012 - 19:24:14
Post Id



Частый гость


Покинул форум
Сообщений всего: 180
Дата рег-ции: Сент. 2012  
Откуда: Москва, Россия


Помог: 0 раз(а)




Цитата:
повторение id - not good


Так где же повторение?... переменная меняется..
 
 Top
Мелкий Супермодератор
Отправлено: 03 Октября, 2012 - 21:21:19
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




Алтенрион пишет:
Так где же повторение?...

Речь о HTML. <p id=
id не должен повторяться на странице. На то он и id


-----
PostgreSQL DBA
 
 Top
sKaa
Отправлено: 03 Октября, 2012 - 21:24:44
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 979
Дата рег-ции: Окт. 2011  
Откуда: Россия г. Нижний Новгород


Помог: 25 раз(а)

[+]


CODE (html):
скопировать код в буфер обмена
  1. <input type="text" name="text[]" />
  2. <input type="text" name="text[]" />
  3. <input type="text" name="text[]" />
  4. <input type="text" name="text[]" />




Нет?

(Отредактировано автором: 03 Октября, 2012 - 21:50:21)

 
 Top
Алтенрион
Отправлено: 04 Октября, 2012 - 00:03:34
Post Id



Частый гость


Покинул форум
Сообщений всего: 180
Дата рег-ции: Сент. 2012  
Откуда: Москва, Россия


Помог: 0 раз(а)




Мелкий пишет:


Речь о HTML. <p id=
id не должен повторяться на странице. На то он и id




Насчет этого ,да, согласен. Вспомнил разницу между id и class и исправил. Просто писал первичный код будучи ну очень сонным, а потом и внимания не обращал.

Далее.



sKaa пишет:


CODE (html):
скопировать код в буфер обмена
  1.  
  2. скопировать код в буфер обмена
  3. <input type="text" name="text[]" />
  4. <input type="text" name="text[]" />
  5. <input type="text" name="text[]" />
  6. <input type="text" name="text[]" />





Нет?




Честно говоря совсем не понял (((((... <input type="text" -- это текстовое поле а не чек бокс. Но это не принципиально если речь о имени... а использование var_dump($_POST); мне не известно.




На данный момент фукционально реализован такой код:


Сами формы:

CODE (html):
скопировать код в буфер обмена
  1.  
  2.  
  3.  
  4. <p class="not_rec" ><input type="checkbox"  name="a" value="АААААААААААА" /> ААААААААААААААА </p>
  5. <p class="rec"><input type="checkbox"  name="b" value="ббббббббббббббб»" /> ббббббббббб &nbsp; &nbsp; &nbsp; <font color="#C10000">(рекомендуется) </font></p>
  6. <p class="rec"><input type="checkbox"  name="c" value="ввввввввввввввв" /> ввввввввввввввввввввв &nbsp;&nbsp;&nbsp; <font color="#C10000">(рекомендуется) </font></p>
  7. <p class="not_rec" ><input type="checkbox"  name="d" value="гггггггггггггггггггггггггг" /> ггггггггггггггггггггггггггггггггггггггг </p>
  8. <p class="not_rec" ><input type="checkbox"  name="e" value="ддддддддддддддддд." />ддддддддддддддддддддддддд</p>
  9. <p class="not_rec" ><input type="checkbox"  name="f" value="ееееееееееееееееееееее" /> ееееееееееееееееееееееееее</p>
  10.  
  11.  
  12.  






Вот код обработчика для них :

PHP:
скопировать код в буфер обмена
  1.  
  2.  
  3. if (isset($_POST['a'])) { $b = $_POST['a'];
  4.         if ($a == '') { unset($a);} }
  5.         if (isset($_POST['b'])) { $b = $_POST['b'];
  6.         if ($b == '') { unset($b);} }
  7.         if (isset($_POST['c'])) { $c = $_POST['c'];
  8.         if ($c == '') { unset($c);} }
  9.         if (isset($_POST['d'])) { $d = $_POST['d'];
  10.         if ($d == '') { unset($d);} }
  11.         if (isset($_POST['e'])) { $e = $_POST['e'];
  12.         if ($e == '') { unset($e);} }
  13.         if (isset($_POST['f'])) { $f = $_POST['f'];
  14.         if ($f == '') { unset($f);} }
  15.        
  16.        
  17.         $gt=$a.'<br>'.$b.'<br>'.$c.'<br>'.$d.'<br>'.$e.'<br>'.$f;
  18.  
  19.  
  20.  





Далее через запрос данные заносятся в нужную базу:

PHP:
скопировать код в буфер обмена
  1.  
  2.  
  3.  $result2 = mysql_query ("INSERT INTO название таблицы (***,****,*****,***,***,***,****,***,***,gt) VALUES('$***','$***','$****','$***','$***','$***','$***','$***','$****','$gt')");
  4.  
  5.  
  6.  



В чем суть оставшихся проблем:

    1)Не нравится нагромождение кода.
    2)Требуется что бы переменные $a $b $c $d $e $f сохранялись в базе построчно, и в случае отсутствия какого либо из элементов, чтобы его там не было, чтобы он не заносился в переменную $gt. Ну или хотя бы что бы в место него не было пустых строк.



Помогите с этими вопросами, буду признателен. Однако



.

(Отредактировано автором: 04 Октября, 2012 - 00:07:45)

 
 Top
tato
Отправлено: 04 Октября, 2012 - 06:30:07
Post Id



Посетитель


Покинул форум
Сообщений всего: 468
Дата рег-ции: Сент. 2011  
Откуда: Владивосток


Помог: 8 раз(а)




Накидал тебе пример.

Спойлер (Отобразить)


-----
просто ?: сложно
 
 Top
AlexAnder
Отправлено: 04 Октября, 2012 - 10:56:15
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 915
Дата рег-ции: Авг. 2012  
Откуда: Россия


Помог: 34 раз(а)





uchenikpopovadetected пишет:
Спойлер (Отобразить)
бррр

(Добавление)
Алтенрион пишет:

В чем суть оставшихся проблем:

    1)Не нравится нагромождение кода.
    2)Требуется что бы переменные $a $b $c $d $e $f сохранялись в базе построчно, и в случае отсутствия какого либо из элементов, чтобы его там не было, чтобы он не заносился в переменную $gt. Ну или хотя бы что бы в место него не было пустых строк.

.

посмотри этот пост
Спойлер (Отобразить)

(Отредактировано автором: 04 Октября, 2012 - 11:08:45)



-----
Оказывается, недостаточно читать справочники, чтобы правильно писать коды. sadex ©

Форумы стали местом обучения программированию, а не решения трудных вопросов. KingStar ©
 
 Top
Алтенрион
Отправлено: 05 Октября, 2012 - 18:43:03
Post Id



Частый гость


Покинул форум
Сообщений всего: 180
Дата рег-ции: Сент. 2012  
Откуда: Москва, Россия


Помог: 0 раз(а)




Я не понимаю приводимую вами конструкцию. ((( Простите, видимо я настолько зелен.

Сначала по видимому идет html формы. За ними php код. В php коде объявляется условие.

если имеется что либо передаваемое методогм пост, то происходит приравнивание 3 переменных .

Что именно выполняется после знака "?" в трех строчках подряд.
Если условие выполняется, то выдаем таблицу...

Далее продолжается условие.. что оно делает не могу разобрать.(
 
 Top
Алтенрион
Отправлено: 05 Октября, 2012 - 21:08:38
Post Id



Частый гость


Покинул форум
Сообщений всего: 180
Дата рег-ции: Сент. 2012  
Откуда: Москва, Россия


Помог: 0 раз(а)




грустно... Огорчение

(Отредактировано автором: 06 Октября, 2012 - 04:31:15)

 
 Top
Страниц (3): [1] 2 3 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB