Forum. MyNuke.ru

Forum. MyNuke.ru (http://forum.mynuke.ru/index.php)
-   Модули (http://forum.mynuke.ru/forumdisplay.php?f=17)
-   -   Как в модуль Files добавить 5 полей ввода данных типа... (http://forum.mynuke.ru/showthread.php?t=2379)

XersoNuke2005 06.11.2006 11:10

Как в модуль Files добавить 5 полей ввода данных типа...
 
Здравствуйте Уважаемые!

Вопрос: Как в модуль Files добавить 5 полей ввода данных типа...

1) Тип Лицензии:
2) Язык интерфейса:
3) Oc 1 // Тип операционной системы
4) Ос 2
5) Ос 3

И как результат - добавить в базу соответствующие таблицы!

З.Ы. Имхо! Модуль Files станет более информативным!

Огромная просьба к Вам Много Уважаемые - Если гуру в ентой теме, дать ответ по конкретнее!

Alexander-V-Sh 06.11.2006 11:46

Открываем модуль и таблицу в БД.
Находим в БД
title varchar(100)
(можно поставить 255, думаю больше для этих полей и ненужно).
По аналогии делаем 5 полей в БД
lic varchar(255) NOT NULL default '',
lang varchar(255) NOT NULL default '',
oc1 varchar(255) NOT NULL default '',
oc2 varchar(255) NOT NULL default '',
oc3 varchar(255) NOT NULL default '',

затем открываем админку и тоже по аналогии с title делаем эти поля в функциях редактирования и создания (добавляем поля ввода для текста и присваиваем вводимые данные переменной).
Затем в функции записи добавляем эти переменные (тоже см. как сделано title).
После того как админка сделана, проверяем запись. Если все записывается и читается, то 90% уже сделано.
Открываем сам модуль, выводим значения из базы и работаем с ними как нам угодно.

P. S. Вот только непонятно зачем делать 3 поля под ОС. Можно просто сделать цифирки, а в коле уже приравнять их к определенной системе. 1 - Линукс, 2 - Виндовс ХР, 3 - Макинтошь, 4 - и т.д.
Т.е в БД пойдет в запись цифра, а при выводе информации она будет равна нужной ОС.

XersoNuke2005 06.11.2006 13:30

Спасибо за ответ!

Три поля нужны для того:

1) Win9x/Me
2) Win2k/NT
3) WinXP

Не всё же пишется для XP!

P.S. На счёт заходим в админку т.е в Модуле Files папка Admin в ней Admin.php ?

Alexander-V-Sh 06.11.2006 13:41

угу, она самая, Admin.php

Понятно что, не все для ХР. зачем для каждого названия делать свое поле? Какая необходимость, это же текстовые данные.
Делаем одно поле -
`OC` int(1) NOT NULL default '0',

