Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.03.2009, 18:12   #1
mimimi
 
Регистрация: 12.03.2009
Сообщений: 4
Восклицание Простая вещь, кажется сложной, или я ошибаюсь?

Такая проблема.
Есть форма, в которой каждый раз разное количество полей, например список сообщений, возле каждого сообщения поле для галочки, и общая кнопка «Удалить»
Задача: Проверить при помощи пхп какие сообщения отмечены и соответственно от тех, на которых стоит галочка отправить запрос в базу на удаление.
С виду все просто! Но блин как узнать какие именно сообщения отмечены? Если через POST мне передаются сообщения типа:
$_POST['sbg_1']
$_POST['sbg_2']
$_POST['sbg_3']
$_POST['sbg_4']
$_POST['sbg_'5
....
$_POST['sbg_n']

точное количество и название, которых я не знаю. Ничего сложного вроде, но у меня не укладывается в голове как это реализовать. Помогите справиться с задачей? pls...

ps А может я где-то изначально ошибся?

Последний раз редактировалось mimimi; 12.03.2009 в 18:16.
mimimi вне форума Ответить с цитированием
Старый 12.03.2009, 18:56   #2
mimimi
 
Регистрация: 12.03.2009
Сообщений: 4
По умолчанию

Для большей наглядности кидаю пример скрипта (немного отличается от описания, но смысл проблемы тотже):
Код:
// главное условие что количество детей может быть разное
echo '
<form action=# method=post name=chld id=chld>
<input type="text" name="d1" value="Маша"><br />
<input type="text" name="d2" value="Вася"><br />
<input type="text" name="d3" value="Петя"><br />
<input type="text" name="d4" value="Сергей"><br />
<input type="text" name="d5" value="Егор"><br />
<input type="text" name="cilvo" value="5"><br />
<input type="submit" name="submit" id="submit" value="Отправить">
</form>
';

if (isset($_POST['submit']))
{
echo '<br />Количество детей: '.$_POST['cilvo'];

for ($i=0;$i<=$_POST['cilvo'];$i++)
{
// что здесь написать???????????
	echo '<br />Имена детей: '.$_POST[''];
}

}
mimimi вне форума Ответить с цитированием
Старый 12.03.2009, 19:17   #3
JekaX
Пользователь
 
Регистрация: 11.03.2009
Сообщений: 38
По умолчанию

Цитата:
Сообщение от mimimi Посмотреть сообщение
Такая проблема.
Есть форма, в которой каждый раз разное количество полей, например список сообщений, возле каждого сообщения поле для галочки, и общая кнопка «Удалить»
Задача: Проверить при помощи пхп какие сообщения отмечены и соответственно от тех, на которых стоит галочка отправить запрос в базу на удаление.
С виду все просто! Но блин как узнать какие именно сообщения отмечены? Если через POST мне передаются сообщения типа:
$_POST['sbg_1']
$_POST['sbg_2']
$_POST['sbg_3']
$_POST['sbg_4']
$_POST['sbg_'5
....
$_POST['sbg_n']

точное количество и название, которых я не знаю. Ничего сложного вроде, но у меня не укладывается в голове как это реализовать. Помогите справиться с задачей? pls...

ps А может я где-то изначально ошибся?
Предположем что Ваши поля будут называться sbgn, n-чилсло, начинаются с 1
PHP код:
for ($i=1$i<100$i++)
{
$str="sbg".$i;
if (
$_POST[$str]!=NULL)
{
//Тут пишем запрос к базе
}
else
{exit;}

Метод топорный, писал прямо тут.
JekaX вне форума Ответить с цитированием
Старый 13.03.2009, 13:20   #4
mimimi
 
Регистрация: 12.03.2009
Сообщений: 4
По умолчанию

Спасибо. Я впринцепи пришел к подобному решению:

for ($i=1;isset($_POST[sbf.'$i']); $i++)
{
//Тут пишем запрос к базе
}

Но Ваш метод лучше, потому как в случае если после:
$_POST[sbf1] идет $_POST[sbf3]), то у меня цикл останавливался.

Но, проблема исчерпана, спасибо.
mimimi вне форума Ответить с цитированием
Старый 13.03.2009, 17:25   #5
mv28jam
Старожил
 
Аватар для mv28jam
 
Регистрация: 09.09.2008
Сообщений: 2,624
По умолчанию

Это делается так
Код HTML:
<form action='test.php' method='POST'>
<input  type='text' name='b[1]'  size=15 ><br>
<input  type='text' name='b[2]'  size=15 ><br>
<input  type='checkbox' name='a[1]'  size=15 ><br>
<input  type='checkbox' name='a[2]'  size=15 ><br>
<input name='submit1' type='submit' value='Отправить'>
</form>
как с этим работать
PHP код:
var_dump($_POST['a']);
var_dump($_POST['b']); 
и будет
Код:
array(2) { [1]=> string(2) "on" [2]=> string(2) "on" } 
array(2) { [1]=> string(3) "fhf" [2]=> string(2) "hg" }
a перебор выполнять foreach
-----------------------------
Модератор пожалуйста удалите это Г!
PHP код:
for ($i=1$i<100$i++) 

$str="sbg".$i
if (
$_POST[$str]!=NULL

//Тут пишем запрос к базе 

else 
{exit;} 

Стрелок-охотник

Последний раз редактировалось mv28jam; 13.03.2009 в 22:08.
mv28jam вне форума Ответить с цитированием
Старый 13.03.2009, 17:44   #6
JekaX
Пользователь
 
Регистрация: 11.03.2009
Сообщений: 38
По умолчанию

Цитата:
Сообщение от mv28jam Посмотреть сообщение
Это делается так
Код HTML:
<form action='test.php' method='POST'>
<input  type='text' name='b[1]'  size=15 ><br>
<input  type='text' name='b[2]'  size=15 ><br>
<input  type='checkbox' name='a[1]'  size=15 ><br>
<input  type='checkbox' name='a[2]'  size=15 ><br>
<input name='submit1' type='submit' value='Отправить'>
</form>
как с этим работать
PHP код:
var_dump($_POST['a']);
var_dump($_POST['b']); 
и будет
Код:
array(2) { [1]=> string(2) "on" [2]=> string(2) "on" } 
array(2) { [0]=> string(3) "fhf" [1]=> string(2) "hg" }
a перебор выполнять foreach
-----------------------------
Модератор пожалуйста удалите это Г!
PHP код:
for ($i=1$i<100$i++) 

$str="sbg".$i
if (
$_POST[$str]!=NULL

//Тут пишем запрос к базе 

else 
{exit;} 

И чем же ваше предложение лучше? тож самое, если дописать проверку.
Тем более что вы не выполнили условие поставленной задачи, а именно посмотрите у ТС название полей в форме
JekaX вне форума Ответить с цитированием
Старый 13.03.2009, 18:08   #7
mv28jam
Старожил
 
Аватар для mv28jam
 
Регистрация: 09.09.2008
Сообщений: 2,624
По умолчанию

Цитата:
И чем же ваше предложение лучше? тож самое, если дописать проверку.
Ну это просто смешно! Человек который задал вопрос изначально неправильно передает значения. Передавать надо массив.
А ваш так называемый "код" это просто ужас!
А если значений будет 101?
А зачем мы проверяем заведомо пустые переменные?

Это сообщение флуд и будет удалено, у Вас закрыта личка поэтому пишу сюда.
Стрелок-охотник
mv28jam вне форума Ответить с цитированием
Старый 13.03.2009, 18:17   #8
JekaX
Пользователь
 
Регистрация: 11.03.2009
Сообщений: 38
По умолчанию

Цитата:
Сообщение от mv28jam Посмотреть сообщение
Ну это просто смешно! Человек который задал вопрос изначально неправильно передает значения. Передавать надо массив.
А ваш так называемый "код" это просто ужас!
А если значений будет 101?
А зачем мы проверяем заведомо пустые переменные?

Это сообщение флуд и будет удалено, у Вас закрыта личка поэтому пишу сюда.
А с чего вы взяли что передавать надо массив а не строку?
значение 101 это частный случай, ТС уже с этим разобрался а именно
PHP код:
for ($i=0;$i<=$_POST['cilvo'];$i++) 
, а как вы собрались инзертить в базу без проверки?
JekaX вне форума Ответить с цитированием
Старый 13.03.2009, 22:10   #9
mv28jam
Старожил
 
Аватар для mv28jam
 
Регистрация: 09.09.2008
Сообщений: 2,624
По умолчанию

Я даже не знаю как отвечать на такие глупые заявления.
Стрелок-охотник
mv28jam вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Мне кажется, или... theos О форуме и сайтах клуба 17 18.12.2008 22:50
Шрифты. Мне кажется или я долго не был? AngelOfDeath О форуме и сайтах клуба 1 26.09.2008 17:24
Подскажите простую вещь, пример прилагается redcarpet HTML и CSS 9 29.01.2008 03:07
Объясните чайнику одну вещь Riddick2013 Помощь студентам 1 03.01.2008 21:37