Выпадающие списки (Помогите пожалуйста с кодом)

-R
На сайте с 22.02.2011
Offline
0
1670

Я не профессиональный web-программист, в кодах я разбираюсь очень плохо, но на работе попросили чуть исправить одну страничку.

Суть проблемы такова.

Наш сайт создан на системе Битрикс. На странице http://www.auto-city.ru/obyav/podat/ нужно было удалить одно дополнительное поле ввода текста (номера телефона). Я удалил строку в таблице с полем ввода текста через визуальный редактор и не подумал сохранить первичный код.

В результате чего, страница покорежилась, и получился вот такой код в файле index.php:


<?$APPLICATION->IncludeFile('/inc/mail.php')?> <?$err=-1;?> <?if($_REQUEST['act']=="add" && $_REQUEST['text'] && $_REQUEST['phone'] && $_REQUEST['captcha'] && !isset($_REQUEST['from'])):?> <?$err=0;?> <?if($_SESSION['pass']!=$_REQUEST['captcha']):?>
<div class="red"><b>Неверно введен код подтверждения!</b></div>
<?$err=1;?> <?else:?> <?
$el = new CIBlockElement;

$PROP = array();
$PROP['phone'] = $_REQUEST['phone'];

$arLoadProductArray = Array(
"IBLOCK_SECTION" => $_REQUEST['podr_'.$_REQUEST['rubrika']],
"IBLOCK_ID" => 47,
"PROPERTY_VALUES"=> $PROP,
"NAME" => $_REQUEST['text'],
"ACTIVE" => "N",
);

if($new_id = $el->Add($arLoadProductArray))
{
$sect2 = GetIBlockSection($_REQUEST['podr_'.$_REQUEST['rubrika']]);
$sect1 = GetIBlockSection($_REQUEST['rubrika']);
echo "Ваше объявление успешно принято и будет рассмотрено модератором";
$domen = "http://www.auto-city.ru/";
$mail_body = 'Добавлено новое объявление "'.$_REQUEST['text'].'" в рубрике "'.$sect1['NAME'].'"->"'.$sect2['NAME'].'" и ожидает модерации: <a href="'.$domen.'bitrix/admin/iblock_element_edit.php?ID='.$new_id.'&type=obyav&IBLOCK_ID=47">'.$domen.'bitrix/admin/iblock_element_edit.php?ID='.$new_id.'&type=obyav&IBLOCK_ID=47</a>';
email('in@elonika.ru', 'robot@autocity.ru', 'Робот АвтоCity', 'Новое объявление на сайте', $mail_body);
}
else
echo "Возникла ошибка при добавлении, обратитесь к слежбе поддержки";
?> <?endif?> <?elseif($_REQUEST['act']=="add"):?> <?if(!$_REQUEST['from']):?>
<div class="red"><b>Заполните все поля!</b></div>
<?else:?> <b>Пожалуйста, укажите подрубрику и введите код подтверждения</b> <?endif?> <?$err=1;?> <?endif?> <?if($err || $err==-1):?>
<script language="JavaScript">
lastKey = 0;
function ch_r(obj)
{
document.getElementById('r_'+obj.value).style.display = 'block';
document.getElementById('r_'+lastrid).style.display = 'none';
lastrid = obj.value;
}

function checkForm(obj)
{
var str = obj.phone.value;
var re = /[^\d ()-+]+/;
for(i=0;i<1000;i++)
obj.phone.value = obj.phone.value.replace(re, "");
if(obj.phone.value!=str){
alert('В поле "Номер телефона" необходимо вводить только цифры!');
return false;

}

if(!obj.text.value || !obj.captcha.value || !obj.phone.value)
{
alert('Заполните все поля!');
return false;
}
}
/*
function checkChar2(){
var re = /[^\d ()-+]+/;
for(i=0;i<1000;i++)
obj.phone.value = obj.phone.value.replace(re, "");
}
function checkChar()
{
key = event.keyCode;
if(key<48 || key>57)

// || key==109 || key==46 || key==16 || key==8 || key==32 || key==37 || key==39 || key==36 || key==35 || (key==57 || key==48 || key==107 || key==36 || key==35 || key==37 || key==39 || key==51 || key==56))
{
alert(key);
lastKey = key;
return false;
}
lastKey = key;
return true;
}*/
</script>
<form name="iblock_add" method="post" onsubmit="return checkForm(this)">
<table class="tabs" style="width: 100%; border-collapse: collapse;" id="give_obyav">
<tbody>
<tr> <td> Текст объявления: </td> <td style="width: 250px;"> <textarea maxlength="200" size="20" rows="5" cols="25" name="text" style="width: 100%;">&lt;img src=&quot;/bitrix/images/fileman/htmledit2/php.gif&quot; __bxsrc=&quot;/bitrix/images/fileman/htmledit2/php.gif&quot; border=&quot;0&quot; __bxtagname=&quot;php&quot; __bxcontainer=&quot;{'code': '&lt;?=$_REQUEST[\'text\']?&gt;'}&quot; /&gt;</textarea> </td> </tr>



