Forum. MyNuke.ru
Forum. MyNuke.ruСообщения за сегодняПерсональные сообщения

Навигация  
Вернуться   Forum. MyNuke.ru > PHP-NUKE > Установка Модулей
Ник
Пароль
Ответ
 
Опции темы Поиск в этой теме Опции просмотра
Alie вне форума      Старый правильное обращение к бд или недоделаный модуль #1  
Alie
Участник+
Регистрация: 20.03.2006
Сообщения: 153


Пожаловаться на это сообщениеОтветить с цитированием

Посмотреть профиль Отправить персональное сообщение для Alie Найти все сообщения от Alie Добавить Alie в список друзей  
29.08.2006, 04:10

Решила прописать свой модуль. В нём одна из частей (switch) представляет собой бланк для заказа услуг.
Ребята, у меня такой вопрос:
с самим модулем я разобралась, а вот как правильно загнать информацию в ДБ и отобразить её на другой странице?
Заодно подскажите какую таблицу нужно создать в MySQL
Необходимая информация -
Имя (простое поле ввода), мыло (простое поле ввода), исполнитель заказа (выбрать с помощью checkbox одного из трёх), суть заказа (подробное описание в textarea).

Всю страницу писать не буду, выставлю только необходимый switch пункт (если потребуется вся страница - сообщите и я выставлю здесь-же):

Код:
function send (){ echo "<br>"; OpenTable(); echo" <form method=\"post\" action=\"\"> <table border=0 width=80% cellpadding=8> <tr> <td><b>Ваше имя:</b></td> <td align=left> <input type=text name=\"orderfrom\" maxlength=20> </td> </tr> <tr> <td><b>E-Mail:</b></td> <td align=left> <input type=text name=\"EMail\" maxlength=80> </td> </tr> <tr> <td><b>Выберите мастера:</b></td> <td> <input type=checkbox name=\"orderto\" value=\"master_fir\" />Мастер 1 <br /> <input type=checkbox name=\"orderto\" value=\"master_sec\" />Мастер 2 <br /> <input type=checkbox name=\"orderto\" value=\"master_thi\" />Мастер 3 эффектов Хельги <br /> </td> </tr> <tr> <td><b>Тип заказа:</b></td> <td><input type=checkbox name=\"ordertype\" value=\"coat\" />Услуга 1 <br /> <input type=checkbox name=\"ordertype\" value=\"portreit\" />Услуга 2 <br /> <input type=checkbox name=\"ordertype\" value=\"avatar\" />Услуга 3 <br /> <input type=checkbox name=\"ordertype\" value=\"user\" />Услуга 4 <br /> </td> </tr> <tr> <td><b>Описание работы:</b></td> <td> <textarea cols=\"50\" rows=\"8\" name=\"ordertext\"> </textarea> </td> </tr> <tr> <td colspan=2> <input type=radio value=\"Accept_rules\" name=\"rules\"> - С правилами согласен.<p> <input type=radio checked value=\"Ignore_Rules\" name=\"rules\"> - С правилами не согласен. </td> </tr> <tr> <td> <div align=\"right\"><input type=submit value=\"Заказать\"></div> </td> <td> <div align=\"left\"><input type=\"reset\" name=\"reset\" value=\"Сброс\"></div> </td> </tr> </table> </form> </b></center><br>"; CloseTable(); echo "<br>"; }


Может я чего не дописала, забыла - укажите на ошибки плз.
Заранее огромное спасибо всем, кто откликнется

Последний раз редактировалось Alie, 29.08.2006 в 04:17.

Soniks вне форума      Старый #2  
Soniks
Администратор
Регистрация: 16.01.2005
Сообщения: 4,814


Пожаловаться на это сообщениеОтветить с цитированием

Посмотреть профиль Отправить персональное сообщение для Soniks Посетить домашнюю страницу Soniks Найти все сообщения от Soniks Добавить Soniks в список друзей  
31.08.2006, 13:06

Alie делайте по аналогии с каким нибудь другим модулем
т.е. должена быть обработ ка данных поступаемых через POST и запись в БД:

PHP код:
 $db->sql_query("INSERT INTO ".$prefix."_order (id, name, email, type, master, order) VALUES(NULL, '"$_POST['orderfrom']."', '"$_POST['EMail']."', '"$_POST['ordertype']."',  "$_POST['orderto']."', '"$_POST['ordertext']."')"); 

соответственно нужно создать таблицу в БД, например так:
Код:
CREATE TABLE nuke_order ( `id` INT( 10 ) NOT NULL AUTO_INCREMENT , `name` VARCHAR( 250 ) NOT NULL , `email` VARCHAR( 250 ) NOT NULL , `type` VARCHAR( 250 ) NOT NULL , `master` VARCHAR( 250 ) NOT NULL , `order` TEXT NOT NULL , PRIMARY KEY ( `id` ) );
 
"Если бы вам удалось надавать под зад человеку, виноватому в большинстве ваших неприятностей - вы бы неделю не смогли сидеть".


Alie вне форума      Старый #3  
Alie
Участник+
Регистрация: 20.03.2006
Сообщения: 153


