Выбор записей, соответствующих отмеченым чекбоксам (MySQL, PHP, форма) - помогите

Ajiotaj
На сайте с 01.12.2006
Offline
150
1579

У меня в форме есть такой участок:

<input type="checkbox" name="rajon[]" id="rajon1" value="1">Голосеевский<br />

<input type="checkbox" name="rajon[]" id="rajon2" value="2">Дарницкий<br />
<input type="checkbox" name="rajon[]" id="rajon3" value="3">Деснянский<br />
<input type="checkbox" name="rajon[]" id="rajon4" value="4">Днепровский<br />
<input type="checkbox" name="rajon[]" id="rajon5" value="5">Оболонский<br />
<input type="checkbox" name="rajon[]" id="rajon6" value="6">Печерский<br />
<input type="checkbox" name="rajon[]" id="rajon7" value="7">Подольский<br />
<input type="checkbox" name="rajon[]" id="rajon8" value="8">Святошинский<br />
<input type="checkbox" name="rajon[]" id="rajon9" value="9">Соломенский<br />
<input type="checkbox" name="rajon[]" id="rajon10" value="10">Шевченковский

Вот запрос, по которому осуществляется выборка по базе:

$query = "SELECT * FROM kvartiry, rajony WHERE kvartiry.rajon=rajony.nomer AND kvartiry.komnaty='$komnaty' AND kvartiry.cena BETWEEN '$cenaot' AND '$cenado' ORDER BY kvartiry.nomer";

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

Нашел такой вариант решения:

<body>

<form method="post" action="" >
<input name="categories[BottleOpener]" type="checkbox" id="BottleOpener" value="1">Bottle Opener<br />

<input name="categories[WineClipper]" type="checkbox" id="WineClipper" value="1">Wine Clipper<br />

<input name="categories[WineGlass]" type="checkbox" id="WineGlass" value="1">Wine Glass<br />

<input name="categories[WineBottle]" type="checkbox" id="WineBottle" value="1">Wine Bottle<br />

<input type='submit' value='Search'>

</form>

<?php
mysql_connect('localhost','winecom1_bizbyte','jeri jeri');
mysql_select_db('winecom1_wine7000');



if(isset($_POST['categories']) && !empty($_POST['categories'])){
foreach($_POST['categories'] as $key=>$value){
if($value==1) $criteria[] = "category='".mysql_escape_string($key)."'";
}
$criteria = implode(' OR ', $criteria);
}
$query = "SELECT * FROM wineaccessories WHERE $criteria";
echo $criteria;
?>
</body>

но не пойму как его переделать под себя... В PHP и MySQL разбираюсь слабо, но кое-что все же делаю. Помогите советом.

[Удален]
#1

В POST получаешь масив rajon

[rajon] => Array ( [0] => 6 [1] => 7 [2] => 8 )

Вот, а дальше обыкновенным перебором лазишь по базе и записывашь всё в масив который тебе нужно

foreach($rajon as $id)

{

здесь делаешь запрос к бд с WHERE id = '$id'

получаешь строку и записывашь в нужный тебе масив

$array[] = 'Здесь все данные что тебе нужны из бд';

}

Сразу весь масив ты не передашь, нужно перебирать, бегать по базе.

A
На сайте с 29.12.2007
Offline
68
#2
wowkaster:
В POST получаешь масив rajon
[rajon] => Array ( [0] => 6 [1] => 7 [2] => 8 )

Вот, а дальше обыкновенным перебором лазишь по базе и записывашь всё в масив который тебе нужно

foreach($rajon as $id)
{
здесь делаешь запрос к бд с WHERE id = '$id'

получаешь строку и записывашь в нужный тебе масив

$array[] = 'Здесь все данные что тебе нужны из бд';

}

Сразу весь масив ты не передашь, нужно перебирать, бегать по базе.

Бред... IN отменили или религия запрещает?

Ajiotaj
На сайте с 01.12.2006
Offline
150
#3

спасибо за внимание!

в итоге сделал так:

if(empty($_POST['rajon'])) {$rajon = array();} else {$rajon = $_POST['rajon'];};

и запрос выглядит так:

AND kvartiry.rajon IN('".implode("', '", $rajon)."')

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий