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

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Вывод данных из массива

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Без описания
vahminator
Отправлено: 15 Июня, 2011 - 00:30:51
Post Id



Новичок


Покинул форум
Сообщений всего: 10
Дата рег-ции: Июнь 2011  
Откуда: Киев


Помог: 0 раз(а)




Есть форма с вводом текста ( в моем случае это емейл) и есть 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"

Как это сделать?
 
 Top
OrmaJever Модератор
Отправлено: 15 Июня, 2011 - 00:38:22
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)




Ваш вариант вроде вполне рабочий Растерялся
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-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
vahminator
Отправлено: 15 Июня, 2011 - 00:46:08
Post Id



Новичок


Покинул форум
Сообщений всего: 10
Дата рег-ции: Июнь 2011  
Откуда: Киев


Помог: 0 раз(а)




Я понимаю, что мой рабочий. Но он выводит только тот мейл что указан в $search, а нужно так что бы и другие тоже работали...
Вот я только что ввел tester@bigmir.net (4-й вариант емейла), а он вывел test@mail.ru... Даже если я в форму введу "бла-бла" - то всеравно будет "test@mail.ru"...
 
 Top
Мелкий Супермодератор
Отправлено: 15 Июня, 2011 - 09:19:45
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




А где получение данных с формы? Здесь не работать нечему, следовательно проблема немного раньше.


-----
PostgreSQL DBA
 
 Top
White
Отправлено: 15 Июня, 2011 - 09:42:24
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 830
Дата рег-ции: Июнь 2011  
Откуда: Днепропетровск


Помог: 28 раз(а)




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.  


-----
if(time()>1356048000) die();
 
 Top
vahminator
Отправлено: 15 Июня, 2011 - 10:02:19
Post Id



Новичок


Покинул форум
Сообщений всего: 10
Дата рег-ции: Июнь 2011  
Откуда: Киев


Помог: 0 раз(а)




White
ты меня нереально выручил!!!! Я жестко протупил про
PHP:
скопировать код в буфер обмена
  1. $search = $_POST['element_name'];


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

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

(Отредактировано автором: 15 Июня, 2011 - 10:03:48)

 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Хранение данных, их вывод и обработка »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB