$vozrast $gorod $rost $ves $volosy $glaza
30 | Берлин | 156 | 65 | русые | зеленые
23 | Лондон | 147 | 56 | черные | голубые
28 | Женева | 186 | 87 | рыжие | серые
30 | Лондон | 170 | 78 | русые | зеленые
25 | Варшава | 176 | 97 | черные | серые
30 | Лондон | 170 | 64 | рыжие | голубые
из которого нужно выводить определенные строки
в зависимости от значений, выбранных в форме - $vozrast2, $gorod2 и $rost2.
Как из массива извлечь те строки, элементы которых равны определенным значениям?
Например: в адресной строке передается: www.site.com?$vozrast2=30&$gorod2=Лондон&$rost2=170
Тоесть производитcя выборка из массива и 5-я и 7-я строки записываются в новый массив.
А если в форме не выбраны ни один элемент - в новый массив записываются все строки.
Как это реализовать в компактном виде?
Так как элементов, по которым производится выборка, может быть не 3 а больше.
Спустя 5 минут, 25 секунд (22.01.2012 - 23:26) neadekvat написал(а):
Есть возможность переместить все это дело в СУБД?
Спустя 1 минута, 18 секунд (22.01.2012 - 23:27) klf написал(а):
К сожелению нет возможности использовать базу данных.
Все реализовано на текстовых файлах
Все реализовано на текстовых файлах
Спустя 13 минут, 56 секунд (22.01.2012 - 23:41) neadekvat написал(а):
Быть может, как-то так. Естественно, речь о редактировании одной строки.
$arr = array(
array('age' => '', 'city' => '', 'height' => ''),
array('age' => '', 'city' => '', 'height' => ''),
array('age' => '', 'city' => '', 'height' => '')
);
// ?i=1&age=23&city=piter
$i = (int) $_GET['i'];
// I вариант
$age = (int) $_GET['age'];
$city = addslashes($_GET['city']);
$height = (int) $_GET['height'];
$arr[$i] = array('age' => $age, 'city' => $city, 'height' => $height);
// II вариант:
foreach($arr[$i] as $key => $val)
if (isset($_GET[$key]))
$arr[$i][$key] = addslashes($_GET[$key]);
Спустя 6 минут, 57 секунд (22.01.2012 - 23:48) klf написал(а):
Спасибо конечно, но по-моему здесь не производится проверка равности значений массива ($height, $age, $city)и элементов из адресной строки (?i=1&age=23&city=piter)
Спустя 2 минуты, 28 секунд (22.01.2012 - 23:50) neadekvat написал(а):
Цитата (klf @ 23.01.2012 - 00:48) |
Спасибо конечно, но по-моему здесь не производится проверка равности значений массива и элементов из адресной строки |
Ах, извините, что я не написал за вас полностью работающую программу под ключ.
Мое дело - подсказать направление, а не решить задачу до логического конца.
К тому же, я так и не вкурил, о чем ты.
Спустя 5 минут, 15 секунд (22.01.2012 - 23:56) klf написал(а):
Спасибо хоть на этом!
Может подскажите еще такой момент:
У меня получается если введены все элементы в форму - выборка происходит корректно, если один из элементов - выборка неправильна.
Как сделать так, чтоби сравнивались не все, а только выбранные элементы?
Буду очень благодрен за помощь!!!
Может подскажите еще такой момент:
У меня получается если введены все элементы в форму - выборка происходит корректно, если один из элементов - выборка неправильна.
Как сделать так, чтоби сравнивались не все, а только выбранные элементы?
Буду очень благодрен за помощь!!!
Спустя 5 минут, 25 секунд (23.01.2012 - 00:01) klf написал(а):
Цитата (neadekvat @ 22.01.2012 - 20:50) |
К тому же, я так и не вкурил, о чем ты. |
В форме выбирается (например):
Возраст - 30
Город - Лондон
Рост - 170
И должны выбираться (записываться в новый массив) спроки, в которых:
Возраст - 30
Город - Лондон
Рост - 170
Если выбран только, например, возраст = 30 -
то вибираются строки со значением возраста = 30, а другие значения тогда не учитываются
Тоесть:
если в форме заполнено поле "vozrast" и поле "rost" ($vozrast != "" && $rost != "")
то проверялось условие:
if($rgChild['vozrast']=='значение' && $rgChild['rost'] == 'значение')
если в форме заполнено только поле "vozrast" ($vozrast != "" && $rost == "")
то проверялось условие:
if($rgChild['vozrast']=='значение')
если в форме заполнено только поле "rost" ($vozrast == "" && $rost != "")
то проверялось условие:
if($rgChild['rost'] == 'значение')
Спустя 34 минуты, 15 секунд (23.01.2012 - 00:35) killer8080 написал(а):
Ну так а в чем проблема? Нужно просто перебрать массив циклом
if(isset($_GET['vozrast2'], $_GET['gorod2'], $_GET['rost2'])){
$result = array();
foreach($data as $row){
if($row['vozrast2'] == $_GET['vozrast2'] && $row['gorod2'] == $_GET['gorod2'] && $row['rost2'] == $_GET['rost2'])
$result []= $row;
}
print_r($result);
}
Спустя 14 минут, 34 секунды (23.01.2012 - 00:50) klf написал(а):
Спасибо!!!
А как сделать чтобы:
еслы в форме заполнено поле "vozrast2", "gorod2" и поле "rost2"
то проверялось условие:
if($row['vozrast2'] == $_GET['vozrast2'] && $row['gorod2'] == $_GET['gorod2'] && $row['rost2'] == $_GET['rost2'])
еслы в форме заполнено только поле "vozrast"
то проверялось условие:
if($row['vozrast2'] == $_GET['vozrast2'])
еслы в форме заполнено только поле "rost"
то проверялось условие:
if($row['rost2'] == $_GET['rost2'])
А как сделать чтобы:
еслы в форме заполнено поле "vozrast2", "gorod2" и поле "rost2"
то проверялось условие:
if($row['vozrast2'] == $_GET['vozrast2'] && $row['gorod2'] == $_GET['gorod2'] && $row['rost2'] == $_GET['rost2'])
еслы в форме заполнено только поле "vozrast"
то проверялось условие:
if($row['vozrast2'] == $_GET['vozrast2'])
еслы в форме заполнено только поле "rost"
то проверялось условие:
if($row['rost2'] == $_GET['rost2'])