<tr> <td> Рубрика: </td> <td> <?$l1 = GetIBlockSectionList(47,0,Array("SORT"=>"ASC"))?> <select name="rubrika" onchange="ch_r(this);" style="width: 100%;"> </select> </td> </tr>

<tr> <td> Подрубрика: </td> <td> <?$l1 = GetIBlockSectionList(47,0,Array("SORT"=>"ASC"))?> <?$i=0;?> <?while($s_l1 = $l1->GetNext()):?> <?if($i==0):?>
<script language="JavaScript">
var lastrid = <img src="/bitrix/images/fileman/htmledit2/php.gif" border="0" __bxtagname="php" __bxcontainer="{'code': '&lt;?=(!$_REQUEST[\'rubrika\'])?$s_l1[\'ID\']:$_REQUEST[\'rubrika\']?&gt;'}" />;
</script>
<?endif?> <?=$s_l1['ID']?> <?$i++;?> <?endwhile?> </td> </tr>

<tr> <td> Код подтверждения: </td> <td> <img src="/captcha/captcha_image.php" /> </td> </tr>

<tr> <td> Введите код: </td> <td> <input type="text" style="width: 100%;" name="captcha" /> </td> </tr>

<tr> <td colspan="2"> <input type="hidden" name="act" value="add" /> <input type="submit" name="iblock_submit" value="Подать" class="btn" style="width: 50%;" /> <input type="reset" value="Отмена" class="btn" style="width: 49%;" /> </td> </tr>
</tbody>
</table>
</form> <?endif?>

При выполнениии этого кода получалось, что один из ниспадающих списков пропал, а второй стал пустым. И в полях таблицы появились четырехзначные числа (как я понял, ID рубрик) и в поле ввода основного текста стал появляться мусор из кода.

Повозившись с кодом, я добился чистого поля ввода и нормального расположения ниспадающих списков. Но вот только они все равно остались пустыми.

Вот так выглядит часть кода с таблицей, что была исправлена мной:


<form onsubmit="return checkForm(this)" method="post" name="iblock_add">
<table id="give_obyav" style="width: 100&#37;; border-collapse: collapse;" class="tabs">
<tbody>
<tr> <td> Текст объявления: </td> <td style="width: 250px;"> <textarea style="width: 100&#37;;" name="text" cols="25" rows="5" size="20" maxlength="200"></textarea></td> </tr>

<tr><td valign="top">
<br />
</td><td valign="top">
<br />
</td></tr>

<tr> <td> Рубрика: </td> <td> <?$l1 = GetIBlockSectionList(47, 0, Array("sort"=>"asc"))?> <select style="width: 100&#37;;" onchange="ch_r(this);" name="rubrika"> </select> </td> </tr>

<tr> <td> Подрубрика: </td> <td> <?$l1 = GetIBlockSectionList(47,0,Array("SORT"=>"ASC"))?> <select style="width: 100&#37;;" onchange="ch_r(this);" name="podr_"> </select> </td> </tr>

<tr> <td> Код подтверждения: </td> <td> <img src="/captcha/captcha_image.php" /> </td> </tr>

<tr> <td> Введите код: </td> <td> <input type="text" name="captcha" style="width: 100&#37;;" /> </td> </tr>

<tr> <td colspan="2"> <input type="hidden" value="add" name="act" /> <input type="submit" style="width: 50&#37;;" class="btn" value="Подать" name="iblock_submit" /> <input type="reset" style="width: 49&#37;;" class="btn" value="Отмена" /> </td> </tr>
</tbody>
</table>

Помогите пожалуйста исправить код, чтобы он работал без поля ввода номера телефона, желательно на весь файл index.php

-cRow- добавил 22.02.2011 в 13:32

Неужели никто не может помочь? Мне шеф голову снимет, Пожалуйста, откликнитесь кто нибудь!

-cRow- добавил 23.02.2011 в 09:02

То нибудь может помочь? НЕТ?

T
На сайте с 28.06.2007
Offline
82
#1

Зачем лезть туда, с чем плохо знакомы?

Сам плохо ориентируюсь в вашем коде и не знаю что именно вы изменили.

Только когда будете изменять index.php сохраните код.

Поробуйте так:

