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

Форум PHP

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

 

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

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Обработка массива из формы

Сообщения:  [1-3] 

 
 автор: exp   (16.11.2007 в 15:38)   письмо автору
 
   для: provodnik   (15.11.2007 в 13:53)
 

наверное что-то похожее на это

<html><head>
<style>
#mob {background:green; }
#region {background:yellow; }
#moscow {background:red; }
</style>
<script language="JavaScript">
function getInp(nm) {
    var  txt = '';
    if  (nm == 'mob') var  tt = [3,3,2,2];
    if  (nm == 'region') var  tt = [2,2,3];
    if  (nm == 'moscow') var  tt = [3,2,2];
    for (var  i=0; i<tt.length; i++) {
        if  (i == 0)
        switch(nm){
            case 'mob' : 
            txt += '8-<input type="text" size="' + tt[i] + '" maxlength="' + tt[i] + '" name="' + nm + '[]">\n'; 
            break;
            case  'region' : 
            txt += '8-(496<input type="text" size="' + tt[i] + '" maxlength="' + tt[i] + '" name="' + nm + '[]">)\n'; 
            break;
            default : txt += '8-(495)-<input type="text" size="' + tt[i] + '" maxlength="' + tt[i] + '" name="' + nm + '[]">\n'; 
        }
        else txt += '-<input type="text" size="' + tt[i] + '" maxlength="' + tt[i] + '" name="' + nm + '[]">\n'; 
    }
document.getElementById(nm).innerHTML += txt + '<hr>' ;
}
</script>
</head><body>
<?php 
    
if (!empty($_POST)) {

        function 
imp(&$v$k$array)
            {
                
$v implode('-'$v);
                
$v = (!preg_match($array[1], $v)) ? '' ' ' $array[0] . $v ' ' ;
            }

    if (!empty(
$_POST['mob'])) {
        echo 
'<hr>mob<hr>';
        
$pr = array('8-',  '#^\d{3}\-\d{3}\-\d{2}\-\d{2}$#');
        
$mob array_chunk($_POST['mob'], 4); 
        
array_walk($mob'imp'$pr);
        
var_dump($mob) ; #
    
} else $mob = array();
    
    if (!empty(
$_POST['region'])) {
        echo 
'<hr>region<hr>';
        
$pr = array('8-496''#^\d{2}\-\d{2}\-\d{3}$#');
        
$region array_chunk($_POST['region'], );
        
array_walk($region'imp'$pr);
        
var_dump($region) ; #
    
} else $region = array();
    
    if (!empty(
$_POST['moscow'])) {
        echo 
'<hr>moscow<hr>';
        
$pr = array('8-495-''#^\d{3}\-\d{2}\-\d{2}$#');
        
$moscow array_chunk($_POST['moscow'], ); 
        
array_walk($moscow'imp'$pr);
        
var_dump($moscow) ; #
    
} else $moscow = array();

echo 
'<hr><hr>'
 
. ($full_array implode(''array_unique(array_merge($mob$region$moscow))));

}

?>
<form action="" method="post">

<input type="button" onclick="getInp('moscow')" value="московcкий"> (495)  XХХ XX ХХ
<div id="moscow"> </div>

<input type="button" onclick="getInp('region')" value="подмосковный"> (496 ХХ) ХХ ХХХ
 <div id="region"></div>

<input type="button" onclick="getInp('mob')" value="мобильный">(ХХХ) ХХХ ХХ ХХ 
 <div id="mob"></div>

<input type="submit" value="ok"> 
</form></body></html>

   
 
 автор: cheops   (16.11.2007 в 13:18)   письмо автору
 
   для: provodnik   (15.11.2007 в 13:53)
 

Не понятно, что вызывает сложность. В результате у вас будет двумерный массив
$_POST[0][0] ... $_POST[0][4], из которго вы сможете получать телефоны
<?php
  
echo implode("-"$_POST[0]);
?>

   
 
 автор: provodnik   (15.11.2007 в 13:53)   письмо автору
 
 

Доброго времени суток.
Никак не могу придумать, как лучше сделать.
Есть форма, для занесения номеров телефонов. Для каждого из типов номера, форма состоит из нескольих полей, ограниченных для ввода символов.
Для московских телефонов такой шаблон: (495) ХХХ ХХ ХХ
Форма такая:
(495) <input type="text" size="3" maxlength="3" name="moscow[]">-
<input type="text" size="2" maxlength="2" name="moscow[]">-
<input type="text" size="2" maxlength="2" name="moscow[]">

Для Подмосковных телефонов такой: (496 ХХ) ХХ ХХХ
Форма такая:
(496 
 <input type="text" size="2" maxlength="2" name="region[]">  )
 <input type="text" size="2" maxlength="2" name="region[]">-
<input type="text" size="3" maxlength="3" name="region[]">

Для мобильных номеров такой: (ХХХ) ХХХ ХХ ХХ
8 (<input onkeyup=ff2(this) type="text" size="3" maxlength="3" name="mob[]">) 
<input type="text" size="3" maxlength="3" name="mob[]">-
<input type="text" size="2" maxlength="2" name="mob[]">-
<input type="text" size="2" maxlength="2" name="mob[]">


Каждых телефонов может быть как много, так и неодного. Т.е. добавляющий человек может сам добавить поля с помощью JavaScript.

На выходе для каждого из типов номеров получается массив: Ввели 559 30 25 и 456 56 23
[moscow] => Array
        (
            [0] => 559
            [1] => 30
            [2] => 25
            [3] => 456
            [4] => 56
            [5] => 23
        )

Потом я буду собирать из этих трёх массивов одну строку вида (495) 559-30-25, (495) 456-56-23 и заносить в текстовое поле БД.
Я вот никак не соображу, как мне работать с получаемыми массивами?
Или может кто подскажет более удобну структуру данных?

Заранее благодарен...

   

Сообщения:  [1-3] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

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