Модераторы: korob2001, ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Работа с массивами 
:(
    Опции темы
Dima85
Дата 21.10.2009, 12:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 396
Регистрация: 19.7.2007

Репутация: нет
Всего: нет



Скрипт смотрит url и все что в нем есть после "?".
Пример url: .wml?3234322&3242234&332432

Далее скрипт развивает эти символы по &. С этим проблем нет, все получилось:

Код

my $phone = $ENV{QUERY_STRING};
$phone=substr($phone,0,150);
$phone=~s/[^a-zA-Z&0-9_-]+//g;
@phone=split(/&/,$phone);


Но подскажите пожалуйста как теперь вывести телефоны в select, результат должен быть таким:

Код

<select name="product"> 
<option value="3234322">3234322</option> 
<option value="3242234">3242234</option> 
<option value="332432">332432</option> 
</select>


Насколько я понимаю это нужно делать через for, но как правильно сформулировать это действие?


Это сообщение отредактировал(а) Dima85 - 21.10.2009, 12:29
PM MAIL   Вверх
DEER
Дата 21.10.2009, 12:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 749
Регистрация: 12.4.2005
Где: г. Рязань

Репутация: 1
Всего: 13





--------------------
 
PM MAIL WWW ICQ MSN   Вверх
SkoobyDoo
Дата 21.10.2009, 12:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 73
Регистрация: 4.10.2007

Репутация: нет
Всего: нет



Цитата(Dima85 @  21.10.2009,  15:27 Найти цитируемый пост)
Насколько я понимаю это нужно делать через for, но как правильно сформулировать это действие?

Код

print qq{<select name="product">};

foreach my $number (@phone)
{
        print qq{<option value="$number">$number</option>};
}

print qq{</select>};

PM MAIL   Вверх
krypt3r
Дата 21.10.2009, 13:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 359
Регистрация: 9.6.2009

Репутация: 2
Всего: 16



Пример
Код

#!/usr/bin/perl

use strict;
use warnings;

my $query = '3234322&3242234&332432';
my $select = "<select name=\"product\">\n";
for (split /&/, $query) {
  $select .= "\t<option value=\"" . $_ . "\">" . $_ . "</option>\n";
}
$select .= "</select>";
print "$select\n";

PM MAIL   Вверх
Dima85
Дата 11.11.2009, 13:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 396
Регистрация: 19.7.2007

Репутация: нет
Всего: нет



Помогите пожалуйста решить немного услажненную задачу.
Теперь если в 234322&3242234&332432 находится =
Пример 234322&Vasja=3242234&332432

То Vasja нужно записать в <option *>сюда</option> цифры как и ранее в value

Код

#!/usr/bin/perl

use strict;
use warnings;

my $query = '3234322&3242234&332432';
my $select = "<select name=\"product\">\n";
for (split /&/, $query) {

  $select .= "\t<option value=\"" . $_ . "\">" . $_ . "</option>\n";
}
$select .= "</select>";
print "$select\n";



Сейчас в голову пришло такое решение, (не проверял его).
Код

$_=split(/=/,$_);
if ($_[0] eq '') $_[0] = $_1; 

  $select .= "\t<option value=\"" . $_ [0]. "\">" . $_[1] . "</option>\n";


Подскажите как еще можно решить такую задачу.

Это сообщение отредактировал(а) Dima85 - 11.11.2009, 13:38
PM MAIL   Вверх
ginnie
Дата 11.11.2009, 14:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Комодератор
Сообщений: 1287
Регистрация: 6.1.2008
Где: Москва

Репутация: 38
Всего: 49



Предлагаю попробовать такой вариант
Код

my @fields = split(/=/, $_);
$select .= qq{\t<option value="$fields[-1]">$fields[0]</option>\n};


$fields[-1] - это последний элемент массива (в случае, когда только номер, то первый и последний элемент совпадают).

P.S. В реальном коде, лучше писать более прозрачно и понятно.

Это сообщение отредактировал(а) ginnie - 11.11.2009, 14:05


--------------------
Написать код, понятный компьютеру, может каждый, но только хорошие программисты пишут код, понятный людям. (Мартин Фаулер. Рефакторинг)
PM MAIL Skype Jabber   Вверх
DEER
Дата 11.11.2009, 14:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 749
Регистрация: 12.4.2005
Где: г. Рязань

Репутация: 1
Всего: 13



Код

#!/usr/bin/perl
use strict;
use warnings;
my $query = '3234322&vodka=3242234&pivo=332432';
my $select = "<select name=\"product\">\n";
for my $param (split /&/, $query) {
    my ($name, $value);
    if( $param =~ /(.*)=(.*)/ ) {
        $name = $1; $value=$2;
    } else {
        $name = $value = $param;
    }
  $select .= "\t<option value=\"" . $value . "\">" . $name . "</option>\n";
}
$select .= "</select>";
print "$select\n";


Это сообщение отредактировал(а) DEER - 11.11.2009, 14:05


--------------------
 
PM MAIL WWW ICQ MSN   Вверх
Dima85
Дата 11.11.2009, 14:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 396
Регистрация: 19.7.2007

Репутация: нет
Всего: нет



Спасибо.
PM MAIL   Вверх
DEER
Дата 11.11.2009, 15:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 749
Регистрация: 12.4.2005
Где: г. Рязань

Репутация: 1
Всего: 13



Dima85, а почему бы не использовать уже написанное до нас? тот же CGI


--------------------
 
PM MAIL WWW ICQ MSN   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl"
korob2001
sharq
  • В этом разделе обсуждаются общие вопросы по языку Perl
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0894 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.