<?$APPLICATION->IncludeFile('/inc/mail.php')?> <?$err=-1;?> <?if($_REQUEST['act']=="add" && $_REQUEST['text'] $_REQUEST['captcha'] && !isset($_REQUEST['from'])):?> <?$err=0;?> <?if($_SESSION['pass']!=$_REQUEST['captcha']):?> 

<div class="red"><b>Неверно введен код подтверждения!</b></div>
<?$err=1;?> <?else:?> <?
$el = new CIBlockElement;

$PROP = array();
//$PROP['phone'] = $_REQUEST['phone'];

$arLoadProductArray = Array(
"IBLOCK_SECTION" => $_REQUEST['podr_'.$_REQUEST['rubrika']],
"IBLOCK_ID" => 47,
"PROPERTY_VALUES"=> $PROP,
"NAME" => $_REQUEST['text'],
"ACTIVE" => "N",
);

if($new_id = $el->Add($arLoadProductArray))
{
$sect2 = GetIBlockSection($_REQUEST['podr_'.$_REQUEST['rubrika']]);
$sect1 = GetIBlockSection($_REQUEST['rubrika']);
echo "Ваше объявление успешно принято и будет рассмотрено модератором";
$domen = "http://www.auto-city.ru/";
$mail_body = 'Добавлено новое объявление "'.$_REQUEST['text'].'" в рубрике "'.$sect1['NAME'].'"->"'.$sect2['NAME'].'" и ожидает модерации: <a href="'.$domen.'bitrix/admin/iblock_element_edit.php?ID='.$new_id.'&type=obyav&IBLOCK_ID=47">'.$domen.'bitrix/admin/iblock_element_edit.php?ID='.$new_id.'&type=obyav&IBLOCK_ID=47</a>';
email('in@elonika.ru', 'robot@autocity.ru', 'Робот АвтоCity', 'Новое объявление на сайте', $mail_body);
}
else
echo "Возникла ошибка при добавлении, обратитесь к слежбе поддержки";
?> <?endif?> <?elseif($_REQUEST['act']=="add"):?> <?if(!$_REQUEST['from']):?>
<div class="red"><b>Заполните все поля!</b></div>
<?else:?> <b>Пожалуйста, укажите подрубрику и введите код подтверждения</b> <?endif?> <?$err=1;?> <?endif?> <?if($err || $err==-1):?>
<script language="JavaScript">
lastKey = 0;
function ch_r(obj)
{
document.getElementById('r_'+obj.value).style.display = 'block';
document.getElementById('r_'+lastrid).style.display = 'none';
lastrid = obj.value;
}
/*
function checkForm(obj)
{
var str = obj.phone.value;
var re = /[^\d ()-+]+/;
for(i=0;i<1000;i++)
obj.phone.value = obj.phone.value.replace(re, "");
if(obj.phone.value!=str){
alert('В поле "Номер телефона" необходимо вводить только цифры!');
return false;

}
*/
if(!obj.text.value || !obj.captcha.value)
{
alert('Заполните все поля!');
return false;
}
}
/*
function checkChar2(){
var re = /[^\d ()-+]+/;
for(i=0;i<1000;i++)
obj.phone.value = obj.phone.value.replace(re, "");
}
function checkChar()
{
key = event.keyCode;
if(key<48 || key>57)

// || key==109 || key==46 || key==16 || key==8 || key==32 || key==37 || key==39 || key==36 || key==35 || (key==57 || key==48 || key==107 || key==36 || key==35 || key==37 || key==39 || key==51 || key==56))
{
alert(key);
lastKey = key;
return false;
}
lastKey = key;
return true;
}*/
</script>
<form name="iblock_add" method="post" onSubmit="return checkForm(this)">
<table class="tabs" style="width:100%" id="give_obyav">
<tr>
<td>
Текст объявления:&nbsp;&nbsp;
</td>
<td style="width:250px">
<textarea maxlength="200" size="20" rows="5" cols="25" name="text" style="width:100%"></textarea>
</td>
</tr>
<tr>
<td>
Рубрика:&nbsp;&nbsp;
</td>
<td>
<?$l1 = GetIBlockSectionList(47,0,Array("SORT"=>"ASC"))?> <select name="rubrika" onchange="ch_r(this);" style="width: 100%;"> </select>
</td>
</tr>
<tr>
<td>
Подрубрика:&nbsp;&nbsp;
</td>
<td>
<?$l1 = GetIBlockSectionList(47,0,Array("SORT"=>"ASC"))?> <?$i=0;?> <?while($s_l1 = $l1->GetNext()):?> <?if($i==0):?>
<script language="JavaScript">
var lastrid = <img src="/bitrix/images/fileman/htmledit2/php.gif" border="0" __bxtagname="php" __bxcontainer="{'code': '&lt;?=(!$_REQUEST[\'rubrika\'])?$s_l1[\'ID\']:$_REQUEST[\'rubrika\']?&gt;'}" />;
</script>
<?endif?> <?=$s_l1['ID']?> <?$i++;?> <?endwhile?>
</td>
</tr>
<tr>
<td>
Код подтверждения:
</td>
<td>
<img src="/captcha/captcha_image.php">
</td>
</tr>
<tr>
<td>
Введите код:
</td>
<td>
<input type="text" style="width:100%" name="captcha">
</td>
</tr>
<tr>
<td colspan="2">
<input type="hidden" name="act" value="add">
<input type="submit" name="iblock_submit" value="Подать" class="btn" style="width:50%">
<input type="reset" value="Отмена" class="btn" style="width:49%">
</td>
</tr>
</table>
</form> <?endif?>
-R
На сайте с 22.02.2011
Offline
0
#2