Пожаловаться на это сообщениеОтветить с цитированием

Посмотреть профиль Отправить персональное сообщение для Alie Найти все сообщения от Alie Добавить Alie в список друзей  
04.09.2006, 19:49

Большое спасибо за ответ!
Ещё парочка мелких вопросов по этому поводу: первым делом - "id" - что это? Как я понимаю - это номер. Только вот чего?
Второй вопрос: какой строкой я вывожу данные из БД?

Код:
$result=mysql_query("SELECT orderfrom,ordermail,orderto,ordertype,ordertext FROM ".$prefix."_ordering"); while ($row=mysql_fetch_row($result)) echo " &row[0,1,2,3,4]";

Правильный-ли это способ, может есть получше?

Третий вопрос: как обезопасить поля ввода от инъекций? Что именно мне нужно прописать?

Все эти вопросы я задаю чтоб понять как ПРАВИЛЬНО и НАИЛУЧШИМ образом писать модули. Если вы сможете привести в качестве примера одну строку со всеми возможностями:
ввод данных в MySQL, вывод данных, создание админки для данных.

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

Я понимаю что последний вариант слишком "напрягает", но всё-же, если у кого-нибудь из желающих дойдут руки - буду только рада. Коментарии в файлах так-же приветствуются: чем больше - тем лучше.
Такой примерчик кстати неплохо поместить в вашу школу будет.

Заранее спасибо за ответ!

Alexander-V-Sh вне форума      Старый #4  
Аватара для Alexander-V-Sh
Alexander-V-Sh
Бывалый
Регистрация: 19.04.2006
Сообщения: 352


Пожаловаться на это сообщениеОтветить с цитированием

Посмотреть профиль Отправить персональное сообщение для Alexander-V-Sh Посетить домашнюю страницу Alexander-V-Sh Найти все сообщения от Alexander-V-Sh Добавить Alexander-V-Sh в список друзей  
04.09.2006, 22:46

Alie
id - номер записи, ставится автоматически.
Првильный способ:
PHP код:
 $result $db->sql_query("SELECT orderfrom,ordermail,orderto,ordertype,ordertext FROM ".$prefix."_ordering");
while (
$row $db->sql_fetchrow($result)) { 
$orderfrom filter($row['orderfrom']); //назначение переменным данных их БД
---и т.д все строки из базы
echo "$orderfrom";


Для безопастности использовать фильтры.
Для цифр
$id = intval($id);
Для данных без хтмл
$title = filter($title, "nohtml");
Для данных с хтмл
$title = filter($title);

Например если ты делаешь запрос в базу:
$result = $db->sql_query("SELECT orderfrom,ordermail,orderto,ordertype,ordertext FROM ".$prefix."__ordering WHERE id='$id'");
А переменная $id - цифра, то и определить ее нужно как цифру перед этим: $id = intval($id);
Обязательно фильтровать все пользовательские вводимые данные, которые записываются в БД (да и вообще все переменные, которые пишутся в базу и выводяться). Чтобы вместо текста простого не вписали что то нехорошее :)
А так же прочитай про безопастность.

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

Последний раз редактировалось Alexander-V-Sh, 04.09.2006 в 22:49.

Alie вне форума      Старый #5  
Alie
Участник+
Регистрация: 20.03.2006
Сообщения: 153


Пожаловаться на это сообщениеОтветить с цитированием

Посмотреть профиль Отправить персональное сообщение для Alie Найти все сообщения от Alie Добавить Alie в список друзей  
05.09.2006, 02:03

2 Alexander-V-Sh: первым делом - спасибо за оперативность и за подсказку.

Просьба подготовить столь специфический модуль у меня зародилась тогда, когда я собственноручно пыталась разобратся с каким-то файлом нюки. Возьмём простой пример: для того, чтоб полностью понять суть того-же запроса к БД, о котором говорилось выше, нужно предварительно "очистить" файл от огромного количества "шелухи" (графика, ненужные нам функции и т.п.). Лично я, работая по приведённому мной в пример методу - допускаю ошибки при написании и\или удалении кода, что приводит к полному отключению модуля. Причём причину мы сможем понять только предварительно обнаружив опечатку. В противном случае, вполне вероятно, что опечатка будет принята за неправильно описаную функцию.
Кому я это обьясняю? Вы и так всё прекрасно понимаете ведь тоже когда-то начинали "с нуля"...

Если выставите файл - укажите на форуме в какую категорию он будет залит...

Последний раз редактировалось Alie, 05.09.2006 в 02:05.

Ответ


Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с модулем "FeedBack" BFG Модули 10 07.03.2013 12:53
проблема с модулем рецензии veland Настройка и Изменение 9 26.04.2008 12:48
робот не находит ссылку на свой сайт!, проблема с модулем sharez Разное 6 17.04.2006 03:56
Проблема с модулем News Andruha Настройка и Изменение 4 29.09.2005 14:03
Проблема с модулем погоды World Weather V3.0 Mihanich Установка Модулей 10 24.08.2005 14:09


Часовой пояс GMT +4, время: 00:56.


На Верх
Рейтинг@Mail.ru