Регистрация
Регистрируясь, вы подтверждаете свое согласие с соглашением об использовании персональных данных.
Восстановление пароля
15.06.2012, 13:20
Евгений

Зарегистрирован:
2012-05-22
Сообщений: 31

Необходимо организовать форму, которую пользователь может заполнить только один раз.

Нашел код функции, чтобы ограничить пользователя в добавлении:
Код:
".opt($check='".listQuery("SELECT User_ID FROM Message68 WHERE User_ID=$AUTH_USER_ID LIMIT 1","\$data[User_ID]")."',"")."
".opt_case($check,"форма добавления НЕ показывается","форма показывается")."


И соответственно сама форма:
Код:
";
if ($action!='add') return;
global $LinkID;
$firm_sql = "SELECT a.Checked, a.Sub_Class_ID,a.Class_ID FROM Sub_Class as a WHERE a.Sub_Class_ID='".$cc_settings['CategoryCC']."'";

$resCategory = mysql_query($firm_sql, $LinkID);
list($useCategory,$CategoryCC,$CategoryClass) = mysql_fetch_row($resCategory);
echo"
".( $warnText ? "<div class='warnText'>$warnText</div>" : NULL )."

<form name='adminForm' id='adminForm' enctype='multipart/form-data' method='post' action='/netcat/add.php'>
<div id='nc_moderate_form'><div class='nc_clear'></div>
<input name='admin_mode' type='hidden' value='$admin_mode' />
".( $nc_core->token->is_use($action) ? $nc_core->token->get_input() : "")."
<input name='catalogue' type='hidden' value='$catalogue' />
<input name='cc' type='hidden' value='$cc' />
<input name='sub' type='hidden' value='$sub' />
<input name='posting' type='hidden' value='1' />
<input name='curPos' type='hidden' value='$curPos' />
<input name='f_Parent_Message_ID' type='hidden' value='$f_Parent_Message_ID' />
".( $admin_mode && !$systemTableID ? "".($moderationID==1 && !isset($f_Checked) ? opt($f_Checked=1,"") : "")."
<div id='nc_moderate_settings'>
".($admin_mode ? "<div class='left'>
".CONTROL_CONTENT_SUBDIVISION_FUNCS_MAINDATA_KEYWORD." <input name='f_Keyword' type='text' size='20' maxlength='255' value='".$f_Keyword."'>
</div>
<div class='left'>
<img src='/netcat/admin/images/prior.gif' width='16' height='16' align='left' alt='Приоритет' title='Приоритет' />
<input name='f_Priority' type='text' size='3' maxlength='3' value='".$f_Priority."' />
</div>" : "")."
".(CheckUserRights( $current_cc['Sub_Class_ID'], "moderate", $posting )? "
<div class='left_checkbox'>
<input id='chk' name='f_Checked' type='checkbox' value='1' ".($f_Checked ? "checked='checked'" : "")." /> <label for='chk'>".NETCAT_MODERATION_TURNON."</label>
</div>"
: "<input id='chk' name='f_Checked' type='hidden' value='".($f_Checked ? 1 : 0)."' />")."
</div>
" : NULL )." <div class='nc_clear'></div>
</div>
".($useCategory ? "
<select name='f_CategoryID'>
<option value=''>-- Выберите категорию --</option>
".opt($GLOBALS[f_CategoryID]=$f_CategoryID,"")."
".listQuery("SELECT Message_ID, Name FROM Message$CategoryClass WHERE Sub_Class_ID='$CategoryCC' ORDER BY Priority DESC","<option value='\$data[Message_ID]'\".opt(\$GLOBALS[f_CategoryID]==\$data[Message_ID],\" selected\").\">\$data[Name]</option>")."
</select><br><br>
":"
<input type='hidden' name='f_CategoryID' value='$f_CategoryID'>
")."
".nc_string_field("Name", "maxlength='255' size='50'", $classID, 1)."<br />
<br />
".nc_string_field("Sphere", "maxlength='255' size='50'", $classID, 1)."<br />
<br />
".nc_text_field("Goods", "", $classID, 1)."<br />
<br />
".nc_text_field("Description", "", $classID, 1)."<br />
<br />
".nc_string_field("Address", "maxlength='255' size='50'", $classID, 1)."<br />
<br />
".nc_string_field("Phone", "maxlength='255' size='50'", $classID, 1)."<br />
<br />
".nc_string_field("Fax", "maxlength='255' size='50'", $classID, 1)."<br />
<br />
".nc_string_field("Web", "maxlength='255' size='50'", $classID, 1)."<br />
<br />
".nc_string_field("Email", "maxlength='255' size='50'", $classID, 1)."<br />
<br />
".nc_string_field("Tovarss", "maxlength='255' size='50'", $classID, 1)."<br />
<br />
".nc_file_field("Logo", "size='50'", $classID, 1)."<br />
<br />
".(!$AUTH_USER_ID && $current_cc['UseCaptcha'] && $MODULE_VARS['captcha'] ? nc_captcha_formfield()."<br/><br/>".NETCAT_MODERATION_CAPTCHA." (*):<br/><input type='text' name='nc_captcha_code' size='10'><br/><br/>" : "")."
<br/>".NETCAT_MODERATION_INFO_REQFIELDS."<br/><br/>
".nc_submit_button(NETCAT_MODERATION_BUTTON_ADD)."
</form>