Да, знаю сам не сторонник "ЛазаньяКудаПопало" но так уж вышло.) Если шеф сказал, то вот так вот))


Parse error: syntax error, unexpected T_VARIABLE in /users/a/u/auto-city.ru/html/www/obyav/podat/index.php on line 5

а вот это выдало с вашим кодом(( Боюсь хостера дергать бессмысленно, уже вторая неделя пошла( Да и хостер у нас, мягко сказать...

Dos3
На сайте с 07.01.2011
Offline
363
#3

пометь то место где именно снёс строку

Наш сайт создан на системе Битрикс

если удалил из индексной странице то просто замени индексный файл на орегинальный от этой смс, если что пиши в лс попробую помоч

T
На сайте с 28.06.2007
Offline
82
#4

Там скриптом проверяется если пустой телефон, то не даст отправить данные. Это нужно учитывать.

Но похоже сами запросы к БД были задеты.

Чуть ошибся с комментированием кода, так попробуйте:

<?$APPLICATION->IncludeFile('/inc/mail.php')?> <?$err=-1;?> <?if($_REQUEST['act']=="add" && $_REQUEST['text'] $_REQUEST['captcha'] && !isset($_REQUEST['from'])):?> <?$err=0;?> <?if($_SESSION['pass']!=$_REQUEST['captcha']):?>  

<div class="red"><b>Неверно введен код подтверждения!</b></div>
<?$err=1;?> <?else:?> <?
$el = new CIBlockElement;

$PROP = array();
$PROP['phone'] = $_REQUEST['phone'];

$arLoadProductArray = Array(
"IBLOCK_SECTION" => $_REQUEST['podr_'.$_REQUEST['rubrika']],
"IBLOCK_ID" => 47,
"PROPERTY_VALUES"=> $PROP,
"NAME" => $_REQUEST['text'],
"ACTIVE" => "N",
);

if($new_id = $el->Add($arLoadProductArray))
{
$sect2 = GetIBlockSection($_REQUEST['podr_'.$_REQUEST['rubrika']]);
$sect1 = GetIBlockSection($_REQUEST['rubrika']);
echo "Ваше объявление успешно принято и будет рассмотрено модератором";
$domen = "http://www.auto-city.ru/";
$mail_body = 'Добавлено новое объявление "'.$_REQUEST['text'].'" в рубрике "'.$sect1['NAME'].'"->"'.$sect2['NAME'].'" и ожидает модерации: <a href="'.$domen.'bitrix/admin/iblock_element_edit.php?ID='.$new_id.'&type=obyav&IBLOCK_ID=47">'.$domen.'bitrix/admin/iblock_element_edit.php?ID='.$new_id.'&type=obyav&IBLOCK_ID=47</a>';
email('in@elonika.ru', 'robot@autocity.ru', 'Робот АвтоCity', 'Новое объявление на сайте', $mail_body);
}
else
echo "Возникла ошибка при добавлении, обратитесь к слежбе поддержки";
?> <?endif?> <?elseif($_REQUEST['act']=="add"):?> <?if(!$_REQUEST['from']):?>
<div class="red"><b>Заполните все поля!</b></div>
<?else:?> <b>Пожалуйста, укажите подрубрику и введите код подтверждения</b> <?endif?> <?$err=1;?> <?endif?> <?if($err || $err==-1):?>
<script language="JavaScript">
lastKey = 0;
function ch_r(obj)
{
document.getElementById('r_'+obj.value).style.display = 'block';
document.getElementById('r_'+lastrid).style.display = 'none';
lastrid = obj.value;
}

function checkForm(obj)
{
/*
var str = obj.phone.value;
var re = /[^\d ()-+]+/;
for(i=0;i<1000;i++)
obj.phone.value = obj.phone.value.replace(re, "");
if(obj.phone.value!=str){
alert('В поле "Номер телефона" необходимо вводить только цифры!');
return false;

}
*/
if(!obj.text.value || !obj.captcha.value)
{
alert('Заполните все поля!');
return false;
}
}
/*
function checkChar2(){
var re = /[^\d ()-+]+/;
for(i=0;i<1000;i++)
obj.phone.value = obj.phone.value.replace(re, "");
}
function checkChar()
{
key = event.keyCode;
if(key<48 || key>57)

// || key==109 || key==46 || key==16 || key==8 || key==32 || key==37 || key==39 || key==36 || key==35 || (key==57 || key==48 || key==107 || key==36 || key==35 || key==37 || key==39 || key==51 || key==56))
{
alert(key);
lastKey = key;
return false;
}
lastKey = key;
return true;
}*/
</script>
<form name="iblock_add" method="post" onSubmit="return checkForm(this)">
<table class="tabs" style="width:100%" id="give_obyav">
<tr>
<td>
Текст объявления:&nbsp;&nbsp;
</td>
<td style="width:250px">
<textarea maxlength="200" size="20" rows="5" cols="25" name="text" style="width:100%"></textarea>
</td>
</tr>
<tr>
<td>
Рубрика:&nbsp;&nbsp;
</td>
<td>
<?$l1 = GetIBlockSectionList(47,0,Array("SORT"=>"ASC"))?> <select name="rubrika" onchange="ch_r(this);" style="width: 100%;"> </select>
</td>
</tr>
<tr>
<td>
Подрубрика:&nbsp;&nbsp;
</td>
<td>
<?$l1 = GetIBlockSectionList(47,0,Array("SORT"=>"ASC"))?> <?$i=0;?> <?while($s_l1 = $l1->GetNext()):?> <?if($i==0):?>
<script language="JavaScript">
var lastrid = <img src="/bitrix/images/fileman/htmledit2/php.gif" border="0" __bxtagname="php" __bxcontainer="{'code': '&lt;?=(!$_REQUEST[\'rubrika\'])?$s_l1[\'ID\']:$_REQUEST[\'rubrika\']?&gt;'}" />;
</script>
<?endif?> <?=$s_l1['ID']?> <?$i++;?> <?endwhile?>
</td>
</tr>
<tr>
<td>
Код подтверждения:
</td>
<td>
<img src="/captcha/captcha_image.php">
</td>
</tr>
<tr>
<td>
Введите код:
</td>
<td>
<input type="text" style="width:100%" name="captcha">
</td>
</tr>
<tr>
<td colspan="2">
<input type="hidden" name="act" value="add">
<input type="submit" name="iblock_submit" value="Подать" class="btn" style="width:50%">
<input type="reset" value="Отмена" class="btn" style="width:49%">
</td>
</tr>
</table>
</form> <?endif?>
Gorjelin
На сайте с 27.04.2010
Offline
68
#5
Dos3:
Боюсь хостера дергать бессмысленно

просто восстановите из бекапа ))

Your dreams come true!
-R
На сайте с 22.02.2011
Offline
0
#6
Gorjelin:
просто восстановите из бекапа ))

