Есть предложения по отпимизации? Код формы html(только поле "номер телефона" и "его описание") Код (Text): ... <table id="tabs" cellpadding="3" cellspacing="3"> <tr> <td> <input size="20" type="text" name="tel[]" /> </td> <td> <input size="20" type="text" name="tel_info[]" /> </td> </tr> <tr> <td align="center"><br /> <input type="button" value="Добавить еще поле" onfocus="this.blur()" /> </td> </tr> </table> ... Скрипт добавления полей (javascript) Код (Text): //удаление поля function dels(n){ var tabs=$("tabs"); if(tabs.rows.length==2 && n==0){ document.forms["add_form"].reset(); return; } if(tabs.rows.length>2){ if(n==0){return;} else if(n==1){tabs.tBodies[0].deleteRow(tabs.rows.length-2);} else{tabs.tBodies[0].deleteRow(n.parentNode.parentNode.rowIndex);}}else{return;} } //ф-ция добавления поля function adds(){ var tabs=$("tabs"); var newRow=tabs.tBodies[0].insertRow(tabs.rows.length-1); var newCell_1=newRow.insertCell(0); newCell_1.style.border="none"; newCell_1.innerHTML="<span></span>"; var newfield1=document.createElement("input"); newfield1.setAttribute("type","text"); newfield1.setAttribute("size","20"); newfield1.setAttribute("name","tel[]"); newCell_1.appendChild(newfield1); newRow.appendChild(newCell_1); var newCell_2=newRow.insertCell(1); newCell_2.style.border="none"; newCell_2.innerHTML="<span></span>"; var newfield2=document.createElement("input"); newfield2.setAttribute("type","text"); newfield2.setAttribute("size","20"); newfield2.setAttribute("name","tel_info[]"); newCell_2.appendChild(newfield2); newRow.appendChild(newCell_2); var newCell_3=newRow.insertCell(2); var nb_2=document.createElement("input"); nb_2.setAttribute("type","button"); nb_2.setAttribute("value"," - "); nb_2.title="<?=$lang[417]?>"; nb_2.onclick=function(){dels(this);} newCell_3.appendChild(nb_2); newRow.appendChild(newCell_3); showIndexius(); } //ф-ция генерации номера(индекса) поля. Например tel[1] в данном случае единицы function showIndexius(){ var tabs=$("tabs"); for(var i=0;i<tabs.rows.length;i++){ var fc=tabs.rows[i].firstChild; fc.firstChild.innerHTML=""; } } Скрипт проверки телефона(ов) и описания(й) на корректность Код (Text): $tel=''; if (isset($_POST['tel']) && ($_POST['tel']!='')){ $tel=tel($_POST['tel'],$_POST['tel_info']); if ($tel!='true'){ $correct='0';//нужно ли добавлять данные в базу данных echo $tel;//сгенерированное сообщение об ошибке require_once("эту же страницу"); } } Функция tel Код (Text): function tel($str,$info){ global $lang; $i=0; while ($i<count($str)){ if (!preg_match('/^[\d]{5,20}$/u',$str[$i])){ $result='не правильный формат телефона'; return err_generation($result); } if ($info!=''){ if (!preg_match('/^[\p{L}\d]{1}+[\p{L}\d\s\-\_]{0,19}$/u',$info[$i])) { $result='не корректное описание телефона'; return $result; } } $i++; } return true; } Добавление данных в БД(после проверки их на существование) Код (Text): if ($correct=='1'){ добавляем адрес добавляем фотки ... //если контакты прошли проверку на корректность if($tel=='true'){ $i=0; while ($i<count($_POST['tel'])){ $phone[$i]=$_POST['tel'][$i]; $tel_info[$i]=$_POST['tel_info'][$i]; //проверяем существет ли такой номер в БД $test=mysql_query("SELECT `id_tel` FROM `tel` WHERE `telefon`='".$phone[$i]."'"); if (!mysql_num_rows($test)){ unset($test); $add_phone=mysql_query("INSERT into `tel` SET `telefon`=' ".$phone[$i]." ' "); $id=mysql_insert_id(); $add=mysql_query("INSERT into `description` SET `descript`=' ".$tel_info[$i]." ' "); unset($add); unset($id); } $i++; } } }
Код (PHP): $i=0; while ($i<count($_POST['tel'])){ Код (PHP): $i=0; $c=count($_POST['tel']) while ($i<$c){