|
|
|
| Здравствуйте,пытаюсь сделать скрипт который бы дублировал "N-ое" количество раз блок определенных html полей, в форме без перегрузки страницы т.е. методом javascript, но с моими скудными познаниями в javascript, ничего не получается, помогите пожалуйста это реализовать, привожу часть формы которую необходимо дублировать:
<? Error_Reporting(E_ALL & ~E_NOTICE);
require_once("config.php");
$companys = array();
$company_mysql = @mysql_query("SELECT id_sobstvennik AS ID, sobstvennik AS NAME FROM sobstvennik");
while( $elem = @mysql_fetch_assoc( $company_mysql ) ){
$companys[] = $elem;
}
?>
<!-- Номер вагона ------------------------------------------------------------------------------------->
<fieldset>
<legend style="font-weight: bold">Описание подвижного состава</legend>
<table>
<script>
function IIselectCategory()
{
var cat = document.getElementById("nomer_vagon").value;
if(cat == -1)
{document.getElementById("hiddenFieldIII").style.display = "";}
else {document.getElementById("hiddenFieldIII").style.display = "none";}
}
</script>
<tr><td>Номер вагона:</td>
<td><select name="nomer_vagon" value="<?php echo htmlspecialchars($nomer_vagon); ?>" onchange="IIselectCategory()">
<option value=""></option>
<?
$get_list = @mysql_query("SELECT id_vagon, nomer_vagon FROM vagon");
while ($elem = @mysql_fetch_array($get_list)){
if($nomer_vagon==$elem['id_vagon']) $temp = "selected";
else $temp = "";
echo "<option value='$elem[id_vagon]' $temp>".$elem['nomer_vagon'];
}
?>
<option value="-1">Другой</option>
</select>
<input type="text" name="nomer_vagon1" value="" id="hiddenFieldIII" style="display:none;"></td></tr>
<!-- Род вагона -------------------------------------------------------------------------------------->
<tr><td>Род вагона:</td>
<td><select name="rod_vagona" value="<?php echo htmlspecialchars($rod_vagona); ?>">
<option value=""></option>
<?
$get_list = @mysql_query("SELECT id_rod_vagona, rod_vagona FROM rod_vagona");
while ($elem = @mysql_fetch_array($get_list)){
if($rod_vagona==$elem['id_rod_vagona']) $temp = "selected";
else $temp = "";
echo "<option value='$elem[id_rod_vagona]' $temp>".$elem['rod_vagona'];
}
?>
</select>
</td></tr>
<!-- Собственник вагона ------------------------------------------------------------------------------>
<script>
function IVselectCategory()
{
var cat = document.getElementById("sobstvennik").value;
if(cat == -1)
{document.getElementById("hiddenFieldV").style.display = "";}
else {document.getElementById("hiddenFieldV").style.display = "none";}
}
</script>
<tr><td>Собственник вагона:</td>
<td><select name="sobstvennik" value="<?php echo htmlspecialchars($sobstvennik); ?>" onchange="IVselectCategory()">
<option value=""></option>
<?
foreach( $companys as $company ){
if( $sobstvennik==$company[ID] ){
$temp = "selected";
} else {
$temp = "";
}
echo "<option value='$company[ID]' $temp>".$company['NAME'].'</option>';
}
?>
<option value="-1">Другой</option>
</select>
<input type="text" name="sobstvennik1" value="" id="hiddenFieldV" style="display:none;">
</td></tr></table></fieldset>
|
Я конечно понимаю, что подобные темы не раз поднимались на форуме, но просмотрев их, я понял, что у меня несколько сложней ситуация, и своими силами мне не разобраться, дело в том, что как видно из кода, необходимо дублирование 4 списков, причем все они формируются соответствующими запросами к БД, к тому же у 3 из них при выборе пункта "другое" через javascript появляется поле типа "text", в которое пользователь добавляет новое значение для соответствующего списка, т.е. эти поля тоже должны каким то образом дублироваться и при этом для каждого из продублированных полей должны сгенерироваться уникальные названия, и списки при этом должны быть тоже заполнены из БД, и как это все вместе увязать я ума не приложу.
Заранее благодарен за помощь. | |
|
|
|
|
|
|
|
для: JIyKaBbIu
(31.07.2008 в 08:04)
| | Неужели нет людей способных мне помочь? | |
|
|
|
|
|
|
|
для: JIyKaBbIu
(31.07.2008 в 16:02)
| | забесплатно в такой простыне никто разбираться не будет | |
|
|
|
|
|
|
|
для: вялый
(31.07.2008 в 16:08)
| | Так вроде ж это открытый форум где опытные программисты помогают начинающим, а не сайт фрилансеров. Жаль конечно. | |
|
|
|
|
|
|
|
для: JIyKaBbIu
(31.07.2008 в 16:20)
| | вы хотите, чтобы вашу работу делал кто-то другой. Это есть нехорошо. Задавайте конткретные вопросы, типа: что делает этот метод, как мне реализовать такое-то действие, почему вот это выдаёт ошибку в IE. Вы же просто скопипастили весь код и хотите, чтобы мы сами всё сделали и преподнесли вам на блюдечке с каёмочкой. | |
|
|
|
|
|
|
|
для: вялый
(31.07.2008 в 16:36)
| | Я с вами согласен. Но в данной ситуации у меня к сожалению просто нет времени изучать javascript и соответственно спрашивать конкретные вопросы, начальство поручило сделать для них скрипт (часть которого я привел), но не дали полной информации, а когда сроки выполнения подошли к концу, выяснились некоторые "мелочи", которых мне сразу не дали, и эти "мелочи" заставляют кардинально переделывать БД и сам скрипт, и если с БД я справился, то в php скрипте возникла необходимость использовать javascript, с которым я к несчастью практически не знаком, а того времени что у меня осталось просто не хватит на изучение языка, поэтому то я собственно обратился за помощью на форум, а по части необходимого мне скрипта, могу сказать, что по моим прикидкам для человека знающего javascript не составит больших трудностей мне помочь, и одну из проблем, которую я видел в реализации, а именно:
и списки при этом должны быть тоже заполнены из БД
тут данные соответствующих списков, полученные sql запросом для родительских списков, хранить в массивах, а потом через явускрипт для вновь создаваемых полей заполнять эти списки из массива | |
|
|
|
|
|
|
|
для: JIyKaBbIu
(31.07.2008 в 17:05)
| | честно говоря из вашего описания ничего не понял. Давайте по порядку. Как я понял, вам нужно, чтобы генерился select из значений массива. Так? | |
|
|
|
|
|
|
|
для: вялый
(31.07.2008 в 17:17)
| | вообщем если по порядку, то:
1. Необходимо, по нажатию напрмер ссылки "добавить вагон" происходило следующее - дублировался бы каждый из списков блока, выложенного в первом посте, вместе с input'ами, которые открываются для каждого из списков при событии onclick по элементу списка "другой", (это если в списке нет нужного элемента, а значит нет и в базе, добавить его в обработчике запросом взяв значение из соответствующего input) ну и каждый из списков заполнялся бы теми же данными что и родительский список, т.е. который изначально был, при этом для каждого из созданных полей имя каждого из полей бы генерировалось бы по какому то определенному принципу, чтоб потом в обработчике, через цикл можно было б получить значения этих полей зная их имена.
вообщем как то так.
Прошу прощения за излишнюю детальность, надеюсь мои объяснения вам понятны. | |
|
|
|
|
|
|
|
для: JIyKaBbIu
(31.07.2008 в 17:34)
| | кажется начинаю понимать. При клике на "добавить вагон" нужно взять значения из 3 инпутов, и из этих значений сформировать новые пункты в селектах, и отправить эти данные из инпутов на сервер. Так? | |
|
|
|
|
|
|
|
для: вялый
(31.07.2008 в 17:57)
| | нет не так, наверно я туманно объяснил, извиняюсь. изначально есть 4 списка, которые формируются из sql запроса, (для каждого списка свой запрос), и для 3 из 4 списков есть такие элементы "другой", так вот при выборе этого пункта рядом с соответствующим списком появляется input, (т.е. пока пункт списка "другой" не выбран этот input скрыт) в который пользователь может ввести новое значение, которое после обработки php скрипта запишется в БД, и впоследствии будет выводиться в этом списке, но это я просто объяснил назначение этих input'ов, так вот при нажатии на ссылку "добавить вагон", блок со всеми списками и соответствующими им input'ами должен продублироваться, т.е. должны появиться еще один такой же блок с такими же списками (заполненные такими же данными, что и соответствующие им начальные списки), а также для каждого списка должен появиться input, но пока скрытый, и для всех полей (select'ов и соответствующих им input'ов) должны сгенерироваться их названия по некоторому принципу, чтоб в дальнейшем при передачи данных этой формы методом POST в php обработчик можно было б эти имена полей получить и по этим именам получить значения выбранные в полях (т.е. значение элемента списка, а если в этом списке выбран пункт "другой", то получить значение соответствующего этому списку input'а) и записать в БД. Вообщем попытался описать полностью всю логику работы скрипта. Вроде ничего не упустил. | |
|
|
|
|
|
|
|
для: JIyKaBbIu
(31.07.2008 в 18:18)
| | ", блок со всеми списками и соответствующими им input'ами должен продублироваться, т.е. должны появиться еще один такой же блок с такими же списками (заполненные такими же данными, что и соответствующие им начальные списки)"
т.е. при нажатии "добавить вагон" эти 4 селекта и 3 инпута должны полностью продублироваться, без всяких добавлений в селекты. Правильно? | |
|
|
|
|
|
|
|
для: вялый
(31.07.2008 в 19:15)
| | да абсолютно правильно | |
|
|
|
|
|
|
|
для: JIyKaBbIu
(31.07.2008 в 18:18)
| | Сделайте так:
1. Напишите чистый (без PHP-вставок, стилей и прочего дизайн-оформления) HTML-код того, что должен увидеть юзер изначально.
2. Укажите ДЕЙСТВИЕ, которое юзер выполнит (например, так: "в селекте с name="то-то" юзер выберет опшен с текстом "таким-то" и нажмет на кнопку "Продолжить").
3. Напишите чистый HTML-код того, что увидит юзер после этого своего действия.
Тогда, полагаю, ВСЕ и ВСЁ поймут и СРАЗУ помогут. | |
|
|
|