Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Динамическое добавление поля с php-обработкой
Форумы портала PHP.SU » » Хранение данных, их вывод и обработка » Динамическое добавление поля с php-обработкой

Страниц (1): [1]
 

1. Tyoma5891 - 18 Марта, 2014 - 14:36:55 - перейти к сообщению
Добрый день, коллеги!

Возник такой вопрос, вот мне нужно чтобы копировалась строка полностью вся вместе с селектами как на картинке при нажатии кнопки добавить..

вот моя функция jquery:
CODE (javascript):
скопировать код в буфер обмена
  1.  
  2. var total = 0;
  3. function add_new_image(){
  4.    total++;
  5.    $('<tr>').attr('id','tr_image_'+total)
  6.    //.css({lineHeight:'20px'})
  7.    .append (
  8.        $('<td>')
  9.       // .attr('id','td_title_'+total)
  10.        //.css({paddingRight:'5px',width:'200px'})
  11.        .append(
  12.                         $('<select>')
  13.                         .attr('name','tip'+total)
  14.                
  15.        )                              
  16.                                
  17.     )
  18.         .append (
  19.        $('<td>')
  20.            .append(
  21.            $('<input type="text" />')
  22.           // .css({width:'200px'})
  23.            .attr('id','input_title_'+total)
  24.            .attr('name','input_title_'+total)
  25.                 )
  26.            
  27.         )
  28.     .append(
  29.         $('<td>')
  30.         //.css({width:'60px'})
  31.         .append(
  32.            $('<span id="progress_'+total+'" class="padding5px"><input type="button" value="удалить" onclick="$(\'#tr_image_'+total+'\').remove();" class="ico_delete"></span>')
  33.          )
  34.      )
  35.      .appendTo('#table_container');                
  36. }
  37. $(document).ready(function() {
  38.     add_new_image();
  39. });


но проблема в том что эти селекты формируются в пхп:
CODE (html):
скопировать код в буфер обмена
  1.  
  2. <td>
  3.                 <select name="tolsh">
  4.                 <?php
  5.                         $res = mysql_query ("SELECT tolsh from ishodnue");
  6.                         while ($row=mysql_fetch_array($res, MYSQL_ASSOC))
  7.                         {
  8.                                 echo "<option value=".$row['tolsh'].">".$row['tolsh']."</option>";
  9.                         }
  10.                 ?>
  11.                 </select>
  12.                 </td>

так вот когда я вставляю в свою функцию jquery function add_new_image() этот код пхп то ничего не работает естественно, как мне это обойти может я не так что-то делаю..
CODE (javascript):
скопировать код в буфер обмена
  1.  .append(
  2.                         $('<select>')
  3.                         .attr('name','tip'+total)
  4.  
  5.                 $('<?php
  6.                         $res = mysql_query ("SELECT tolsh from ishodnue");
  7.                         while ($row=mysql_fetch_array($res, MYSQL_ASSOC))
  8.                         {
  9.                                 echo "<option value=".$row['tolsh'].">".$row['tolsh']."</option>";
  10.                         }
  11.                 ?>')
  12.        )                              
2. alexiy - 18 Марта, 2014 - 16:20:58 - перейти к сообщению
Tyoma5891
может лучше AJAX?
3. Tyoma5891 - 18 Марта, 2014 - 16:46:37 - перейти к сообщению
alexiy пишет:
Tyoma5891
может лучше AJAX?

через сервер каждый раз пропускать? не знаю даже, а что так думаете не получится просто?
4. alexiy - 18 Марта, 2014 - 17:24:30 - перейти к сообщению
Tyoma5891 а так через сервер Вы не пропускаете?
5. Tyoma5891 - 18 Марта, 2014 - 17:28:15 - перейти к сообщению
alexiy пишет:
Tyoma5891 а так через сервер Вы не пропускаете?

ну так вроде ж нет, это ж ява работает только
6. alexiy - 18 Марта, 2014 - 17:33:01 - перейти к сообщению
Tyoma5891
CODE (html):
скопировать код в буфер обмена
  1.  
  2. <td>
  3.                 <select name="tolsh">
  4.                 <?php
  5.                        $res = mysql_query ("SELECT tolsh from ishodnue");
  6.                        while ($row=mysql_fetch_array($res, MYSQL_ASSOC))
  7.                        {
  8.                                echo "<option value=".$row['tolsh'].">".$row['tolsh']."</option>";
  9.                         }
  10.                 ?>
  11.                 </select>
  12.                 </td>
  13.  

а это что?
7. Tyoma5891 - 18 Марта, 2014 - 17:42:09 - перейти к сообщению
alexiy пишет:
Tyoma5891
CODE (html):
скопировать код в буфер обмена
  1.  
  2. <td>
  3.                 <select name="tolsh">
  4.                 <?php
  5.                        $res = mysql_query ("SELECT tolsh from ishodnue");
  6.                        while ($row=mysql_fetch_array($res, MYSQL_ASSOC))
  7.                        {
  8.                                echo "<option value=".$row['tolsh'].">".$row['tolsh']."</option>";
  9.                         }
  10.                 ?>
  11.                 </select>
  12.                 </td>
  13.  

а это что?

уговорили попробую аяксом как получится отпишусь...
8. alexiy - 18 Марта, 2014 - 17:45:22 - перейти к сообщению
Tyoma5891вперед!
9. Tyoma5891 - 18 Марта, 2014 - 21:49:21 - перейти к сообщению
alexiy пишет:
Tyoma5891вперед!

Нет не получается, получается целый огород все равно, проблема вся в том у меня селекты в форме генерируются динамически вот код всей страницы:
CODE (html):
скопировать код в буфер обмена
  1.  
  2. <HTML>
  3. <HEAD>
  4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  5.   <meta http-equiv="Pragma" content="no-cache">
  6.   <meta http-equiv="expires" content="0">
  7.   <script src="js/jquery.js"></script>
  8.  
  9.  
  10. </HEAD>
  11. <BODY>
  12. <H3>Ввод расчетных данных для профнастила.</H3>
  13. <form id="myForm" action="index.php?solve" method="post">
  14. <table border="1" width="100%">
  15.     <tr>
  16.         <td>Тип профнастила</td>
  17.         <td>Толщина</td>
  18.         <td>Колличество</td>
  19.         <td>Ширина</td>
  20.         <td>Высота</td>
  21.                 <td>Действие</td>
  22.     </tr>
  23.         <div id="results"></div>
  24.         <tr>
  25.                 <td>
  26.                 <select name="tip">
  27.                 <?php
  28.                         $res = mysql_query ("SELECT tip from ishodnue");
  29.                         while ($row=mysql_fetch_array($res, MYSQL_ASSOC))
  30.                         {
  31.                                 echo "<option value=".$row['tip'].">".$row['tip']."</option>";
  32.                         }
  33.                 ?>
  34.                 </select>
  35.                 </td>
  36.                 <td>
  37.                 <select name="tolsh">
  38.                 <?php
  39.                         $res = mysql_query ("SELECT tolsh from ishodnue");
  40.                         while ($row=mysql_fetch_array($res, MYSQL_ASSOC))
  41.                         {
  42.                                 echo "<option value=".$row['tolsh'].">".$row['tolsh']."</option>";
  43.                         }
  44.                 ?>
  45.                 </select>
  46.                 </td>
  47.                 <td><input type="text" name="quant" value=""/></td>
  48.                 <td><input type="text" name="width" value=""/></td>
  49.                 <td><input type="text" name="height" value=""/></td>
  50.                 <td><input type="submit" name="del" value="удалить"/></td>
  51.         </tr>
  52.        
  53. </table>
  54. <br>
  55. <input type="submit" value="Посчитать"/>
  56. </form>
  57. <div align="right">
  58. <form action="index.php?add" method="post">
  59. <input type="submit" name="add" value="Добавить">
  60. </form>
  61. </div>
  62. <form action="index.php" method="post">
  63. <input type="submit" value="Cancel">
  64. </form>
  65. </BODY>
  66. </HTML>

как сделать чтоб эта строка в таблице динамически добавлялась при нажатии кнопки добавить:
CODE (html):
скопировать код в буфер обмена
  1. <tr>
  2.                 <td>
  3.                 <select name="tip">
  4.                 <?php
  5.                         $res = mysql_query ("SELECT tip from ishodnue");
  6.                         while ($row=mysql_fetch_array($res, MYSQL_ASSOC))
  7.                         {
  8.                                 echo "<option value=".$row['tip'].">".$row['tip']."</option>";
  9.                         }
  10.                 ?>
  11.                 </select>
  12.                 </td>
  13.                 <td>
  14.                 <select name="tolsh">
  15.                 <?php
  16.                         $res = mysql_query ("SELECT tolsh from ishodnue");
  17.                         while ($row=mysql_fetch_array($res, MYSQL_ASSOC))
  18.                         {
  19.                                 echo "<option value=".$row['tolsh'].">".$row['tolsh']."</option>";
  20.                         }
  21.                 ?>
  22.                 </select>
  23.                 </td>
  24.                 <td><input type="text" name="quant" value=""/></td>
  25.                 <td><input type="text" name="width" value=""/></td>
  26.                 <td><input type="text" name="height" value=""/></td>
  27.                 <td><input type="submit" name="del" value="удалить"/></td>
  28.         </tr>

кто-то же делал наверняка подобное?
10. Tyoma5891 - 19 Марта, 2014 - 10:51:57 - перейти к сообщению
Всем спасибо проблему решил без аякса лекго)
11. SaM1001 - 06 Августа, 2014 - 17:56:41 - перейти к сообщению
Tyoma5891

Покажи как сделал, а то я столкнулся с аналогичной проблемой, у меня php-коде

PHP:
скопировать код в буфер обмена
  1.  
  2. $formarticle->select_article(...);
  3.  


генерирует

CODE (html):
скопировать код в буфер обмена
  1.  
  2. <div class="fieldwrapper" id="field1">
  3. тут дохера всякой всячины (инпуты, селекты) которое делает $formarticle->select_article(...);
  4. </div>
  5.  


и теперь я хочу дублировать всё это, что стоит в диве и присвоить id="field2" и т.д.

Для этого у меня кусок JS:
CODE (javascript):
скопировать код в буфер обмена
  1.  
  2. '$(document).ready(function() {
  3.             $("#add").click(function() {
  4.                 var intId = $("#buildyourform div").length + 1;
  5.                 var fieldWrapper = $("<div class=\"fieldwrapper\" id=\"field" + intId + "\"/>");
  6.  
  7.         var fArtNr = $("...");
  8.        
  9.         var fAmount = $("&nbsp;/&nbsp;<input type=\"text\" size\"10\" id=\"stock\" name=\"stock\" size=\"10\" />");
  10.                 var removeButton = $("<input type=\"button\" class=\"remove\" value=\"-\" />");
  11.                 removeButton.click(function() {
  12.                         $(this).parent().remove();
  13.                 });
  14.                 fieldWrapper.append(fArtNr);
  15.         fieldWrapper.append(fAmount);
  16.                 fieldWrapper.append(removeButton);
  17.                 $("#buildyourform").append(fieldWrapper);
  18.         });
  19.         $("#preview").click(function() {
  20.                 $("#yourform").remove();
  21.                 var fieldSet = $("<fieldset id=\"yourform\"><legend>Your Form</legend></fieldset>");
  22.                 $("#buildyourform div").each(function() {
  23.                         var id = "input" + $(this).attr("id").replace("field","");
  24.                         var label = $("<label for=\"" + id + "\">" + $(this).find("input.fieldname").first().val() + "</label>");
  25.                         var input;
  26.                         fieldSet.append(label);
  27.                         fieldSet.append(input);
  28.                 });
  29.                 $("body").append(fieldSet);
  30.                 });
  31.         });
  32.  


где var fArtNr = $("..."); должна мне это сделать. но никак не могу подцепить
Помогите разобраться пожалуйста
12. Tyoma5891 - 06 Августа, 2014 - 19:30:03 - перейти к сообщению
я делал с помощью jquery
CODE (javascript):
скопировать код в буфер обмена
  1.  
  2. <script type="text/javascript">
  3.         var cnt = 2;
  4.     $(document).ready(function(){
  5.              
  6.              // Add new row
  7.         $('.add-button').click(function(event){
  8.             event.preventDefault();
  9.                        
  10.             var line = $('#parameters_1').html();
  11.             var expr = /del_[0-9]+/;
  12.             var newline = line.replace(expr, 'del_'+cnt);
  13.             $('.parameters-table').append('<tr class="parameters" id="parameters_'+cnt+'">'+newline+'</tr>');
  14.             cnt++;
  15.         });
  16.  
  17. </script>

html думаю не нужен разберешься...
13. SaM1001 - 07 Августа, 2014 - 11:16:24 - перейти к сообщению
Tyoma5891 пишет:

html думаю не нужен разберешься...


Нужен, ещё как нужен, хотя пробую конечно сам разобраться

ЗЫ: кое что получеться, нашёл "тебя" на другом форуме!!! Спасибо тебе огромное за отзывчивость!
14. SaM1001 - 09 Августа, 2014 - 14:01:39 - перейти к сообщению
Ребят, всем здрасти и хороших выходных. Мне они не сулят, парюсь третий день подряд и не могу сделать нужную фишку.
Короче у меня есть кусок jQuery который доблирует мои инпуты:
CODE (javascript):
скопировать код в буфер обмена
  1. <script type="text/javascript">
  2.           var cnt = 2
  3.                 $(document).ready(function(){
  4.                  // Add new row
  5.                  $(\'.add\').click(function(event){
  6.                          event.preventDefault();
  7.                          var line = $(\'#field1\').html();
  8.                         var expr = /del[0-9]+/;
  9.                         var newline = line.replace(expr, \'del\'+cnt);
  10.            $(\'#buildyourform\').append(\'<div class="fieldwrapper" id="field\'+cnt+\'">\'+newline+\'<div>\');
  11.            cnt++;
  12.        });
  13.    });
  14.  
  15.    // Delete row
  16.    function deleteRow(btn_id){
  17.        var del_id = btn_id.split(\'\');
  18.        $(\'#filed\'+del_id[1]).remove();
  19.    };';  
  20.   </script>
  21.  

Вот этот код пыхи генерирует мне форму куда я вбиваю данные:

PHP:
скопировать код в буфер обмена
  1.  
  2. print '<tr><td>'.$langs->trans('Article').'&nbsp;/&nbsp;'.$langs->trans("Stock").'</td><td colspan="3">';
  3.         print '<fieldset id="buildyourform">';
  4.         print '<div class="fieldwrapper" id="field1"/>';
  5.         print $formarticle->select_article($object->art_nr,'ref',array('selectarnr_id','state_id'),6);
  6.         print '<input type="text" id="stok" name="stock" size="10" value="'.GETPOST('stock').'">';
  7.         print '</div />';
  8.         print '</fieldset>';
  9.         print '<input type="button" value="Add Article" class="add" id="add" />&nbsp;&nbsp;<input type="button" value="Delete" class="del" id="del" onclick="deleteRow(this.id); return false; /">';
  10.         print '</td></tr>';


На выходе исходный код страницы выглядит вот так:

CODE (html):
скопировать код в буфер обмена
  1.  
  2. <td colspan="3">
  3. <fieldset id="buildyourform"><div class="fieldwrapper" id="field1"/>
  4. <script type="text/javascript">
  5.     $(function() {
  6.             $("#ref").combobox({
  7.                     minLengthToAutocomplete : 2,
  8.                     selected : function(event,ui) {
  9.                             var obj = [];
  10.                             $.each(obj, function(key,values) {
  11.                                     if (values.method.length) {
  12.                                             getMethod(values);
  13.                                     }
  14.                                 });
  15.                         }
  16.                 });
  17.  
  18.                 function getMethod(obj) {
  19.                         var id = $("#ref").val();
  20.                         var method = obj.method;
  21.                         var url = obj.url;
  22.                         var htmlname = obj.htmlname;
  23.                     $.getJSON(url,
  24.                                         {
  25.                                                 action: method,
  26.                                                 id: id,
  27.                                                 htmlname: htmlname
  28.                                         },
  29.                                         function(response) {
  30.                                                 $.each(obj.params, function(key,action) {
  31.                                                         if (key.length) {
  32.                                                                 var num = response.num;
  33.                                                                 if (num > 0) {
  34.                                                                         $("#" + key).removeAttr(action);
  35.                                                                 } else {
  36.                                                                         $("#" + key).attr(action, action);
  37.                                                                 }
  38.                                                         }
  39.                                                 });
  40.                                                 $("select#" + htmlname).html(response.value);
  41.                                         });
  42.                 }
  43.         });</script>
  44. <select id="ref" class="flat" name="ref">
  45. <option value="-1"></option>
  46. <option value="2396">9984380 - Article Highrecomedly ART_001105 9984380</option>
  47. тут ещё дофига строчек материала...
  48. <option value="2402">9984895 - Funksystem data (Heinze) ART_001111 9984895</option>
  49. </select>
  50. <input type="text" id="stok" name="stock" size="10" value="">
  51. </div />
  52. </fieldset>
  53. <input type="button" value="Add Article" class="add" id="add" />&nbsp;&nbsp;
  54. <input type="button" value="Delete" class="del" id="del" onclick="deleteRow(this.id); return false; /">
  55. </td>
  56.  


И всё вроде работает на ура. Берёт fieldset и копирует мне его один к одному. Всё как задуманно. Есдинственное не перенимается Autocomplete... чтобы в следующем инпуте выбор происходил после второго знака. Есть варианты передать "зацепить" эту функцию по другому как-то?

 

Powered by ExBB FM 1.0 RC1