За последние 24 часа нас посетил 18301 программист и 1642 робота. Сейчас ищут 1570 программистов ...

Оптимизация скрипта проверки и добавления телефонных номеров

Тема в разделе "Решения, алгоритмы", создана пользователем vovan1409, 29 апр 2012.

  1. vovan1409

    vovan1409 Активный пользователь

    С нами с:
    14 мар 2012
    Сообщения:
    33
    Симпатии:
    0
    Есть предложения по отпимизации?
    Код формы html(только поле "номер телефона" и "его описание")
    Код (Text):
    1.      ...
    2. <table id="tabs" cellpadding="3" cellspacing="3">
    3.         <tr>
    4.           <td>
    5.             <input size="20"  type="text" name="tel[]" />
    6.           </td>
    7.           <td>
    8.             <input size="20"  type="text" name="tel_info[]" />
    9.           </td>
    10.         </tr>
    11.         <tr>
    12.           <td align="center"><br />
    13.             <input type="button" value="Добавить еще поле" onfocus="this.blur()" />
    14.           </td>
    15.         </tr>
    16. </table>
    17. ...
    Скрипт добавления полей (javascript)
    Код (Text):
    1.  
    2. //удаление поля
    3. function dels(n){
    4.   var tabs=$("tabs");
    5.   if(tabs.rows.length==2 && n==0){
    6.     document.forms["add_form"].reset();
    7.     return;
    8.   }
    9.   if(tabs.rows.length>2){
    10.     if(n==0){return;}
    11.     else if(n==1){tabs.tBodies[0].deleteRow(tabs.rows.length-2);}
    12.     else{tabs.tBodies[0].deleteRow(n.parentNode.parentNode.rowIndex);}}else{return;}
    13. }
    14. //ф-ция добавления поля
    15. function adds(){
    16. var tabs=$("tabs");
    17. var newRow=tabs.tBodies[0].insertRow(tabs.rows.length-1);
    18. var newCell_1=newRow.insertCell(0);
    19.   newCell_1.style.border="none";
    20.   newCell_1.innerHTML="<span></span>";
    21. var newfield1=document.createElement("input");
    22.   newfield1.setAttribute("type","text");
    23.   newfield1.setAttribute("size","20");
    24.   newfield1.setAttribute("name","tel[]");
    25.   newCell_1.appendChild(newfield1);
    26.   newRow.appendChild(newCell_1);
    27.   var newCell_2=newRow.insertCell(1);
    28.   newCell_2.style.border="none";
    29.   newCell_2.innerHTML="<span></span>";
    30. var newfield2=document.createElement("input");
    31.   newfield2.setAttribute("type","text");
    32.   newfield2.setAttribute("size","20");
    33.   newfield2.setAttribute("name","tel_info[]");
    34.   newCell_2.appendChild(newfield2);
    35.   newRow.appendChild(newCell_2);
    36. var newCell_3=newRow.insertCell(2);
    37. var nb_2=document.createElement("input");
    38.   nb_2.setAttribute("type","button");
    39.   nb_2.setAttribute("value"," - ");
    40.   nb_2.title="<?=$lang[417]?>";
    41.   nb_2.onclick=function(){dels(this);}
    42. newCell_3.appendChild(nb_2);
    43. newRow.appendChild(newCell_3);
    44. showIndexius();
    45. }
    46. //ф-ция генерации номера(индекса) поля. Например tel[1] в данном случае единицы
    47. function showIndexius(){
    48. var tabs=$("tabs");
    49.   for(var i=0;i<tabs.rows.length;i++){
    50.     var fc=tabs.rows[i].firstChild;
    51.     fc.firstChild.innerHTML="";
    52.   }
    53. }
    Скрипт проверки телефона(ов) и описания(й) на корректность
    Код (Text):
    1. $tel='';
    2.     if (isset($_POST['tel']) && ($_POST['tel']!='')){
    3.       $tel=tel($_POST['tel'],$_POST['tel_info']);
    4.       if ($tel!='true'){     
    5.         $correct='0';//нужно ли добавлять данные в базу данных
    6.         echo $tel;//сгенерированное сообщение об ошибке
    7.         require_once("эту же страницу");
    8.       }
    9.     }
    Функция tel
    Код (Text):
    1. function tel($str,$info){
    2.   global $lang;
    3.   $i=0;
    4.   while ($i<count($str)){
    5.   if (!preg_match('/^[\d]{5,20}$/u',$str[$i])){
    6.     $result='не правильный формат телефона';
    7.     return err_generation($result);
    8.   }
    9.   if ($info!=''){
    10.     if (!preg_match('/^[\p{L}\d]{1}+[\p{L}\d\s\-\_]{0,19}$/u',$info[$i])) {
    11.       $result='не корректное описание телефона';
    12.       return $result;
    13.     }
    14.   }
    15.   $i++;
    16.   }  
    17.   return true;   
    18. }
    Добавление данных в БД(после проверки их на существование)
    Код (Text):
    1.    
    2. if ($correct=='1'){
    3.   добавляем адрес
    4.   добавляем фотки
    5.   ...
    6.   //если контакты прошли проверку на корректность    
    7.   if($tel=='true'){
    8.     $i=0;
    9.     while ($i<count($_POST['tel'])){
    10.       $phone[$i]=$_POST['tel'][$i];
    11.       $tel_info[$i]=$_POST['tel_info'][$i];
    12.       //проверяем существет ли такой номер в БД
    13.       $test=mysql_query("SELECT `id_tel` FROM `tel` WHERE `telefon`='".$phone[$i]."'");
    14.       if (!mysql_num_rows($test)){
    15.         unset($test);
    16.         $add_phone=mysql_query("INSERT into `tel` SET `telefon`=' ".$phone[$i]." ' ");
    17.         $id=mysql_insert_id();
    18.         $add=mysql_query("INSERT into `description` SET `descript`=' ".$tel_info[$i]." ' ");
    19.         unset($add);
    20.         unset($id);
    21.       }
    22.       $i++;  
    23.     }
    24.   }
    25. }
     
  2. html-программист

    html-программист Активный пользователь

    С нами с:
    10 фев 2012
    Сообщения:
    831
    Симпатии:
    4
    Адрес:
    Kiev
    Код (PHP):
    1.     $i=0;
    2.     while ($i<count($_POST['tel'])){  
    Код (PHP):
    1.     $i=0;
    2.     $c=count($_POST['tel'])
    3.     while ($i<$c){