Другие языки программирования и технологии
php и mysql
Подскажите пожалуйста, уже голову сломалможет здесь найдутся люди кто вкурсе, очень нада.у меня на форме 3 чекбокса (check1, check2, check3), и есть БД в которой 3 поля (data1, data2, data3). так вот в зависимости от выбранных чекбоксов, необходимо проверить данные в полях бд и вывести записи, удовлетворяющие условию. Допустим:если выбран check1, то вывести записи, в кот-х поле data1 не пустое ну или равно как-то значению, в противном слу-е все записиесли выбран check2, то вывести записи, дата создания (data2) которых больше указанной датыесли выбран check3, то вывести записи, у которых data3 равна указанной дате.могут быть выбраны несколько чекбоксов. допустим первый и второй, тогда выводятся записи, где поде data1 не пустое и в поле data2 дата больше указанной.вообщем вот типа такого фильтра надо сделать, в зависимости от чеков проверяется каждая запись на соответствие полей.заранее огромное спасибо
Весь код писать не буду) ) Vesna все уже написала)
НО.. .
Предложу сделать так:
< form name="one" method="post" >
< input type="Checkbox" id="check1" >Первый
< input type="Checkbox" id="check2" >Второй
< input type="Checkbox" id="check3" >Третий
< input type="hidden" id="summa" >
< input type="button" value="click" onclick="sel();" >
< /form>
< script>
function sel()
{
var sum = 0;
if(document.one.check1.checked) sum+=1;
if(document.one.check2.checked) sum+=2;
if(document.one.check3.checked) sum+=4;
document.one.summa.value=sum;
document.one.submit();
}
< /script>
Суть такова - посредством суммирования получаем уникальное для каждой комбинации число.
Это чем-то похоже на chmod ))))
1=1 - выбран check1
2=2 - выбран check2
3=1+2 - выбран check1 и check2
4=4 - выбран check3
5=1+4 - выбран check1 и check3
6=2+4 - выбран check2 и check3
7=1+2+4 - выбраны все
а в PHP уже обрабатываем возможные значения (их всего будет 7):
switch(intval($_POST['summa']))
{
case 1:$qv=" select * from dates where data1!=NULL and data1='указанная дата';"; break;
case 2:$qv=" select * from dates where data2 between 'заданая дата' and CURRENT_DATE();"; break;
case 3:$qv=""; break; // тут пиши какой хочешь запрос (это будет когда 1 и 2 выбраны)
case 4:$qv=" select * from dates where data3='указанная дата';"; break;
case 5:$qv=" "; break; // выбраны 1 и 3
case 6:$qv=" "; break; // выбраны 2 и 3
case 7:$qv=" "; break; // выбраны все
}
@mysql_query($qv);
PSНикто не запрещает в качестве интервала даты использовать > < , но лучше between
PPS копипастить не советую, т. к. мог ошибок в коде наделать))))
НО.. .
Предложу сделать так:
< form name="one" method="post" >
< input type="Checkbox" id="check1" >Первый
< input type="Checkbox" id="check2" >Второй
< input type="Checkbox" id="check3" >Третий
< input type="hidden" id="summa" >
< input type="button" value="click" onclick="sel();" >
< /form>
< script>
function sel()
{
var sum = 0;
if(document.one.check1.checked) sum+=1;
if(document.one.check2.checked) sum+=2;
if(document.one.check3.checked) sum+=4;
document.one.summa.value=sum;
document.one.submit();
}
< /script>
Суть такова - посредством суммирования получаем уникальное для каждой комбинации число.
Это чем-то похоже на chmod ))))
1=1 - выбран check1
2=2 - выбран check2
3=1+2 - выбран check1 и check2
4=4 - выбран check3
5=1+4 - выбран check1 и check3
6=2+4 - выбран check2 и check3
7=1+2+4 - выбраны все
а в PHP уже обрабатываем возможные значения (их всего будет 7):
switch(intval($_POST['summa']))
{
case 1:$qv=" select * from dates where data1!=NULL and data1='указанная дата';"; break;
case 2:$qv=" select * from dates where data2 between 'заданая дата' and CURRENT_DATE();"; break;
case 3:$qv=""; break; // тут пиши какой хочешь запрос (это будет когда 1 и 2 выбраны)
case 4:$qv=" select * from dates where data3='указанная дата';"; break;
case 5:$qv=" "; break; // выбраны 1 и 3
case 6:$qv=" "; break; // выбраны 2 и 3
case 7:$qv=" "; break; // выбраны все
}
@mysql_query($qv);
PSНикто не запрещает в качестве интервала даты использовать > < , но лучше between
PPS копипастить не советую, т. к. мог ошибок в коде наделать))))
Максим Тен
спасибо, вроде понятно и то что нужно, просто видимо без перебора всевозможных вариантов не обойтись, я думал, что можно как-то проще сделать. но вот интересно, если как на многих сайтах видел, там возможность выбора возрастает, на форме этих чекбоксов около сорока, ну допустим такой вопрос: какими языками владеете и перечислины все языки, нужно выбрать, так это замучиешься просчитывать все варианты. Вот у меня допустим на данный момент 4 чекбокса, это получается, что уже 11 вариантов надо просчитать, если не ошибаюсь.
Что то типо такого, только я не поняла, зачем в таблице БД 3 одинаковых поля, ведь там храниться дата, как я поняла? и чем отличается обработчик check1 и check3
< ?
if ($_POST['Sub'])
{
if ($_POST['check1'])
{
$sql="Select * from my_table where data1!=' ' ' "; // или data1='Значение'
$result=mysql_query($sql);
while ($tmp = mysql_fetch_array($result))
{
echo $tmp[' Значение поле']; // вобщем то что тебе надо
}
}
if ($_POST['check2'])
{
$today = date("Y-m-d");
$sql="Select * from my_table where data2 >".$today." ";
...
}
if ($_POST['check3'])
{
$today = date("Y-m-d");
$sql="Select * from my_table where data3 =".$today." ";
...
}
}
? >
< form action="temp.php" enctype="multipart/form-data" method="post" >
< input type="Checkbox" name="check1" >Первый
< input type="Checkbox" name="check2" >Второй
< input type="Checkbox" name="check3" >Третий
< input type="Submit" name="Sub" >
< /form>
< ?
if ($_POST['Sub'])
{
if ($_POST['check1'])
{
$sql="Select * from my_table where data1!=' ' ' "; // или data1='Значение'
$result=mysql_query($sql);
while ($tmp = mysql_fetch_array($result))
{
echo $tmp[' Значение поле']; // вобщем то что тебе надо
}
}
if ($_POST['check2'])
{
$today = date("Y-m-d");
$sql="Select * from my_table where data2 >".$today." ";
...
}
if ($_POST['check3'])
{
$today = date("Y-m-d");
$sql="Select * from my_table where data3 =".$today." ";
...
}
}
? >
< form action="temp.php" enctype="multipart/form-data" method="post" >
< input type="Checkbox" name="check1" >Первый
< input type="Checkbox" name="check2" >Второй
< input type="Checkbox" name="check3" >Третий
< input type="Submit" name="Sub" >
< /form>
Виталий Удовиченко
это маленько не то
ему нужно чтобы была возможность использовать запрос типа 'Select * from my_table where data1 =".$sdata1." and data3 =".$sdata3."'
тут нужно наращивание
но т.к. пых налету написать не могу, то объясняю на пальцах
- нужен флаг использования условия
- перебрать все чекбоксы(если в пыхе реально их в массив загнать)
- если чекбокс выделен, то
- скул=скул & " энд чекбокс(переменная_перебора) ='" & тудэй(переменная_перебора)
- флаг использования условия = тру
- если флаг условия перебора, то
- скул='селект фром * майбэйс вере' & скул
иначе
- скул='селект фром * майбэйс'
мда
брэйнфак
ему нужно чтобы была возможность использовать запрос типа 'Select * from my_table where data1 =".$sdata1." and data3 =".$sdata3."'
тут нужно наращивание
но т.к. пых налету написать не могу, то объясняю на пальцах
- нужен флаг использования условия
- перебрать все чекбоксы(если в пыхе реально их в массив загнать)
- если чекбокс выделен, то
- скул=скул & " энд чекбокс(переменная_перебора) ='" & тудэй(переменная_перебора)
- флаг использования условия = тру
- если флаг условия перебора, то
- скул='селект фром * майбэйс вере' & скул
иначе
- скул='селект фром * майбэйс'
мда
брэйнфак
Максим Тен
спасибо за ответ, попробую пояснить, я просто в задании не совсем правильно указал
< form action="temp.php" enctype="multipart/form-data" method="post" >
< input type="Checkbox" name="check1" >Есть текст статьи
< input type="Checkbox" name="check2" >Новые статьи
< input type="Checkbox" name="check3" >Лучшие статьи
< input type="Submit" name="Sub" >
< /form>
data1 - Текст статьи (текст)
data2 - Дата создания (дата)
data3 - лучшая статья (0 или 1)
та вот, нужно в зависимости от выбранных чекбоксов отфильтровать данные и вывести их на экран. скажем если выбран 1 и 3 чекбокс, то выводим все лучшие статьи, у которых текст статьи не пустой. если выбран 2 и 3 чекбокс, то выводим новые статьи (скажем которые были добавлены не позже чем месяц назад) и у которых статус "1" - т.е. лучшие. спасибо Вам за ответ. ))
< form action="temp.php" enctype="multipart/form-data" method="post" >
< input type="Checkbox" name="check1" >Есть текст статьи
< input type="Checkbox" name="check2" >Новые статьи
< input type="Checkbox" name="check3" >Лучшие статьи
< input type="Submit" name="Sub" >
< /form>
data1 - Текст статьи (текст)
data2 - Дата создания (дата)
data3 - лучшая статья (0 или 1)
та вот, нужно в зависимости от выбранных чекбоксов отфильтровать данные и вывести их на экран. скажем если выбран 1 и 3 чекбокс, то выводим все лучшие статьи, у которых текст статьи не пустой. если выбран 2 и 3 чекбокс, то выводим новые статьи (скажем которые были добавлены не позже чем месяц назад) и у которых статус "1" - т.е. лучшие. спасибо Вам за ответ. ))
Максим Тен
Скажем, может быть выбрано несколько чекбоксом, и в зависимости от этого делать выборку из базы данных. А в вашем случае он сначала проверяет первый, потом второй, а потом третий. нужно чтобы так, посмотрел какие чекбоксы выделены, и проверять каждую запись, чтобы она соответствовала условию. спасибо
как написала Дмитрий - мржно использовать условия
но что если у тебя после появятся check32,check33,...checkN?
напиши универсальный скрипт с наращиванием запроса
но что если у тебя после появятся check32,check33,...checkN?
напиши универсальный скрипт с наращиванием запроса
мне кажется надо пользоваться операторами if и else
Максим Тен
отличный ответ, сам бы не догадался. здесь нужно более конкретное решение этой задачи, с базами данных. спасибо за старанее.
Похожие вопросы
- PHP и MySQL. Пишу вот такой код, как в книге написано, но не работает. В чем причина?
- зачем учить php и mysql когда есть cms вроде joomla wordpess?
- Какие знания необходимо иметь для того, чтобы создать нормальный скрипт для сайта на базе PHP и MySQL?
- php и mysql
- Посоветуйте хостинг с php и mysql
- Посоветуйте бесплатный хостинг с php и mysql и нормальным доменом 3-его уровня и что бы место было по больше
- php и mysql Разбираетесь? Нужна ваша помощь в срочном порядке)
- Купил домен. Посоветуйте надежный бесплатный хостинг, желательно без рекламы, с поддержкой php и mysql.
- я новичок в этом деле, например я создал динамичный сайт (php, html, MySQL, JavaScript...)
- PHP, MySql, HTML... Веб девелоперы HELP плиз! Застряла посередине с курсовой.. . :-(