Dmitry
14.04.2009 - 19:34
Здравствуйте,
я вот тут недавно писал вопрос по поводу поиска, вроде написал

, но возникла проблема с функцией, вот с этой:
PHP |
function prague() { $prague = array("Прага-4","Прага-5","Прага-6","Прага-7","Прага-8"); $q10 = mysql_query("SELECT * FROM aktuality"); while($r1 = mysql_fetch_array($q10)) { $type = $r1['lokation']; if(in_array($type,$prague)) return $r1['lokation']; } } |
у меня тут массив, который должен вернуть значение lokation, но проблема в том, что он высылает ответ в виде "Прага-5Прага-6" и потом когда я обращаюсь к этой функции, то поевляется только один первый случай, т.е. "Прага-5", как сделать так, чтобы результат приходил в виде массива?
Спасибо
отзываюсь я на эту функцию вот так:
PHP |
$praha = prague(); $qes = mysql_query("SELECT * FROM aktuality WHERE lokation='".$praha."' ORDER BY id DESC"); |
Спустя 1 час, 27 минут, 51 секунда (14.04.2009 - 20:02) Joker написал(а):
Так для начала определись и скажи что именно ты хочешь. Потомучто я писал тебе функцию, в прошлый раз но ты её не используешь. То что ты делаешь в теперешней функции, это насилие мускула, т.к. ты сначало достаешь все значения а потом сравниваешь. Нужно сначало создать условие и после делать выборку по этому условию. Опиши ситуацию, т.к. раньше ты описывал что нужно искать москву или подмосковье, сейчас видимо изменились требования скажи что хочешь и тогда я обьясню, тебе как именно это сделать.
Что я понел на данном этапе дак это то что тебе нужно вернуть, не одно значение а все в виде массива, попробуй сделать так:
PHP |
function prague() { $prague = array("Прага-4","Прага-5","Прага-6","Прага-7","Прага-8"); $q10 = mysql_query("SELECT * FROM aktuality"); while($r1 = mysql_fetch_array($q10)) { $type = $r1['lokation']; if(in_array($type,$prague)) $result[] = $r1['lokation']; } return $result; } |
Спустя 28 минут, 44 секунды (14.04.2009 - 20:31) Dmitry написал(а):
не не требования теже, просто чегото у меня не получалось с твоей функцией.
Ага мне надо чтобы на выходе был массив. Я просто сделал эту функцию только как массив например "подмосковье" а уже потом вне ее делаю все и на нее ссылаюсь.
Я сделал для выбора значения вот так:
PHP |
if($_POST['location'] == 'Prague'){ $praha = prague(); $qes = mysql_query("SELECT * FROM aktuality WHERE lokation='".$praha."' ORDER BY id DESC"); if(mysql_num_rows($qes)>0) { while($res = mysql_fetch_array($qes)) |
и
PHP |
if($_POST['location'] =='Moskva') { $qer = mysql_query("SELECT * FROM aktuality WHERE lokation='moskva' ORDER BY id DESC"); if(mysql_num_rows($qer)>0) { while($rer = mysql_fetch_array($qer)) { |
Спустя 1 минута, 18 секунд (14.04.2009 - 20:32) Dmitry написал(а):
попробовал с
PHP |
$result[] = $r1['lokation']; |
не идет...
Спустя 10 минут, 50 секунд (14.04.2009 - 20:43) Joker написал(а):
PHP |
function prague($s = false) { if ($s == true ) // Проверяем что искать москву или подмосковье { // Если подмосковье то из массива состовлем уловие запроса. $array = array("Прага-5","Прага-4","Прага-10","Прага-3","Прага-6"); foreach ($array as $value) { $where .= (empty($sql))?"`location`='".$value."'":" OR `location`='".$value."'"; } } else { // Если москву то делаем одно условие. $where = "`location`='Moscow'" } // Делаем запрос с готовым условием. $res = mysql_query("SELECT `object` FROM `table` WHERE ".$where); // выводим обьекты которые удволетворяют запросу. while( $row = mysql_fetch_array($res) ) { $table[] = $row['object']; } return $table; } |
Использование
PHP |
// В переменную $array будет выведен список обьектов. которые находяться в подмосковье. В результате, перменная $array станет массивом. $array = prague(true); // В переменную $array2 будет выведен список обьектов. которые находяться в москве. В результате, перменная $array станет массивом. $array2 = prague(); |
И если ты спрашиваешь, по той же функции но чтото новое не нужно создовать новый топик и засорят базу форума, отпиши в той же теме. Это тебе справка на будующее.
Спустя 6 минут, 18 секунд (14.04.2009 - 20:49) Dmitry написал(а):
Спасиб за помощь, щас буду пробовать.