|
|
|
| Ситуация в следующем. Имеется список типа <select>, в него загружаются значения объявленного заранее ассоциативного массива. Значения кириллические, кодировка iso. При нажатии на submit скрипт должен с помощью foreach сравнить выбранное значение из списка с каждым из элементов вышеозначенного массива => выполнить в соответствии с этим выборку по базе.
Проблема в следующем. при сравнении ПХП категорически отказывается уравнивать абсолютно одинаковые iso-строчки, что приводит к краху сценария.
Вопрос: возможно ли каким-л. образом присвоить каждому из элементов <option> латинский или цифровой идентификатор, чтобы ПО НЕМУ можно было сделать проверку? | |
|
|
|
|
|
|
|
для: Anwor
(07.04.2006 в 20:26)
| | Люди, подскажите, пожалуйста, срочно надо | |
|
|
|
|
|
|
|
для: Anwor
(07.04.2006 в 23:27)
| | Возможно в значении из списка есть лишние пробелы. Пропустите его через функцию trim(). | |
|
|
|
|
|
|
|
для: Anwor
(07.04.2006 в 20:26)
| | Конечно, обычно для этих целей в базу данных вводят первичный уникальный ключ, в качестве имени подставляют название, а в качестве значение первичный ключ
<option value=$tablep[id]>$table[name]</option>
|
| |
|
|
|
|
|
|
|
для: cheops
(07.04.2006 в 23:34)
| | Хорошо, а как же потом сделать проверку по этому value? Могу предположить, как это реализуется посредством Явки или Visual Basic, где всё происходит по схеме объект.свойство=значение, но в PHP... из какой переменной потом это будет выдергиваться? | |
|
|
|
|
|
|
|
для: Anwor
(07.04.2006 в 23:50)
| | А, минутку, это именно по value он и производит сравнение?!!! Тогда ясно, почему не уравнивается незаданный value с русскоязычной строкой! Я допедриваю в верном направлении? | |
|
|
|
|
|
|
|
для: Anwor
(07.04.2006 в 23:57)
| | Да. | |
|
|
|
|
|
|
|
для: cheops
(08.04.2006 в 13:47)
| | А почему при команде
<?php
echo "$_POST['categories']";
?>
|
где указанная переменная - выбранный компонент списка, почему выводится именно кириллическое значение, а не параметр value? Не догоняю.. | |
|
|
|
|
|
|
|
для: Anwor
(08.04.2006 в 18:37)
| | А как сейчас выглядит тэг <select> полностью? | |
|
|
|
|
|
|
|
для: cheops
(09.04.2006 в 00:30)
| | Там дело обстоит так.. Сначала скрипт этот список заполняет.
<select name='category' id='category'>
<?php
$first=1;
foreach ($categories as $key => $value) {
if ($first) {
$key.=" selected";
}
echo("<option value=$key>$value</option>");
$first=0;
}
echo ("</select>");
?>
|
Список из заранее заготовленного массива он мне выстраивает.
Затем, при проверке, мы делаем следующее:
<?php
//здесь идет много-много проверок, в соответствии с которыми формируется запрос $query, а далее:
foreach ($categories as $base => $list) {
if ($_POST['category']==$base) {
$i=1;
foreach ($keyword as $word) {
$query.="$base LIKE '%".$word."%' ";
if (count($keyword)>$i) {
$query.="OR ";
}
$i++;
}
break;
}
?>
|
Здесь всё работает, как часы, запрос правильно формируется и посылается другой функции. Это значит, что скрипт сверяет параметр value выбранного <option> с ключом $key ассоциативного массива $categories и находит их идентичными. Но почему при проверке:
<?php
echo $_POST['category'];
?>
|
он выдает ИМЕННО кириллическое значение, выбранное из списка, т.е. слово, стоящее между тегами <option></option>?!!! | |
|
|
|
|
|
|
|
для: Anwor
(09.04.2006 в 01:19)
| | А если распечатать массив $categories
<?php
echo "<pre>";
print_r($categories);
echo "</pre>";
?>
|
не могли в нём ключи и значения местами поменяться? | |
|
|
|
|
|
|
|
для: cheops
(09.04.2006 в 14:13)
| | Нет, print_r тоже пробовал, все правильно выводит! Парадокс... | |
|
|
|
|
|
|
|
для: Anwor
(09.04.2006 в 14:19)
| | Действительно странно... | |
|
|
|