|
|
|
| Все было бы легко, если бы разделы не были бы динамическими. Название разделов и т.д. берутся из базы MySQL.
<?
...
case ("0"):
echo "<form action=$str?search=1 method=post>";
echo "Что ищем: <input type=text name=what maxlength=150>";
echo "<br><input type=submit value=Гоу!>";
echo<<<HTML
<script language='javascript'>
function show_block() {
if(document.getElementById('show').style.display == 'block') {
document.getElementById('show').style.display = 'none';
}
else {
document.getElementById('show').style.display = 'block';
}
}
</script>
HTML;
echo "<br><a onClick='show_block()' style='color:blue;cursor:hand'>Дополнительно</a><br><br>";
echo "<div id=show style='display:none'>";
$a=mysql_query("SELECT * FROM classes");
echo "Искать в:<br>";
$i=0;
while(++$i<=mysql_num_rows($a)) {
$b=mysql_fetch_array($a);
echo "<input name=hy_$i type=checkbox value=$b[level]>$b[showname]";
echo "<input type=hidden name=howmany value=$i>";
}
echo "</div>";
echo "</form>";
break;
case("1"):
$howmany=$_POST['howmany'];
for($m=0; $m<=$howmany; $m++) {
$hy=$_POST['hy_'.$m];
| вот здесь начинаются проблемы
<?
if (isset($hy)) { echo "задана"; }
else { "не задана"; }
}
$what=$_POST['what'];
if(empty($what)) { echo "Вы не ввели что искать!<br><a href=javascript:history.back()>Назад</a>"; exit(); }
$a=mysql_query("SELECT * FROM classes");
for($i=0; $i<mysql_num_rows($a); $i++) {
$b=mysql_fetch_array($a);
$fnt_search = mysql_query("SELECT * FROM $b[name] WHERE game LIKE '%$what%'");
if (!$fnt_search)
{
echo mysql_error();
exit();
}
else
{
while ($fet=mysql_fetch_array($fnt_search))
{
echo "Найдено [".$i."]: ";
echo "<br>В разделе: $b[showname]";
echo "<br>Игра: <a href=index.php?mode=2&level=".$b[level].">".$fet['game']."</a>";
}
}
}
...
?>
|
Надо сделать так. Все checkbox'ы получить, потом если хоть 1 выделена, то искать именно в этом разделе, если вообще ничего не выделено, то искать во всех.
С поиском я сделаю, но главное как получить их и проверить сколько и какие выделены.
Заранее спасибо. | |
|
|
|
|
|
|
|
для: F@!nT
(02.01.2006 в 16:02)
| | Как checkbox-ы связаны с разделами? У нас нет перед глазами структуры базы данных, поэтому нам тяжело сориентироваться в вашем коде... | |
|
|
|
|
|
|
|
для: cheops
(02.01.2006 в 16:17)
| |
<?
echo "<br><a onClick='show_block()' style='color:blue;cursor:hand'>Дополнительно</a><br><br>";
echo "<div id=show style='display:none'>";
$a=mysql_query("SELECT * FROM classes");
echo "Искать в:<br>";
$i=0;
while(++$i<=mysql_num_rows($a)) {
$b=mysql_fetch_array($a);
echo "<input name=hy_$i type=checkbox value=$b[level]>$b[showname]";
echo "<input type=hidden name=howmany value=$i>";
}
|
так связаны checkbox'ы с разделами.
База classes:
CREATE TABLE 'classes' (
'level' int(4) NOT NULL auto_increment,
'name' varchar(254) NOT NULL default '',
'type' char(3) NOT NULL default '',
'whoip' varchar(35) NOT NULL default '',
'date' varchar(250) NOT NULL default '',
'time' varchar(250) NOT NULL default '',
'showname' text NOT NULL,
UNIQUE KEY 'level' ('level','name')
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=22 ;
--
-- Дамп данных таблицы 'classes'
--
INSERT INTO 'classes' VALUES (20, 'patch', '1', '192.168.163.2', '08-11-05', '11:13', 'Аддоны');
INSERT INTO 'classes' VALUES (21, 'addon', '1', '192.168.163.2', '08-11-05', '16:50', 'Патчи'); | |
|
|
|
|
|
|
|
для: F@!nT
(02.01.2006 в 16:43)
| | Всё равно не понятно какое поле относится к разделам? type? | |
|
|
|
|
|
|
|
для: cheops
(02.01.2006 в 22:04)
| | Да тут разницы нет с чем связаны чекбоксы. Просто перебирай массив чекбоксов и смотри что выбрано и уже там смотри как искать. При именовании чекбоксов используй массив с ид разделов и значением равным одному, тогда поиск проверять будешь так:
if(isset($arCheckName) && !empty($arCheckName)){
//хотя бы один установлен смотрим все установленные
foreach($arCheckName as $key=>$val){
$id_razdela=$key;
//а тут строй строку запроса к отмеченным разделам
}
}else{
//ни один чек не установлен
}
|
| |
|
|
|
|
|
|
|
для: XPraptor
(03.01.2006 в 16:09)
| | Смотри, у меня здесь все верно:
<?
...
echo "Искать в:<br>";
for ($i=0; $i<mysql_num_rows($a); $i++) {
$b=mysql_fetch_array($a);
echo "<input name=hy_$i type=checkbox value=$b[level]>$b[showname]";
echo "<input type=hidden name=howmany value=$i>";
}
echo "</div>";
echo "</form>";
break;
case("1"):
$howmany=$_POST['howmany'];
for($m=0; $m<=$howmany; $m++) {
$hy=$_POST['hy_'.$m];
$arCheckName=array($hy);
echo $hy;
}
print_r ($arCheckName);
...
?>
|
У меня там всего 2 раздела. Если я ставлю галочку на первый раздел, то выводится:
20Array ( [0] => 20 ) и рез-тат поиска.
Здесь верно. Ставлю на последний раздел, то выводится:
21Array ( [0] => 21 ).
Ставлю галочки на все разделы, то
2021Array ( [0] => 21 ).
Что здесь неверно? | |
|
|
|
|
|
|
|
для: F@!nT
(06.01.2006 в 14:05)
| | Посмотрите не пропущен ли break; в каком нибудь из case? | |
|
|
|
|
|
|
|
для: cheops
(06.01.2006 в 15:40)
| | точно нет :) | |
|
|
|
|
|
|
|
для: F@!nT
(06.01.2006 в 17:57)
| | никто не знает? | |
|
|
|