Как их совместить для работы?
18.06.2012, 14:16
DiGGy
DiGGy
DiGGy

Зарегистрирован:
2005-04-04
Сообщений: 1546

Цитата:
Нашел код функции, чтобы ограничить пользователя в добавлении:
Код:
".opt($check='".listQuery("SELECT User_ID FROM Message68 WHERE User_ID=$AUTH_USER_ID LIMIT 1","$data[User_ID]")."',"")."
".opt_case($check,"форма добавления НЕ показывается","форма показывается")."

Смущает слово "нашел"... Вы всегда софт пишите собирая готовые чужие куски кода? В том, что вы нашли логики нет. Если у вас определена переменная $AUTH_USER_ID, то юзер уже авторизован, соотв-но ему уже не надо форму выводить. Какой смысл в отдельном sql запросе? Вам надо сократить до:
Код:
".($AUTH_USER_ID?"форма добавления НЕ показывается":"форма показывается")."

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

Цитата:
И соответственно сама форма:
Код:
";
if ($action!='add') return;
global $LinkID;
$firm_sql = "SELECT a.Checked, a.Sub_Class_ID,a.Class_ID FROM Sub_Class as a WHERE a.Sub_Class_ID='".$cc_settings['CategoryCC']."'";

$resCategory = mysql_query($firm_sql, $LinkID);
list($useCategory,$CategoryCC,$CategoryClass) = mysql_fetch_row($resCategory);
echo"


Замените на
Код:
 ".opt(list($useCategory,$CategoryCC,$CategoryClass)=$db->get_row("SELECT a.Checked, a.Sub_Class_ID,a.Class_ID FROM Sub_Class as a WHERE a.Sub_Class_ID=".(int)$cc_settings['CategoryCC'],ARRAY_N),null)."



Цитата:
Как их совместить для работы?

Просто тупо вставляете вместо фразы "форма показывается" эту форму.

Temet nosce...
22.06.2012, 16:46
Евгений

Зарегистрирован:
2012-05-22
Сообщений: 31

Странно, либо я изначально не заметил, либо что-то переглючило и скрытие перестало работать. Сейчас в любом случае он не выводит необходимое, независимо от того, есть у пользователя записи или нет.
Что может быть не так?
22.06.2012, 18:30
DiGGy
DiGGy
DiGGy

Зарегистрирован:
2005-04-04
Сообщений: 1546

Цитата:
Что может быть не так?

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

Temet nosce...
03.07.2012, 17:02
Евгений

Зарегистрирован:
2012-05-22
Сообщений: 31

Возвращаюсь к теме. Вопрос по прежнему актуален.
Очевидно, меня не совсем правильно поняли. Мне необходимо скрывать форму от тех, кто её уже заполнял, в случае же с:
Код:
".($AUTH_USER_ID?"форма добавления НЕ показывается":"форма показывается")."

Мы получаем, что форма скрывается от всех зарегестрированных.
Вариант:
Код:
".opt($check='".listQuery("SELECT User_ID FROM Message68 WHERE User_ID=$AUTH_USER_ID LIMIT 1","$data[User_ID]")."',"")."

".opt_case($check,"форма добавления НЕ показывается","форма показывается")."

Работает аналогично, хотя по коду я вижу, что вроде адекватно запрос прописан. Естественно код компонента проставлен свой.
04.07.2012, 09:48
DiGGy
DiGGy
DiGGy

Зарегистрирован:
2005-04-04
Сообщений: 1546

Код:
".($db->get_var("SELECT User_ID FROM Message68 WHERE User_ID=$AUTH_USER_ID LIMIT 1")?"форма добавления НЕ показывается":"форма показывается")."


Temet nosce...
04.07.2012, 11:11
Евгений

Зарегистрирован:
2012-05-22
Сообщений: 31

Спасибо, вроде все верно теперь работает.
198 196 2012-07-04 11:11:38 12378
Описание проекта