Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Список по индексам
 
 автор: Anwor   (07.04.2006 в 20:26)   письмо автору
 
 

Ситуация в следующем. Имеется список типа <select>, в него загружаются значения объявленного заранее ассоциативного массива. Значения кириллические, кодировка iso. При нажатии на submit скрипт должен с помощью foreach сравнить выбранное значение из списка с каждым из элементов вышеозначенного массива => выполнить в соответствии с этим выборку по базе.
Проблема в следующем. при сравнении ПХП категорически отказывается уравнивать абсолютно одинаковые iso-строчки, что приводит к краху сценария.
Вопрос: возможно ли каким-л. образом присвоить каждому из элементов <option> латинский или цифровой идентификатор, чтобы ПО НЕМУ можно было сделать проверку?

   
 
 автор: Anwor   (07.04.2006 в 23:27)   письмо автору
 
   для: Anwor   (07.04.2006 в 20:26)
 

Люди, подскажите, пожалуйста, срочно надо

   
 
 автор: Drago   (07.04.2006 в 23:32)   письмо автору
 
   для: Anwor   (07.04.2006 в 23:27)
 

Возможно в значении из списка есть лишние пробелы. Пропустите его через функцию trim().

   
 
 автор: cheops   (07.04.2006 в 23:34)   письмо автору
 
   для: Anwor   (07.04.2006 в 20:26)
 

Конечно, обычно для этих целей в базу данных вводят первичный уникальный ключ, в качестве имени подставляют название, а в качестве значение первичный ключ
<option value=$tablep[id]>$table[name]</option>

   
 
 автор: Anwor   (07.04.2006 в 23:50)   письмо автору
 
   для: cheops   (07.04.2006 в 23:34)
 

Хорошо, а как же потом сделать проверку по этому value? Могу предположить, как это реализуется посредством Явки или Visual Basic, где всё происходит по схеме объект.свойство=значение, но в PHP... из какой переменной потом это будет выдергиваться?

   
 
 автор: Anwor   (07.04.2006 в 23:57)   письмо автору
 
   для: Anwor   (07.04.2006 в 23:50)
 

А, минутку, это именно по value он и производит сравнение?!!! Тогда ясно, почему не уравнивается незаданный value с русскоязычной строкой! Я допедриваю в верном направлении?

   
 
 автор: cheops   (08.04.2006 в 13:47)   письмо автору
 
   для: Anwor   (07.04.2006 в 23:57)
 

Да.

   
 
 автор: Anwor   (08.04.2006 в 18:37)   письмо автору
 
   для: cheops   (08.04.2006 в 13:47)
 

А почему при команде

<?php
echo "$_POST['categories']";
?>

где указанная переменная - выбранный компонент списка, почему выводится именно кириллическое значение, а не параметр value? Не догоняю..

   
 
 автор: cheops   (09.04.2006 в 00:30)   письмо автору
 
   для: Anwor   (08.04.2006 в 18:37)
 

А как сейчас выглядит тэг <select> полностью?

   
 
 автор: Anwor   (09.04.2006 в 01:19)   письмо автору
 
   для: 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>?!!!

   
 
 автор: cheops   (09.04.2006 в 14:13)   письмо автору
 
   для: Anwor   (09.04.2006 в 01:19)
 

А если распечатать массив $categories
<?php
  
echo "<pre>";
  
print_r($categories);
  echo 
"</pre>";
?>

не могли в нём ключи и значения местами поменяться?

   
 
 автор: Anwor   (09.04.2006 в 14:19)   письмо автору
 
   для: cheops   (09.04.2006 в 14:13)
 

Нет, print_r тоже пробовал, все правильно выводит! Парадокс...

   
 
 автор: cheops   (09.04.2006 в 15:04)   письмо автору
 
   для: Anwor   (09.04.2006 в 14:19)
 

Действительно странно...

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования