Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Динамические данные на странице


Автор: Strafer 29.1.2010, 16:29
День добрый подскажите как правильно расположить. Проблема следующая

На странице в меню есть пунк "администрирование". Выглядит он так
Код

<FORM action="<?php $_SERVER['PHP_SELF']?>" method="POST" enctype="multipart/form-data">
<?php
    $op = $_POST['op'];
    switch ($op):
    case "useradd":
        useradd();
        break;
    default:
        adminmenu();
    endswitch;
?>
<INPUT type="submit" name="send" value="Отправить">
</FORM>

Тобишь по умолчанию я вижу следующее
Код

function adminmenu()
{
echo "<INPUT type=\"radio\" name=\"op\" value=\"useradd\">Создание пользователя<br>";
echo "<INPUT type=\"radio\" name=\"op\" value=\"chngpasswd\">Смена пороля пользователя<br>";
echo "<INPUT type=\"radio\" name=\"op\" value=\"chnglogin\">Смена логина пользователя<br>";
echo "<INPUT type=\"radio\" name=\"op\" value=\"chngfio\">Смена ФИО пользователя<br>";
}

в случае выбора первого пункта меню нажимаю Отправить
выводит следующее
Код

function useradd()
{
echo "Введите логин<INPUT type=\"text\" name=\"login\" size=\"20\"><br>";
echo "Введите пароль<INPUT type=\"password\" name=\"passwd\"><br>";
echo "Пароль еще раз<INPUT type=\"password\" name=\"passwd1\"><br>";
echo "Введите ФИО<INPUT type=\"text\" name=\"fio\"><br>";
}

далее когда заполняю поля мне надо создать пользователя в БД и вернутся на выбор действий. Возврат на первое меню происходит, но как видно пользователь не создаётся. Вопрос куда вставить код добавления пользователя?
Код имеет следующий сокращённый вид(проверки различные из него выброшены)
Код

$login = $_POST['login'];
$paswd = $_POST['passwd'];
$fio = $_POST['fio'];
$stmt = "INSERT INTO users (LOGIN, PASSWD, FULLNAME, BLOCKED, ADMINS) VALUES ('$login', '$passwd', '$fio', 0, 0)";


Автор: s0lman 29.1.2010, 16:57
Цитата(Strafer @  29.1.2010,  16:29 Найти цитируемый пост)
куда вставить код добавления пользователя?

Он должен быть в скрипте-обработчике фомы. В данном случае это 
Цитата(Strafer @  29.1.2010,  16:29 Найти цитируемый пост)
$_SERVER['PHP_SELF']

то есть данные обрабатываются в этом же скрипте.


Цитата(Strafer @  29.1.2010,  16:29 Найти цитируемый пост)
function useradd()
{
echo "Введите логин<INPUT type=\"text\" name=\"login\" size=\"20\"><br>";
echo "Введите пароль<INPUT type=\"password\" name=\"passwd\"><br>";
echo "Пароль еще раз<INPUT type=\"password\" name=\"passwd1\"><br>";
echo "Введите ФИО<INPUT type=\"text\" name=\"fio\"><br>";
}

если припустить, что ниже идет строка
Код

<input type="submit" name="user_add" />

то вполне подойдет конструкция 
Код

if(isset($_POST['user_add']))
{
    $login = $_POST['login'];
    $paswd = $_POST['passwd'];
    $fio = $_POST['fio'];
    $stmt = "INSERT INTO users (LOGIN, PASSWD, FULLNAME, BLOCKED, ADMINS) VALUES ('$login', '$passwd', '$fio', 0, 0)";
}

Автор: Ипатьев 29.1.2010, 17:09
а зачем такой странный радиобаттон?
почему нельзя просто вывести форму с параметрами пользователя, и просто отредактировать пароль или фио?
причем форма будет та же самая, что и для добавления.

и я не вижу в коде корректного искейпинга данных для SQL запроса.

Автор: Strafer 1.2.2010, 09:33
s0lman, спасибо за подсказку я сделал. Просто обработку ставил не там(надо было до switch, а внутри ) И во внутрь функций рисующих меню подобавлял каждой по sabmit, вместо одного внешнего. 

Автор: Ипатьев 1.2.2010, 09:47
Цитата(Strafer @  1.2.2010,  09:33 Найти цитируемый пост)
как определить что выполняется создание юзера или редактирование полей?

одно скрытое поле в форме решит все проблемы.
Цитата(Strafer @  1.2.2010,  09:33 Найти цитируемый пост)
Как узнать что нужно сменить

А зачем узнавать? Почему бы просто не обновить все поля? Зачем юзера грузить кучей вопросов и увсе редактировать по одному кусочку, если можно ему вывести просто форму, и пусть редактирует, что хочет?
Почему бы не посмотреть, как сделаны другие сайты, перед тем, как начинать учиться делать свой?
Я представляю, как выглядело бы редактирование профайла на этом форуме по такой схеме.

 


Автор: Strafer 1.2.2010, 10:22
Я не пишу свой сайт, всего лишь помогаю человеку. Для меня пока что сложновато написать нечто подобное тому как сделано на форумах и сайтах по поводу редактирования профиля. Потому как сделать форму и отправить в БД легко, а потом восстановить из БД все заполненые данные чтобы потом пользователь их изменил - это уже сложнее. Хотя если построить схему как это должно быть, думаю можно попробывать.

Автор: Ипатьев 1.2.2010, 10:44
Я думаю, надо сразу учиться делать правильно.
Тем более, что все форумы и сайты делаются из одинаковых кирпичиков - простых действий. Просто в этом форуме их больше. Но сами по себе формы и их обработка здесь такие же, как везде.

В чем сложность "восстановить" данные из БД? Это ведь, по сути, обычный вывод данных. Используется на любой странице по 10 раз. 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)