пишим туда цифирки (чтобы вручную каждый раз не писать Win9x/Me и др.
затем (если вы четко определились что у вас и как будет, присваиваем каждой цифре свою сисетму).
Зашивание данных в код не совсем правильно, но иногда это самый простой вариант.

Т.е. прописываем потом значение системы:
Если в БД значение 1 - то Win9x/Me
если значение 2 - то Win2k/NT
иначе будет ХР.

XersoNuke2005 06.11.2006 14:33

А возможно сделать не поля ввода типа ОС а выпадающий список с возможными вариантами!

Если можно то по возможности маленький пример кода для admin.php - я не силён программировании но с грамотной подсказкой - без проблем сотворю!

Alie 06.11.2006 16:44

Можно и так, в БД есть только два вида ввода данных: обычный и мульти, в вашем случае хоть выпадающее меню, хоть текстовое поле, хоть цифра - принцип ввода тот-же (обычный), так что можете смело переделывать.
Пример:
Код:
<select> <option name='os' value='$winxp'>WinXP</option> <option name='os' value='$winnt'>Win2k/NT</option> <option name='os' value='$winme'>Win9x/Me</option> </select>

XersoNuke2005 06.11.2006 18:47

Цитата: Сообщение от Alexander-V-Sh
Затем в функции записи добавляем эти переменные (тоже см. как сделано title).
После того как админка сделана, проверяем запись. Если все записывается и читается, то 90% уже сделано.


А если после добавления файла данные не записываются - что и где надо проверить!

Alexander-V-Sh 06.11.2006 19:05

в админ файле (admin.php), проверяем и перепроверяем запись.

в саму таблицу то поля добавили?.

если последовательность записи не совпадет с полями в бд, то записываться не будет, или будет неверно.

Alie 06.11.2006 19:13

Проблема точно в записи, а не в выводе? Преверьте первым делом добавляются-ли новые поля в phpMyAdmin.
Если нет - ошибка в коде функции обработчика, или в функции не указаны поля ввода. Если оператором switch пользуетесь - возможно в case поля ввода не прописали.
_______________

2 Alexander-V-Sh: Быстрее меня нацарапал :smile:

XersoNuke2005 06.11.2006 20:25

Цитата: Сообщение от Alexander-V-Sh
в админ файле (admin.php), проверяем и перепроверяем запись.

в саму таблицу то поля добавили?.

если последовательность записи не совпадет с полями в бд, то записываться не будет, или будет неверно.


В бд всё добавил - и phpMyAdmin ручками в поля вписываю и в сё отображается окей
значит с чтением из БД всё норма!

В case прописал:
switch ($op) {

case "file_save":
file_save($title, $lic, $lang, $oc, $description, $cid, $filelink, $author, $authormail, $authorurl, $version, $filesize);
break;

case "file_edit_save":
file_edit_save($lid, $title, $lic, $lang, $oc, $description, $cid, $filelink, $author, $authormail, $authorurl, $version, $filesize);
break;

}

Сам Admin.php к к посту не прикрючивается, можно как то его вам для редактирования выслать?

XersoNuke2005 07.11.2006 01:20

Спасибо огромное! всё разобрался! с дури понаписал куды не поподя а надо было только в три функции всё прописать да и про case не забыть!


case "file_save":
file_save($title, $lic, $lang, $oc, $description, $cid, $filelink, $author, $authormail, $authorurl, $version, $filesize);
break;

case "file_edit_save":
file_edit_save($lid, $title, $lic, $lang, $oc, $description, $cid, $filelink, $author, $authormail, $authorurl, $version, $filesize);
break;

case "file_add_save":
file_add_save($lid, $title, $lic, $lang, $oc, $description, $cid, $filelink, $author, $authormail, $authorurl, $version, $filesize);
break;

Всё пишет и читает из БД! Ещё раз Респект вам! Alexander-V-Sh, Alie!

XersoNuke2005 07.11.2006 11:26

Если вставляю текстовое поле - то всё окей в БД пишется и читается!

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

Пример: ."<b>"._FILEVEROS."</b><br><select>
<option name='oc' value='$f_oc'></option></br></select>

Сам список пашет но в БД не пишет!

Alie 07.11.2006 13:27

показывайте вашу форму...

XersoNuke2005 07.11.2006 15:32

function edit_files($lid) {
global $prefix, $db;

$sql = "SELECT cid, title, lic, lang, oc, description, url, filesize, version, name, email, homepage, status FROM ".$prefix."_files WHERE lid='$lid'";
$result = $db->sql_query($sql);
$row = $db->sql_fetchrow($result);
$f_cid = $row[cid];
$f_title = $row[title];
$f_lic = $row[lic];
$f_lang = $row[lang];
$f_oc = $row[oc];
$f_description = $row[description];
$f_url = $row[url];
$f_filesize = $row[filesize];
$f_version = $row[version];
$f_name = $row[name];
$f_email = $row[email];
$f_homepage = $row[homepage];
$f_status = $row[status];
include("header.php");
GraphicAdmin();
OpenTable();
echo "<center><b>"._FILESADMIN."</b></center>\n";
CloseTable();
echo "<br>";
OpenTable();
echo "<center><b>"._FILEEDIT."</b></center><br><br>"
."<form action=\"admin.php\" method=\"post\">"
."<b>"._TITLE.":</b><br><input type=\"text\" name=\"title\" size=\"50\" value=\"$f_title\"><br><br>"
."<b>"._CATEGORY.":</b><br>"
."<select name=\"cid\"><option value=\"0\">"._HOMEFILES."</option>";
$sql = "select cid, title, parentid from ".$prefix."_files_categories order by parentid,title";
$result = $db->sql_query($sql);
while ($row = $db->sql_fetchrow($result)) {
$cid2 = $row[cid];
$title = $row[title];
$parentid2 = $row[parentid];
if ($parentid2!=0) $title=getparent($parentid2,$title);
if ($cid2 == $f_cid) {
$shel = "selected";
}
echo "<option value=\"$cid2\" $shel>$title</option>";
}
echo "</select><br><br>";
echo "<b>"._SUBTITLE.":</b><br>"
."<textarea name=\"description\" cols=\"50\" rows=\"10\">$f_description</textarea><br><br>"
."<b>"._FILEAUTOR."</b><br><input type=\"text\" name=\"author\" size=\"50\" value=\"$f_name\"><br><br>"
."<b>"._FAUEMAIL."</b><br><input type=\"text\" name=\"authormail\" size=\"50\" value=\"$f_email\"><br><br>"
."<b>"._FAUURL."</b><br><input type=\"text\" name=\"authorurl\" size=\"50\" value=\"$f_homepage\"><br><br>"
."<b>"._FILELINK.":</b><br><input type=\"text\" name=\"filelink\" size=\"50\" value=\"$f_url\"> [ <a href=\"$f_url\" target=\"_blank\">"._TESTLINK."</a> ]<br><br>"
."<b>"._FILEVERSION."</b><br><input type=\"text\" name=\"version\" size=\"10\" value=\"$f_version\"><br><br>"
."<b>"._FILEVEROS."</b><br><select>
<option name='oc' value='$f_oc'></option>
<option name='oc' value='$f_oc'>Win2k/NT</option>
<option name='oc' value='$f_oc'>Win9x/Me</option>
<option name='oc' value='$f_oc'>Linux</option>
<option name='oc' value='$f_oc'>MacOS</option>
<option name='oc' value='$f_oc'>FreeBSD</option>
<option name='oc' value='$f_oc'>Win9x/Me/2k/NT/XP</option>
</select><br><br>" // Поле для ввода "Лицензия"
."<b>"._FILELISENSE."</b><br><select>
<option name='lic' value='$f_lic'></option>
<option name='lic' value='$f_lic'>Freeware</option>
<option name='lic' value='$f_lic'>FreeSoftware</option>
<option name='lic' value='$f_lic'>Shareware</option>
<option name='lic' value='$f_lic'>Trialware</option>
<option name='lic' value='$f_lic'>Commercialware</option>
</select><br><br>" // Поле для ввода "Язык"
."<b>"._FILELANG."</b><br><select>
<option name='lang' value='$f_lang'></option>
<option name='lang' value='$f_lang'>Русский</option>
<option name='lang' value='$f_lang'>Английский</option>
<option name='lang' value='$f_lang'>Мультиязычный</option>
</select><br><br>"
//."<b>"._FILELISENSE."</b><br><input type=\"text\" name=\"lic\" size=\"10\" value=\"$f_lic\"><br><br>"
//."<b>"._FILELANG."</b><br><input type=\"text\" name=\"lang\" size=\"10\" value=\"$f_lang\"><br><br>"
//."<b>"._FILEVEROS."</b><br><input type=\"text\" name=\"oc\" size=\"10\" value=\"$f_oc\"><br><br>"
."<b>"._FILESIZE.":</b><br><input type=\"text\" name=\"filesize\" size=\"10\" value=\"$f_filesize\"><br><br>"
."<input type=\"hidden\" name=\"lid\" value=\"$lid\">"
."<input type=\"hidden\" name=\"op\" value=\"file_edit_save\">"
."<input type=\"submit\" value=\""._SAVEFILEED."\">"
."</form>";
CloseTable();
echo "<br>";
include("footer.php");
}

Alie 07.11.2006 16:13

Исправляйте:
Код:
."<b>"._FILEVEROS."</b><br><select> <option name='oc' value='$f_oc'></option> <option name='oc' value='$f_oc'>Win2k/NT</option> <option name='oc' value='$f_oc'>Win9x/Me</option> <option name='oc' value='$f_oc'>Linux</option> <option name='oc' value='$f_oc'>MacOS</option> <option name='oc' value='$f_oc'>FreeBSD</option> <option name='oc' value='$f_oc'>Win9x/Me/2k/NT/XP</option> </select><br><br>" // Поле для ввода "Лицензия"

На:
Код:
."<b>"._FILEVEROS."</b><br> <select name='oc'> <option value='-'></option> <option value='Win2k/NT'>Win2k/NT</option> <option value='Win9x/Me'>Win9x/Me</option> <option value='Linux'>Linux</option> <option value='MacOS'>MacOS</option> <option value='FreeBSD'>FreeBSD</option> <option value='Win9x/Me/2k/NT/XP'>Win9x/Me/2k/NT/XP</option> </select><br><br>" // Поле для ввода "Лицензия"

Ниже находим:
Код:
."<b>"._FILELISENSE."</b><br><select> <option name='lic' value='$f_lic'></option> <option name='lic' value='$f_lic'>Freeware</option> <option name='lic' value='$f_lic'>FreeSoftware</option> <option name='lic' value='$f_lic'>Shareware</option> <option name='lic' value='$f_lic'>Trialware</option> <option name='lic' value='$f_lic'>Commercialware</option> </select><br><br>" // Поле для ввода "Язык"

Исправляем:
Код:
."<b>"._FILELISENSE."</b><br> <select name='lic'> <option value='-'></option> <option value='Freeware'>Freeware</option> <option value='FreeSoftware'>FreeSoftware</option> <option value='Shareware'>Shareware</option> <option value='Trialware'>Trialware</option> <option value='Commercialware'>Commercialware</option> </select><br><br>" // Поле для ввода "Язык"

Идём ниже:
Код:
."<b>"._FILELANG."</b><br><select> <option name='lang' value='$f_lang'></option> <option name='lang' value='$f_lang'>Русский</option> <option name='lang' value='$f_lang'>Английский</option> <option name='lang' value='$f_lang'>Мультиязычный</option> </select><br><br>"

Исправляем на:
Код:
."<b>"._FILELANG."</b><br> <select name='lang'> <option value='-'></option> <option value='Русский'>Русский</option> <option value='Английский'>Английский</option> <option value='Мультиязычный'>Мультиязычный</option> </select><br><br>"

______________________________

Я пример не прокоментировала, да ещё и с переменными... :jump:
В исправлении я думаю всё чётко видно, но всё-же прокоментирую на будущее:
Код:
//Начало выпадающего списка. Определяем имя всем опциям. Для указания мультивыбора приписываем multiple и скобки: //<select name='lang[]' multiple> <select name='lang[]'> //Определяем опцию <option value='То, что будет заносится в БД'>Так будет называтся опция в броузере</option> //Закрываем выпадающий список </select>

_____________________________

P.S. Один момент: в следующий раз когда будете вставлять любой код, вставляйте его в тэг CODE. Правила форума :wink:
Заодно желательно свои предыдущие посты поправить, пока админ. не увидел :smile:
Удачи в работе!


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

Copyright © 2005 by Soniks