PDA

View Full Version : Как в модуль Files добавить 5 полей ввода данных типа...


XersoNuke2005
06.11.2006, 11:10
Здравствуйте Уважаемые!

Вопрос: Как в модуль 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
Затем в функции записи добавляем эти переменные (тоже см. как сделано 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
в админ файле (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:
Удачи в работе!