Stworzyłem dziś stronę, która ma być moim małym prywatnym projektem. Polegać będzie ona na tym, iż użytkownicy będą zakładać konta i oprócz edycji profilu będzie tam także edycja "profilu" postaci w grze. Część formularza takiej edycji zrobiłem, gorzej jest z kilkoma polami, z którymi nie mogę sobie poradzić.
Adres strony: www.conquerpostac.lua.pl/polapostaci.php
Problemem jest pole "Umiejętności". Użyłem przy nim skryptu JS, który, po przyciśnięciu przycisku obok, dodaje poniżej takie samo pole. Jak się za to zabrać, jeśli będą to listy rozwijane, obok nich będą pola tekstowe, z czego każda linijka będzie jakby jedną "wartością" w bazie danych (nazwa umiejętności, poziom jej wytrenowania i procent ukończenia danego poziomu trenowania). Myślałem o tablicy, która do bazy wpisywałaby coś w stylu: {(nazwa1,poziom1,procent1),(nazwa2,poziom2,procent2),...}, a następnie (w innej podstronie) odczytywało by te wartości jako oddzielne umiejętności (każda składowa tablicy byłby jedną umiejętnością, np. w jednym miejscu wyświetlałoby
Kod
echo "$nazwa1 - poziom $poziom1, procent ukończenia: $procent1...";
i tak do każdej umiejętności). Poza tym nie wyobrażam sobie, aby po wysłaniu formularza, rozpoznawało pola (dodane przez przyciśnięcie przycisku dodającego pola) po parametrze name, który jest dla każdego taki sam (skill). Czy w takim razie skrypt JS powinien dodawać identyfikator za nazwą pola (np. skill1 dla pierwszego pola, skill2 dla drugiego,... - mówię tu o liście rozwijanej)? Czy w PHP nie ma takiego problemu i jakoś sobie poradzi?Proszę o pomoc w stworzeniu tego formularza (o uzupełnienie funkcji na podstawie tej pierwszej, "stałej" linijki w "Umiejętności" (umiejętności na liście będą wszędzie takie same). Proszę, aby w przypadku odwoływania się do bazy danych, pola w tabeli, do których będziecie się odwoływać, nazywały się tak samo jak "name" poszczególnych pól.
Kod pliku polapostaci.php:
Kod
<?php
require_once "maincore.php";
require_once "subheader.php";
require_once "side_left.php";
echo "<script type='text/javascript'>
<!--
function dodaj_element(kontener){
var znacznik = document.createElement('select');
znacznik.setAttribute('name', 'skill');
znacznik.className = 'textbox1';
var kontener = document.getElementById(kontener);
kontener.appendChild(znacznik);
}
//-->
</script>";
$result = dbquery("SELECT * FROM polapostaci WHERE user_id='$cookie_1'");
$postac = dbarray($result);
opentable('Postać');
echo "<form name='inputform' method='post' action='".FUSION_SELF."' enctype='multipart/form-data'>\n";
echo "<table align='center' cellpadding='0' cellspacing='0'>\n";
echo"<td class='tbl'>Nick postaci</span></td>
<td class='tbl'><input type='text' name='nick' value='".$postac['nick']."' maxlength='15' class='textbox' style='width:160px;'></td>
</tr>
<tr>
<td class='tbl'>Płeć</td>
<td class='tbl'><input type='radio' name='plec' value='1' ".($postac['plec'] == "1" ? " checked" : "").">Mężczyzna
<input type='radio' name='plec' value='0'".($postac['plec'] == "0" ? " checked" : "").">Kobieta</td>
</tr>
<tr>
<td class='tbl'>Poziom</td>
<td class='tbl'><input type='text' name='poziom' maxlength='3' value='".$postac['poziom']."' class='textbox' style='width:30px;'></td>
</tr>
<tr>
<td class='tbl'>Klasa</td>
<td class='tbl'><select class='textbox' name='klasa' style='width:200px;'>
<optgroup label='Trojan'>
<option>InternTrojan</option>
<option>Trojan</option>
<option>VeteranTrojan</option>
<option>TigerTrojan</option>
<option>DragonTrojan</option>
<option>TrojanMaster</option>
</optgroup>
<optgroup label='Warrior'>
<option>InternWarrior</option>
<option>Warrior</option>
<option>BrassWarrior</option>
<option>SilverWarrior</option>
<option>GoldWarrior</option>
<option>WarriorMaster</option>
</optgroup>
<optgroup label='Archer'>
<option>InternArcher</option>
<option>Archer</option>
<option>EagleArcher</option>
<option>TigerArcher</option>
<option>DragonArcher</option>
<option>ArcherMaster</option>
</optgroup>
<optgroup label='Taoist'>
<option>InternTaoist</option>
<option>Taoist</option>
</optgroup>
<optgroup label='FireTaoist'>
<option>FireTaoist</option>
<option>FireWizard</option>
<option>FireMaster</option>
<option>FireSaint</option>
</optgroup>
<optgroup label='WaterTaoist'>
<option>WaterTaoist</option>
<option>WaterWizard</option>
<option>WaterMaster</option>
<option>WaterSaint</option>
</select></td>
</tr>
<tr>
<td class='tbl'>Partner</td>
<td class='tbl'><input type='text' name='partner' value='".$postac['partner']."' maxlength='15' class='textbox' style='width:160px;'></td>
</tr>
<tr>
<td class='tbl'>Battle Power</td>
<td class='tbl'><input type='text' name='bp' value='".$postac['bp']."' maxlength='3' class='textbox' style='width:30px;'></td>
</tr>
<tr>
<td class='tbl'>Gildia</td>
<td class='tbl'><input type='text' name='gildia' value='".$postac['gildia']."' maxlength='15' class='textbox' style='width:160px;'></td>
</tr>
<tr colspan=2>
<td colspan=2><hr>
</td>
</tr>
<tr>
<td class='tbl'>Umiejętno¶ci</td>
<td class='tbl'>
<div id='pliki'>
<select name='skill' class='textbox'>
<option>Pierwsza</option>
<option>Druga</option>
<option>Trzecia</option>
</select> - Poziom: <input type='text' maxlength='1' name='skilllevel' value='".$postac['skilllevel1']."' class='textbox' style='width:13px;'>, <input type='text' maxlength='6' name='skillprocent1' value='".$postac['skillprocent1']."' class='textbox' style='width:40px;'>% <input type='button' value='+' onclick=dodaj_element('pliki'); />
</div>
</td>
</tr>
<tr>
<td colspan=2 align=center><br>
<input type='submit' name='update_profile' value='Wy¶lij' class='button'></td>
</tr>
</table>
</form>\n";
closetable();
require_once "side_right.php";
require_once "footer.php";
?>
require_once "maincore.php";
require_once "subheader.php";
require_once "side_left.php";
echo "<script type='text/javascript'>
<!--
function dodaj_element(kontener){
var znacznik = document.createElement('select');
znacznik.setAttribute('name', 'skill');
znacznik.className = 'textbox1';
var kontener = document.getElementById(kontener);
kontener.appendChild(znacznik);
}
//-->
</script>";
$result = dbquery("SELECT * FROM polapostaci WHERE user_id='$cookie_1'");
$postac = dbarray($result);
opentable('Postać');
echo "<form name='inputform' method='post' action='".FUSION_SELF."' enctype='multipart/form-data'>\n";
echo "<table align='center' cellpadding='0' cellspacing='0'>\n";
echo"<td class='tbl'>Nick postaci</span></td>
<td class='tbl'><input type='text' name='nick' value='".$postac['nick']."' maxlength='15' class='textbox' style='width:160px;'></td>
</tr>
<tr>
<td class='tbl'>Płeć</td>
<td class='tbl'><input type='radio' name='plec' value='1' ".($postac['plec'] == "1" ? " checked" : "").">Mężczyzna
<input type='radio' name='plec' value='0'".($postac['plec'] == "0" ? " checked" : "").">Kobieta</td>
</tr>
<tr>
<td class='tbl'>Poziom</td>
<td class='tbl'><input type='text' name='poziom' maxlength='3' value='".$postac['poziom']."' class='textbox' style='width:30px;'></td>
</tr>
<tr>
<td class='tbl'>Klasa</td>
<td class='tbl'><select class='textbox' name='klasa' style='width:200px;'>
<optgroup label='Trojan'>
<option>InternTrojan</option>
<option>Trojan</option>
<option>VeteranTrojan</option>
<option>TigerTrojan</option>
<option>DragonTrojan</option>
<option>TrojanMaster</option>
</optgroup>
<optgroup label='Warrior'>
<option>InternWarrior</option>
<option>Warrior</option>
<option>BrassWarrior</option>
<option>SilverWarrior</option>
<option>GoldWarrior</option>
<option>WarriorMaster</option>
</optgroup>
<optgroup label='Archer'>
<option>InternArcher</option>
<option>Archer</option>
<option>EagleArcher</option>
<option>TigerArcher</option>
<option>DragonArcher</option>
<option>ArcherMaster</option>
</optgroup>
<optgroup label='Taoist'>
<option>InternTaoist</option>
<option>Taoist</option>
</optgroup>
<optgroup label='FireTaoist'>
<option>FireTaoist</option>
<option>FireWizard</option>
<option>FireMaster</option>
<option>FireSaint</option>
</optgroup>
<optgroup label='WaterTaoist'>
<option>WaterTaoist</option>
<option>WaterWizard</option>
<option>WaterMaster</option>
<option>WaterSaint</option>
</select></td>
</tr>
<tr>
<td class='tbl'>Partner</td>
<td class='tbl'><input type='text' name='partner' value='".$postac['partner']."' maxlength='15' class='textbox' style='width:160px;'></td>
</tr>
<tr>
<td class='tbl'>Battle Power</td>
<td class='tbl'><input type='text' name='bp' value='".$postac['bp']."' maxlength='3' class='textbox' style='width:30px;'></td>
</tr>
<tr>
<td class='tbl'>Gildia</td>
<td class='tbl'><input type='text' name='gildia' value='".$postac['gildia']."' maxlength='15' class='textbox' style='width:160px;'></td>
</tr>
<tr colspan=2>
<td colspan=2><hr>
</td>
</tr>
<tr>
<td class='tbl'>Umiejętno¶ci</td>
<td class='tbl'>
<div id='pliki'>
<select name='skill' class='textbox'>
<option>Pierwsza</option>
<option>Druga</option>
<option>Trzecia</option>
</select> - Poziom: <input type='text' maxlength='1' name='skilllevel' value='".$postac['skilllevel1']."' class='textbox' style='width:13px;'>, <input type='text' maxlength='6' name='skillprocent1' value='".$postac['skillprocent1']."' class='textbox' style='width:40px;'>% <input type='button' value='+' onclick=dodaj_element('pliki'); />
</div>
</td>
</tr>
<tr>
<td colspan=2 align=center><br>
<input type='submit' name='update_profile' value='Wy¶lij' class='button'></td>
</tr>
</table>
</form>\n";
closetable();
require_once "side_right.php";
require_once "footer.php";
?>
PS: Używam PHP-Fusion w wersji 6.01.15. Zapytałem się o to na forum PF, jednak nikt nie odpowiedział.