скачал бекап в 25 метров. в архиве нет многих файлов. В том числе и этого.((

Trol, второй код тоже не работает( Я думал, не проще ли заново написать запрос к БД, и вставить в имеющийся код. Или это как раз сложнее? Я просто в этом мало что смыслю.

А еще была мысль, не может ли мешать работе страницы наличие в описаниях переменных гдето, указаний о поле ввода номера телефона? Там встречаются строки phone.

Dos3, пометить место, откуда удалил строку таблицы? я удалял в визуальном редакторе (будь он неладен) Понадеялся на программу, что она сама сформирует новый код как надо(.

zhitov
На сайте с 30.01.2005
Offline
219
#7

-cRow-, нанимайте специалиста, т.к.

-cRow-:
просто в этом мало что смыслю.

иначе натворите там...

Строительные калькуляторы ( https://www.zhitov.com/ )
-R
На сайте с 22.02.2011
Offline
0
#8

Проблему решили, всем большое спасибо))) Особенное спасибо .:nbd:.

Тему можно закрывать.

-cRow- добавил 26.02.2011 в 09:57

PS: пока ремонтировали страничку, многое узнал. Очень заинтересовала работа с кодами. Думаю, буду изучать это направление. Кто знает, может однажды и сам вам чем нибудь помогу? ;-)

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий