Форум программистов, компьютерный форум, киберфорум
PHP: базы данных
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.56/18: Рейтинг темы: голосов - 18, средняя оценка - 4.56
12 / 12 / 0
Регистрация: 29.08.2010
Сообщений: 613
1

Запрос с большим количеством параметров

16.07.2011, 21:14. Показов 3283. Ответов 21
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
у меня сайт интернет магазин по продаже ламп, там есть подборка ламп например
по количеству ват и там chekbox гаджеты, то есть можно несколько вариантов выбирать, и так целая форма. и как сделать запрос на выбор ламп из базы mysql если очень много вариантов?

Добавлено через 3 часа 50 минут
Вроде лёгкий вопрос
Мне просто надо запрос по отмеченным chekbox
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.07.2011, 21:14
Ответы с готовыми решениями:

Работа с большим количеством данных
Есть форма добавления нового рабочего, примерно 40 полей... Передаются они постом. Первые 10 я...

Не добавляются записи с большим количеством текста в БД
Не добавляются записи примерно больше 2000 символов <form method="post" action="news.php"> ...

Рефакторинг: функция с большим количеством параметров
День добрый. Скажите плз, гуру рефакторинга. Вот есть функция и в нее передаётся туча параметров....

Как лучше всего работать с большим количеством параметров для класса?
Есть класс, который имеет около 5 свойств, которые ему нужно задать, это помимо ещё около 3-ех...

21
55 / 54 / 25
Регистрация: 07.05.2011
Сообщений: 155
16.07.2011, 21:44 2
Цитата Сообщение от aristov-96 Посмотреть сообщение
у меня сайт интернет магазин по продаже ламп, там есть подборка ламп например
по количеству ват и там chekbox гаджеты, то есть можно несколько вариантов выбирать, и так целая форма. и как сделать запрос на выбор ламп из базы mysql если очень много вариантов?

Добавлено через 3 часа 50 минут
Вроде лёгкий вопрос
Мне просто надо запрос по отмеченным chekbox
покажи форму чтоли
1
12 / 12 / 0
Регистрация: 29.08.2010
Сообщений: 613
17.07.2011, 18:28  [ТС] 3
вот форма по ней мне надо запрос
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
<FORM action="post2.php" method="POST">
Мощность, Вт:
<br>
         <INPUT TYPE="checkbox" NAME="vt1">5
         <INPUT TYPE="checkbox" NAME="vt2">7
         <INPUT TYPE="checkbox" NAME="vt3">9
         <INPUT TYPE="checkbox" NAME="vt4">11
         <INPUT TYPE="checkbox" NAME="vt5">13
         <INPUT TYPE="checkbox" NAME="vt6">15<br>
         <INPUT TYPE="checkbox" NAME="vt7">16
         <INPUT TYPE="checkbox" NAME="vt8">18
         <INPUT TYPE="checkbox" NAME="vt9">20
         <INPUT TYPE="checkbox" NAME="vt10">23
         <INPUT TYPE="checkbox" NAME="vt11">25<br>
Цоколь:
<br>
         <INPUT TYPE="checkbox" NAME="co1">B22d
         <INPUT TYPE="checkbox" NAME="co2">E14
         <INPUT TYPE="checkbox" NAME="co3">E27
         <INPUT TYPE="checkbox" NAME="co4">GU10
         <INPUT TYPE="checkbox" NAME="co5">MR16<br>
Цветовая температура, К:
<br>
         <INPUT TYPE="checkbox" NAME="ct1">2700
         <INPUT TYPE="checkbox" NAME="ct2">4000
         <INPUT TYPE="checkbox" NAME="ct3">6400<br>
Форма:
<br>
         <INPUT TYPE="checkbox" NAME="op1">Спираль
         <INPUT TYPE="checkbox" NAME="op2">Свеча
         <INPUT TYPE="checkbox" NAME="op3">Шар
         <INPUT TYPE="checkbox" NAME="op4">Рефлектор
         <INPUT TYPE="checkbox" NAME="op5">Цилиндр
         <INPUT TYPE="checkbox" NAME="op6">4-трубч.<br>
         <INPUT TYPE="checkbox" NAME="op7">8-трубч.
         <INPUT TYPE="checkbox" NAME="op8">Микроспираль
         <INPUT TYPE="checkbox" NAME="op9">LED<br>
         <input type="submit" value="Подобрать" name="submit2" >
</FORM>
Добавлено через 1 час 49 минут
помогите пожалуйста, не получается у меня вообще никак, вот форма там пользователь отмечает какие лампочки нужно нажимает на кнопку, и должно в скрипте post2.php отобразить лампочки по его запросу
0
55 / 54 / 25
Регистрация: 07.05.2011
Сообщений: 155
17.07.2011, 20:07 4
во первых твоя форма бесполезна, тебе придётся поменять. Твои чекбоксы совершенно ничего не сообщают что выбирать, проще сказать ты понаделал чекбоксов и отделаьно понаписал текст.

сделай так:

HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
<FORM action="post2.php" method="POST">
Мощность, Вт:
<br>
         <INPUT TYPE="checkbox" NAME="vt[]" value="5">5
         <INPUT TYPE="checkbox" NAME="vt[]" value="7">7
         <INPUT TYPE="checkbox" NAME="vt[]" value="9">9
         <INPUT TYPE="checkbox" NAME="vt[]" value="11">11
         <INPUT TYPE="checkbox" NAME="vt[]" value="13">13
         <INPUT TYPE="checkbox" NAME="vt[]" value="15">15<br>
         <INPUT TYPE="checkbox" NAME="vt[]" value="16">16
         <INPUT TYPE="checkbox" NAME="vt[]" value="18">18
         <INPUT TYPE="checkbox" NAME="vt[]" value="20">20
         <INPUT TYPE="checkbox" NAME="vt[]" value="23">23
         <INPUT TYPE="checkbox" NAME="vt[]" value="25">25<br>
Цоколь:
<br>
         <INPUT TYPE="checkbox" NAME="co[]" value="B22d">B22d
         <INPUT TYPE="checkbox" NAME="co[]" value="E14">E14
         <INPUT TYPE="checkbox" NAME="co[]" value="E27">E27
         <INPUT TYPE="checkbox" NAME="co[]" value="GU10">GU10
         <INPUT TYPE="checkbox" NAME="co[]" value="MR16">MR16<br>
Цветовая температура, К:
<br>
         <INPUT TYPE="checkbox" NAME="ct[]" value="2700">2700
         <INPUT TYPE="checkbox" NAME="ct[]" value="4000">4000
         <INPUT TYPE="checkbox" NAME="ct[]" value="6400">6400<br>
Форма:
<br>
         <INPUT TYPE="checkbox" NAME="op[]" value="Спираль">Спираль
         <INPUT TYPE="checkbox" NAME="op[]" value="Свеча">Свеча
         <INPUT TYPE="checkbox" NAME="op[]" value="Шар">Шар
         <INPUT TYPE="checkbox" NAME="op[]" value="Рефлектор">Рефлектор
         <INPUT TYPE="checkbox" NAME="op[]" value="Цилиндр">Цилиндр
         <INPUT TYPE="checkbox" NAME="op[]" value="4-трубч.">4-трубч.<br>
         <INPUT TYPE="checkbox" NAME="op[]" value="8-трубч.">8-трубч.
         <INPUT TYPE="checkbox" NAME="op[]" value="Микроспираль">Микроспираль
         <INPUT TYPE="checkbox" NAME="op[]" value="LED">LED<br>
         <input type="submit" value="Подобрать" name="submit2" >
</FORM>
вот тебе функция, засунь её в файл-обработчик:

PHP
1
2
3
4
5
6
7
8
    function aristov_96($param){
 $sql = "(" ;
 foreach($param as $val) $sql.= "$val,";
 $sql = substr($sql, 0, strlen($sql) - 1 ). ")" ;
 
$sql = "SELECT * FROM таблица WHERE vt IN ".$sql;
return mysql_query($sql);
 }
дальше приведу пример:

PHP
1
2
3
4
$vt = aristov_96($_POST['vt']);
while($res = mysql_fetch_assoc($vt)){
echo $res['id'].'  '.$res['vt] # короче говоря значения в таблице
}
конечно на 100% незная что ты хочешь как у тебя там всё устроенно и т.д. нельзя гарантировать 100% результат, попытайся разобратся. Если что спрашивай)
1
12 / 12 / 0
Регистрация: 29.08.2010
Сообщений: 613
18.07.2011, 07:41  [ТС] 5
спс, на ночь голова не варит, завтра разберусь

Добавлено через 9 часов 59 минут
большое спасибо так как всё работает на 100%)

Добавлено через 2 минуты
а как теперь в функцию добавить что бы было не только vt а и co, ct, op?
0
55 / 54 / 25
Регистрация: 07.05.2011
Сообщений: 155
18.07.2011, 10:49 6
Цитата Сообщение от aristov-96 Посмотреть сообщение
спс, на ночь голова не варит, завтра разберусь

Добавлено через 9 часов 59 минут
большое спасибо так как всё работает на 100%)

Добавлено через 2 минуты
а как теперь в функцию добавить что бы было не только vt а и co, ct, op?
1им запросом чтобы всё вызывалось?
1
12 / 12 / 0
Регистрация: 29.08.2010
Сообщений: 613
18.07.2011, 11:15  [ТС] 7
да мне без разницы лишь бы вывести все данные о лампе)
0
55 / 54 / 25
Регистрация: 07.05.2011
Сообщений: 155
18.07.2011, 11:28 8
тогда поменяй функцию:

PHP
1
2
3
4
5
6
7
8
function aristov_96($param,$column){
 $sql = "(" ;
 foreach($param as $val) $sql.= "$val,";
 $sql = substr($sql, 0, strlen($sql) - 1 ). ")" ;
 
$sql = "SELECT * FROM таблица WHERE ".$column." IN ".$sql;
return mysql_query($sql);
 }
во второй параметр передавай столбец:

PHP
1
2
3
4
5
6
7
8
$vt = aristov_96($_POST['vt'],'vt');
while($res = mysql_fetch_assoc($vt)){
echo $res['id'].'  '.$res['vt'] # короче говоря значения в таблице
}
$co = aristov_96($_POST['co'],'co');
while($res = mysql_fetch_assoc($co)){
echo $res['id'].'  '.$res['co'] # короче говоря значения в таблице
}
и так далее....
конечно это не идеальное решение, но много думать лень )
1
12 / 12 / 0
Регистрация: 29.08.2010
Сообщений: 613
18.07.2011, 12:07  [ТС] 9
а если пользователь выбирает только по форме или температуре, то вылетает ошибка потому что по ватам он ничего не указал, как сделать что бы пользователю не обезательно было указывать количество ват?
0
55 / 54 / 25
Регистрация: 07.05.2011
Сообщений: 155
18.07.2011, 12:24 10
добавь условие, что то вроде

PHP
1
2
3
if(!empty($_POST['vt']){
. . . .
}
и так далее, хотя наверное это не есть хорошо
1
12 / 12 / 0
Регистрация: 29.08.2010
Сообщений: 613
18.07.2011, 15:40  [ТС] 11
странно добавил условие, перед выводом каждого поля(ваты, цоколь и т.д.), а он всё равно пишет
Код
Warning: Invalid argument supplied for foreach() in <Имя скрипта> on line 88

Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in <Имя скрипта> on line 95
строка 88
PHP
1
foreach($param as $val) $sql.= "$val,";
и строка 95
PHP
1
$vt = prod($_POST['vt']);
условие стоит правильно

Добавлено через 29 минут
ещё он почему то только по ватам выносит, другие не учитывает
0
55 / 54 / 25
Регистрация: 07.05.2011
Сообщений: 155
18.07.2011, 17:53 12
Вы не передаёте второй параметр в функцию
1
12 / 12 / 0
Регистрация: 29.08.2010
Сообщений: 613
18.07.2011, 18:16  [ТС] 13
то есть это неправильно?
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
if(!empty($_POST['vt']){
$vt = prod($_POST['vt']);
while($res = mysql_fetch_assoc($vt)){
echo '<html>
<DIV ALIGN="right">
         <TABLE ALIGN="right" BORDER="0" >
         <TH>
<TD>'; 
$name = $res['name'];
  echo '<IMG src="/images/'.$name.'.jpg"><br>';
 echo( $name);
 echo '<html>
</TD></TH>
         </TABLE>
</DIV>
</html>';
}
}
if(!empty($_POST['vt']){
$co = prod($_POST['co']);
while($res2 = mysql_fetch_assoc($co)){
echo '<html>
<DIV ALIGN="right">
         <TABLE ALIGN="right" BORDER="0" >
         <TH>
<TD>'; 
$name2 = $res2['name'];
  echo '<IMG src="/images/'.$name2.'.jpg"><br>';
 echo( $name2);
 echo '<html>
</TD></TH>
         </TABLE>
</DIV>
</html>';
}
}
0
55 / 54 / 25
Регистрация: 07.05.2011
Сообщений: 155
18.07.2011, 18:22 14
будьте внимательнее ранее я написал что функцию надо заменить, и что второй параметр теперь для неё название столбца из в вашей таблици.

к тому же где у вас вызывается 'co' у вас проверка на пост[ваты].

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
if(!empty($_POST['vt'],'vt'){
$vt = prod($_POST['vt']);
while($res = mysql_fetch_assoc($vt)){
echo '<html>
<DIV ALIGN="right">
         <TABLE ALIGN="right" BORDER="0" >
         <TH>
<TD>'; 
$name = $res['name'];
  echo '<IMG src="/images/'.$name.'.jpg"><br>';
 echo( $name);
 echo '<html>
</TD></TH>
         </TABLE>
</DIV>
</html>';
}
}
if(!empty($_POST['co'],'co'){
$co = prod($_POST['co']);
while($res2 = mysql_fetch_assoc($co)){
echo '<html>
<DIV ALIGN="right">
         <TABLE ALIGN="right" BORDER="0" >
         <TH>
<TD>'; 
$name2 = $res2['name'];
  echo '<IMG src="/images/'.$name2.'.jpg"><br>';
 echo( $name2);
 echo '<html>
</TD></TH>
         </TABLE>
</DIV>
</html>';
}}
1
12 / 12 / 0
Регистрация: 29.08.2010
Сообщений: 613
18.07.2011, 19:17  [ТС] 15
не заметил) два кода рядом лежало, перепутал старый с новым.
спасибо за помощь
0
55 / 54 / 25
Регистрация: 07.05.2011
Сообщений: 155
18.07.2011, 19:41 16
нет проблем
1
12 / 12 / 0
Регистрация: 29.08.2010
Сообщений: 613
19.07.2011, 12:05  [ТС] 17
я не могу выводить по двум полям(цоколь и форма), т.к. с кодировкой проблемы, как только не пытался решить, на форуме читал, все способы перепробовал ничего не помогает, а если я сделаю эти поля типа int, например цоколь в базу отправлять буду цифру "1", а когда получать, буду ставить условие, если равно 1, то цоколь будет B22d и так далее, как такое рализовать?
0
55 / 54 / 25
Регистрация: 07.05.2011
Сообщений: 155
19.07.2011, 12:51 18
проще решить проблему с кодировкой
1
12 / 12 / 0
Регистрация: 29.08.2010
Сообщений: 613
19.07.2011, 17:45  [ТС] 19
в моём случае проблема с кодировкой сложнее её походу не решить, так как видимо дело в хостинге
0
55 / 54 / 25
Регистрация: 07.05.2011
Сообщений: 155
19.07.2011, 17:53 20
очень странно) вроде больших затрат не требует
1
19.07.2011, 17:53
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.07.2011, 17:53
Помогаю со студенческими работами здесь

Запрос к БД с большим количеством записей
Привет всем! Подскажите кто может, как уменьшить время запроса к базе mysql с 30 млн. записей? ...

Как оптимизировать запрос с большим количеством join к одной и той же таблице?
Здравствуйте. Есть таблица вида : id fk1 fk2 1 1 7 2 1 3 3 1 9 4 2 ...

Эксперимент с большим количеством прогонов
Здравствуйте. У меня есть модель, построенная на дискретно-событийном моделировании, в общем я с...

Программа с большим количеством форм
Стоит задача сделать программу с большим количеством форм ( около 50), т.е. на форме примерно...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru