Обясних го дървено.
Тоест искам да взема избраните VALUE's
Нали знаеш , че в multiple има option пример:
PHP:
<select multiple="multiple" name="city[]" id="city">
<?php
$query = $db->query("SELECT * FROM `oblasti` ORDER BY `name`;");
$select = '';
while ($row = mysql_fetch_object($query)){
$select .= "<optgroup label=\"{$row->name}\">";
$query2 = $db->query("SELECT * FROM `gradove` WHERE `oblast_id`='{$row->id}' ORDER BY `grad_name`;");
while ($row2 = mysql_fetch_object($query2)) {
$select .= "<option value=\"{$row2->id}\">{$row2->grad_name}</option>\n";
}
$select .= "</optgroup>";
}
echo $select;
?>
</select>
След, което взимам от масива избраните градове и търся в базата, като търся в примерна таблица:
`table` в колона `gradove`
Предполагам, ще е нещо токова;
PHP:
<?php
if(isSet($_GET['city'])) {
$city = $_GET['city'];
} else {
$city = "";
}
foreach ($city as $t){
$c[] = $city;
}
$query = mysql_query("SELECT * FROM `table` WHERE `city` = '".implode($c,',')."';") or die(mysql_error());
?>
<form method="GET">
<select multiple="multiple" name="city[]" id="city">
<?php
$query = $db->query("SELECT * FROM `oblasti` ORDER BY `name`;");
$select = '';
while ($row = mysql_fetch_object($query)){
$select .= "<optgroup label=\"{$row->name}\">";
$query2 = $db->query("SELECT * FROM `gradove` WHERE `oblast_id`='{$row->id}' ORDER BY `grad_name`;");
while ($row2 = mysql_fetch_object($query2)) {
$select .= "<option value=\"{$row2->id}\">{$row2->grad_name}</option>\n";
}
$select .= "</optgroup>";
}
echo $select;
?>
</select>
<input type="submit" value="Давай!" />
</form>
ЕДИТ:
Сега като тръгнах да си правя експеримент, като избрах няколко градове адреса стана:
search.php?city[]=2&city[]=3&city[]=4&city[]=5&city[]=6&city[]=7&city[]=8&city[]=9&city[]=10&city[]=11&city[]=12&city[]=13&city[]=14&city[]=15&city[]=16&city[]=17&city[]=18&city[]=19&city[]=20&city[]=21&city[]=22&city[]=23&city[]=24&city[]=25&city[]=26&city[]=27&city[]=28&city[]=29&city[]=30&city[]=31&city[]=32&city[]=33&city[]=34

Явно ще трябва да правя всичко с POST метода
LAST EDIT:
Сега го направих така;
PHP:
<?php
if(isSet($_POST['submit'])) {
if(isSet($_POST['city'])) {
$city = $_POST['city'];
} else {
$city = "";
}
foreach ($city AS $selectedOption) {
echo $selectedOption;
}
/*
Array (
[0] => 1
[1] => 2
[2] => 3
[3] => 4
[4] => 5
[5] => 6
[6] => 7
[7] => 8
[8] => 9
[9] => 10
)
*/
} else {
echo '
<form method="POST">
<select multiple="multiple" name="city[]" id="city">';
$query = $db->query("SELECT * FROM `oblasti` ORDER BY `name`;");
$select = '';
while ($row = mysql_fetch_object($query)){
$select .= "<optgroup label=\"{$row->name}\">";
$query2 = $db->query("SELECT * FROM `gradove` WHERE `oblast_id`='{$row->id}' ORDER BY `grad_name`;");
while ($row2 = mysql_fetch_object($query2)) {
$select .= "<option value=\"{$row2->id}\">{$row2->grad_name}</option>\n";
}
$select .= "</optgroup>";
}
echo $select;
echo '
</select>
<input type="submit" name="submit" value="Давай!" />
</form>';
}
?>
Резултата , който визуализирам е:
1234567891011
Това са градове:
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11
Сега се чудя заявката във foreach(); ли да е включа или номера ще стане и извън нея?
структурата на таблицата , в която ще търся;
CREATE TABLE IF NOT EXISTS `table` (
`id` int(15) NOT NULL auto_increment,
.................
`zaglavie` varchar(30) NOT NULL default '0',
`etiketi` int(100) NOT NULL default '0',
`grad` int(15) NOT NULL default '0',
.................
PRIMARY KEY (`id`)
);
/това е само примерна таблица/
Тествах така;
PHP:
foreach ($city AS $selectedOption) {
echo "SELECT * FROM `test` WHERE `grad`='{$selectedOption}';";
}
и резултата е;
Код:
SELECT * FROM `test` WHERE `grad`='1';SELECT * FROM `test` WHERE `grad`='2';SELECT * FROM `test` WHERE `grad`='3';SELECT * FROM `test` WHERE `grad`='4';SELECT * FROM `test` WHERE `grad`='5';SELECT * FROM `test` WHERE `grad`='6';SELECT * FROM `test` WHERE `grad`='7';SELECT * FROM `test` WHERE `grad`='8';SELECT * FROM `test` WHERE `grad`='9';SELECT * FROM `test` WHERE `grad`='10';SELECT * FROM `test` WHERE `grad`='11';
.. Което ме навежда на мисълта , че така ще търси градовете както искам, но ако са избрани всички градове? Да речем това ще са.. хм примерно 100 градове = 100 заявки??.. :?