За последние 24 часа нас посетили 58648 программистов и 1816 роботов. Сейчас ищут 837 программистов ...

Добавление полей формы налету

Тема в разделе "PHP для новичков", создана пользователем Darken, 16 фев 2009.

  1. Darken

    Darken Активный пользователь

    С нами с:
    2 фев 2009
    Сообщения:
    38
    Симпатии:
    0
    Подскажите можно ли сделать добавление полей формы налету средствами PHP ... т.е. как сделано на многих почтовых серверах и на форуме при добавлении вложений.... аля кнопочка "добавить поле". И как ее значение в поседующем обработать?
     
  2. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    нет. это js.

    http://440hz.ru/trash/files
     
  3. kuliev

    kuliev Активный пользователь

    С нами с:
    10 фев 2006
    Сообщения:
    204
    Симпатии:
    0
    Адрес:
    TLT
    Darken
    Я думаю что это надо делать на java, чтобы все происходило на стороне клиента!
     
  4. akrinel

    akrinel Активный пользователь

    С нами с:
    26 янв 2009
    Сообщения:
    955
    Симпатии:
    1
    Адрес:
    Spb
    <офтоп>
    За называние JS явой многие Java программисты убивают. Причем в особо извращенной форме.
    </офтоп>
     
  5. engager

    engager Активный пользователь

    С нами с:
    21 янв 2009
    Сообщения:
    1.106
    Симпатии:
    1
    akrinel
    +1 :D
     
  6. admyx

    admyx Активный пользователь

    С нами с:
    14 мар 2008
    Сообщения:
    2.159
    Симпатии:
    1
    akrinel
    +1
     
  7. Darken

    Darken Активный пользователь

    С нами с:
    2 фев 2009
    Сообщения:
    38
    Симпатии:
    0
    440Hz
    а можно исходничек поковырять?
     
  8. karakh

    karakh Активный пользователь

    С нами с:
    11 дек 2007
    Сообщения:
    1.344
    Симпатии:
    0
    Сказано же - это js. View source и ковыряй сколько хочешь :)
     
  9. ATI

    ATI Активный пользователь

    С нами с:
    3 янв 2008
    Сообщения:
    254
    Симпатии:
    0
    Адрес:
    Москва
    Открой страницу в хтмле и ковыряй)
     
  10. Darken

    Darken Активный пользователь

    С нами с:
    2 фев 2009
    Сообщения:
    38
    Симпатии:
    0
    Наковырял )))

    Файл отправки формы
    Код (Text):
    1.  
    2. <script>
    3.  
    4. function dropFile(btn){
    5.     if(document.getElementById) {
    6.         tr = btn;
    7.         while (tr.tagName != 'TR') tr = tr.parentNode;
    8.         tr.parentNode.removeChild(tr);
    9.         checkForLast();
    10.     }
    11. }
    12. function addFile(btn){
    13.     if(document.getElementById) {
    14.         tr = btn;
    15.         while (tr.tagName != 'TR') tr = tr.parentNode;
    16.         var newTr = tr.parentNode.insertBefore(tr.cloneNode(true),tr.nextSibling);
    17.         thisChilds = newTr.getElementsByTagName('td');
    18.         for (var i = 0; i < thisChilds.length; i++){
    19.             if (thisChilds[i].className == 'header') thisChilds[i].innerHTML = '';
    20.             if (thisChilds[i].className == 'files') thisChilds[i].innerHTML = '<input size="32" name="f1[]" type="text">';
    21.         }
    22.         checkForLast();
    23.     }
    24. }
    25. function checkForLast(){
    26.     btns = document.getElementsByName('drop');
    27.     for (i = 0; i < btns.length; i++){
    28.         btns[i].disabled = (btns.length == 1) ? true : false;
    29.     }
    30. }
    31.  
    32. </script>
    33.  
    34.  
    35. <body onload="checkForLast();">
    36. <form action="presult.php" method="POST" ENCTYPE="multipart/form-data">
    37. <TABLE cellSpacing=0 cellPadding=4  border="1">
    38. <TD ><INPUT type=text size=22 name="f1[]"><INPUT type=text size=22 name="f2[]"><INPUT type=text size=5 name="f3[]"><INPUT type=text size=5 name="f4[]"></TD>
    39. <TD noWrap><INPUT onclick=dropFile(this); type=button value=" - " name=drop><INPUT onclick=addFile(this); type=button value=" + "></TD>
    40. </TABLE>
    41. <input type="submit" value="отправить">
    42. </form>
    Файл ее приема и обработки

    Код (Text):
    1.  
    2. <?php
    3. echo "<--переменные POST-->\n\n";
    4. echo "<--".dump_array($HTTP_POST_VARS)."-->\n";
    5.  
    6. function dump_array($array)
    7.     {
    8.     if(is_array($array))
    9.         {
    10.         $size = count($array);
    11.         $string = "";
    12.             if($size)
    13.             {
    14.             $count = 0;
    15.             $string .="{ ";
    16.             foreach($array as $var => $value)
    17.             {
    18.       $string .="$var = $value";
    19.       if($count++ <($size-1))
    20.         {
    21.             $string .= ", ";
    22.                 }
    23.             }
    24.             $string .=" }";
    25.             }
    26.         return $string;
    27.     }
    28.     else
    29.         {
    30.         return $array;
    31.         }
    32. }
    33. ?>
    При обработке у меня выводит
    Как мне добраться до данных находящихся в этом масииве?
     
  11. +Sten+

    +Sten+ Активный пользователь

    С нами с:
    27 авг 2007
    Сообщения:
    978
    Симпатии:
    0
    440Hz спасибо за исходник, только начал писать такую штуку и на тему наткнулся :)

    print_r($_POST);
     
  12. Devzirom

    Devzirom Активный пользователь

    С нами с:
    15 фев 2009
    Сообщения:
    463
    Симпатии:
    0
    Адрес:
    Пермь
    Советую создавать формы сразу на странице и средствами CSS скрыть, а с помощью JavaScript показывать их в нужный момент.
     
  13. Darken

    Darken Активный пользователь

    С нами с:
    2 фев 2009
    Сообщения:
    38
    Симпатии:
    0
    О! интересная идея, есть работающий пример?
     
  14. VItalijs

    VItalijs Активный пользователь

    С нами с:
    17 дек 2008
    Сообщения:
    244
    Симпатии:
    0
    Адрес:
    Рига, Латвия
    вы хотите сразу на странице создать сто полей? не известно сколько полей понадобиться юзеру. И еще интересно если в CSS стоит display:none, поля будут отправляться или нет, надо бы проверить..
     
  15. Devzirom

    Devzirom Активный пользователь

    С нами с:
    15 фев 2009
    Сообщения:
    463
    Симпатии:
    0
    Адрес:
    Пермь
    А вы наверное собираетесь создать JS, в котором будет описываться сто полей?
    Все работает, по крайне мере у меня:

    HTML:
    1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
    2. <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    3.  
    4. <style type="text/css">
    5. input.hidden {
    6.     display:none;
    7. }
    8.  
    9. <script type="text/javascript">
    10. function show_hidden_input() {
    11.     document.getElementById("hidden_input").style.display = "block";
    12. }
    13.  
    14. <title>FORM HIDDEN-></title>
    15. </head>
    16.  
    17. <h3>Ответ сервера: "
    18. <?php
    19.     if(isset($_POST["text"])) {
    20.         echo($_POST["text"]);
    21.     }
    22. ?>
    23. "
    24. </h3>
    25. <form action="/index.php" method="post">
    26. <p><input class="hidden" id="hidden_input" name="text" type="text"></p>
    27. <p><input type="button" value="Показать поле ввода" onclick="show_hidden_input();"></p>
    28. <p><input type="submit"></p>
    29. </form>
    30. </body>
    31. </html>
     
  16. VItalijs

    VItalijs Активный пользователь

    С нами с:
    17 дек 2008
    Сообщения:
    244
    Симпатии:
    0
    Адрес:
    Рига, Латвия
    вы просто показываете поле, а надо что бы динамически поля появлялись при нажатии на кнопку. что то вроде
    [js]
    <script>
    var $id=2;
    function add_pole(){
    var $main_div = document.getElementById("input-div");
    var $HTML = '<input type="text" name="text_'+$id+'" value=""><span style="cursor:pointer; text-decoration:underline" onClick="remove('+$id+')">remove this</span>';
    var $new_div = document.createElement("div");
    $new_div.innerHTML = $HTML;
    $new_div.setAttribute("id", "div-"+$id);
    $main_div.appendChild($new_div);
    $id++;
    }
    function remove($div_id){
    document.getElementById("input-div").removeChild(document.getElementById("div-"+$div_id));
    }
    </script>
    [/js]

    HTML:
    1.  
    2. <button onClick="add_pole()">add field</button>
    3. <div id="input-div">
    4. <input type="text" id="text_1">
    5. </div>
    6.  
     
  17. VItalijs

    VItalijs Активный пользователь

    С нами с:
    17 дек 2008
    Сообщения:
    244
    Симпатии:
    0
    Адрес:
    Рига, Латвия
    а зачем писал хз, сверху уже были норм исходники ((