Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Вывод данных из массива
Форумы портала PHP.SU » » Хранение данных, их вывод и обработка » Вывод данных из массива

Страниц (1): [1]
 

1. vahminator - 15 Июня, 2011 - 00:30:51 - перейти к сообщению
Есть форма с вводом текста ( в моем случае это емейл) и есть php обработчик этой формы:
PHP:
скопировать код в буфер обмена
  1.  
  2. <?
  3.    $name = array (
  4.              "Иванов" => "test@mail.ru",
  5.              "Петров" => "test@yahoo.com",
  6.              "Сидоров" => "test@bigmir.net",
  7.              "Козлов" => "tester@bigmir.net"
  8.                     );
  9.    $search = "test@mail.ru";
  10.    foreach ($name as $key => $value) {
  11.       if ($value == $search) {
  12.          echo "$key - $value";
  13.       }
  14.    }
  15. ?>
  16.  


Когда в форму вводишь емейл любой из указаных - то должно вывести только тот емейл и имя, закрепленное за ним.
В моем коде выводит все имена и емейлы которые есть в массиве, а нужно что бы только тот (если этот емейл указан) который ввел.. А если введенного емейла нет в списке - то выводит запись "Данный емейл не указан"

К примеру:
В форму вводим "test@mail.ru" и после отправке появляеться "Иванов - test@mail.ru"

Как это сделать?
2. OrmaJever - 15 Июня, 2011 - 00:38:22 - перейти к сообщению
Ваш вариант вроде вполне рабочий Растерялся
PHP:
скопировать код в буфер обмена
  1.     $name = array (
  2.              "Иванов" => "test@mail.ru",
  3.              "Петров" => "test@yahoo.com",
  4.              "Сидоров" => "test@bigmir.net",
  5.              "Козлов" => "tester@bigmir.net"
  6.                     );
  7.    $search = "test@mail.ru";
  8. $x = array_search($search, $name);
  9. if($x !== false) echo $x, ' - ', $name[$x];
  10. else echo 'nothing';
3. vahminator - 15 Июня, 2011 - 00:46:08 - перейти к сообщению
Я понимаю, что мой рабочий. Но он выводит только тот мейл что указан в $search, а нужно так что бы и другие тоже работали...
Вот я только что ввел tester@bigmir.net (4-й вариант емейла), а он вывел test@mail.ru... Даже если я в форму введу "бла-бла" - то всеравно будет "test@mail.ru"...
4. Мелкий - 15 Июня, 2011 - 09:19:45 - перейти к сообщению
А где получение данных с формы? Здесь не работать нечему, следовательно проблема немного раньше.
5. White - 15 Июня, 2011 - 09:42:24 - перейти к сообщению
7 строчка только для примера? если нет то замените

CODE (htmlphp):
скопировать код в буфер обмена
  1. $search = "test@mail.ru";
на

CODE (htmlphp):
скопировать код в буфер обмена
  1. $search = $_POST['element_name'];


element_name - имя поля для ввода текста
в случае если данные формы отправляются через GET, $_POST заменить на $_GET

Цитата:
А если введенного емейла нет в списке - то выводит запись "Данный емейл не указан"


PHP:
скопировать код в буфер обмена
  1.  
  2. foreach ($name as $key => $value) {
  3.       if ($value == $search) {
  4.          echo "$key - $value";
  5.       }
  6. }


меняем на:

PHP:
скопировать код в буфер обмена
  1.  
  2. $output = false;
  3. foreach ($name as $key => $value) {
  4.    if ($value == $search) {
  5.       $output = "$key - $value";
  6.    }
  7. }
  8. if($output) echo $output; else echo "Данный емейл не указан";
  9.  
6. vahminator - 15 Июня, 2011 - 10:02:19 - перейти к сообщению
White
ты меня нереально выручил!!!! Я жестко протупил про
PHP:
скопировать код в буфер обмена
  1. $search = $_POST['element_name'];


Мега Спасибо!!!

P.S. Сказать "спасибо" немогу(( Наберу достаточное количество сообщений - обезательно скажу!

 

Powered by ExBB FM 1.0 RC1