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

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: динамическая таблица в Mysql через php

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Без описания
maksqwerty
Отправлено: 01 Ноября, 2017 - 14:31:08
Post Id


Новичок


Покинул форум
Сообщений всего: 2
Дата рег-ции: Нояб. 2017  


Помог: 0 раз(а)




CODE (javascript):
скопировать код в буфер обмена
  1. var table = document.getElementById('dynamictable'),
  2. tbody = table.getElementsByTagName('tbody')[0],
  3. clone = tbody.rows[0].cloneNode(true);
  4.  
  5.  
  6.  
  7.  
  8. function deleteRow(el)
  9. {
  10.     var del = el.parentNode.parentNode.rowIndex;
  11.     table.deleteRow(del);
  12.     while (table.rows[0]){
  13.         updateRow(table.rows[del], del, false);
  14.         del++;
  15.     }
  16.  
  17. }
  18.  
  19. function insRow()
  20. {
  21.     var new_row = updateRow(clone.cloneNode(true), ++tbody.rows.length, true);
  22.     tbody.appendChild(new_row);
  23. }
  24.  
  25.  function updateRow(row, del)
  26.  {
  27.     row.cells[0].innerHTML = del;
  28.  
  29.  
  30.     var inp1 = row.cells[1].getElementsByTagName('input')[0];
  31.     inp1.id = 'material'+ del;
  32.     inp1.name = 'material'+ del;
  33.  
  34.     var inp2 = row.cells[2].getElementsByTagName('input')[0];
  35.     inp2.id = 'ind'+ del;
  36.     inp2.name = 'ind'+ del;
  37.  
  38.     var inp3 = row.cells[3].getElementsByTagName('input')[0];
  39.     inp3.id = 'plot'+ del;
  40.     inp3.name = 'plot'+ del;
  41.  
  42.     var inp4 = row.cells[4].getElementsByTagName('input')[0];
  43.     inp4.id = 'count'+ del;
  44.     inp4.name = 'count'+ del;
  45.  
  46.     var inp5 = row.cells[5].getElementsByTagName('input')[0];
  47.     inp5.id = 'price'+ del;
  48.     inp5.name = 'price'+ del;
  49.  
  50.     var inp6 = row.cells[6].getElementsByTagName('input')[0];
  51.     inp6.id = 'wert'+ del;
  52.     inp6.name = 'wert'+ del;
  53.  
  54.     var sel1 = row.cells[7].getElementsByTagName('select')[0];
  55.     sel1.id ='konto'+ del;
  56.     sel1.name ='konto'+ del;
  57.  
  58.     var inp7 = row.cells[8].getElementsByTagName('input')[0];
  59.     inp7.id = 'sap'+ del;
  60.     inp7.name = 'sap'+ del;
  61.  
  62.     var sel2 =row.cells[9].getElementsByTagName('select')[0];
  63.     sel2.id ='kosten'+ del;
  64.     sel2.name ='kosten'+ del;
  65.  
  66.     var but1 = row.cells[10].getElementsByTagName('button')[0];
  67.     but1.id = 'deletebutton'+del;
  68.  
  69.     return row;

Всем привет.
Вот мой код для создания динамической таблицы.
Вот так изначально выглядит моя таблица:
CODE (html):
скопировать код в буфер обмена
  1.  
  2.              <tr>
  3.                                                                                
  4.                 <td>1</td>
  5.                 <td><label>
  6.         <input id="material" type="text"  name="material1"  maxlength="15">
  7.         </label></td>
  8.                 <td><label>
  9.         <input id="ind" type="text"  name="ind1"  class="ind" maxlength="3">
  10.         </label></td>
  11.                  <td><label>
  12.         <input id="plot" type="text"  name="plot1" class="benennung" maxlength="45">
  13.         </label></td>
  14.                 <td><label>
  15.         <input id="count" type="text"   name="count1" pattern="[0-9]{1,}" maxlength="10" value="0" onfocus="if(this.value=='0'){this.value = '';}">
  16.         </label></td>
  17.                 <td><label>
  18.         <input id="price" type="number"   name="price1" pattern="[0-9]{1,}" step="0.01" value="0" onfocus="if(this.value=='0'){this.value = '';}">
  19.                 </label></td>          
  20.         <td><label>
  21.         <input id="wert1" type="number"  name="wert1" step="0.01" onfocus="wertzahl()" value="0">
  22.         </label>
  23.         </td>
  24.         <td><label>
  25.         <select id="fertigkonto" name="fertigkonto1" class="fertigkonto">
  26.                 <option>131</option>
  27.                 <option>321</option></select>
  28.         </label></td>  
  29.              <td><label>
  30.         <input  id="sap" type="text"  name="sap1" pattern="[0-9]{1,}">
  31.         </label></td>
  32. <td><label>
  33.         <select id="kosten" name="kosten1" class="kostenstelle">
  34.         <option>131</option>
  35.         <option>321</option></select>
  36.                 </label></td>
  37. <td style='white-space: nowrap'>
  38. <button type="button"  class="deletetablerow" id="deletebutton" onclick="deleteRow(this)" >-</button>
  39. <button type="button" class="addtablerow" onclick="insRow()">+</button>
  40.  
  41.                                                                                
  42.         </td>
  43.         </tr>

Т.е как видно, у меня элементов первой строки таблицы именна с числом "1" в конце, а далее скрипт генерирует от 2 и далее...

Но я совсем не знаю, как переслать данные из этой таблицы через php в mysql
я хотел это сделать через
PHP:
скопировать код в буфер обмена
  1. for ($i = 2; $i < count($_POST['materialNr']); $i++){
  2.                $Mat = $_POST['material'][$i];
  3.                 $Ind = $_POST['ind'][$i];
  4.                 $Ben = $_POST['plot'][$i];
  5.                 $Men = $_POST['count'][$i];
  6.                 $Pre = $_POST['preis'][$i];
  7.                 $Wer = $_POST['wert'][$i];
  8. }

Но это не работает :/
Как сделать так, что бы посту были понятно что есть $_POST, который состоит из двух частей: первая - обычное слово, второе - порядочный номер (он же массив).
Или можно что-то в джс коде подправить?
Буду очень благодарен Радость
 
 Top
Sail
Отправлено: 01 Ноября, 2017 - 19:35:44
Post Id



Участник


Покинул форум
Сообщений всего: 1131
Дата рег-ции: Февр. 2014  


Помог: 57 раз(а)




maksqwerty, раз уж формируете имена элементов через конкатенацию - то и разбирайте через этот же оператор. (например: $_POST['material'.$i]).
Или формируйте имя тега как массив.
Подробнее: Как создать массивы в HTML <form>
Только на якорь оно само скорее всего не перейдет по ссылке Улыбка
 
 Top
maksqwerty
Отправлено: 02 Ноября, 2017 - 15:24:25
Post Id


Новичок


Покинул форум
Сообщений всего: 2
Дата рег-ции: Нояб. 2017  


Помог: 0 раз(а)




Sail пишет:
maksqwerty, раз уж формируете имена элементов через конкатенацию - то и разбирайте через этот же оператор. (например: $_POST['material'.$i]).
Или формируйте имя тега как массив.
Подробнее: Как создать массивы в HTML <form>
Только на якорь оно само скорее всего не перейдет по ссылке Улыбка



окей, даже такой скрипт сделал (валидацию прошёл, ошибок нет)
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. ini_set('error_reporting', E_ALL);
  3. ini_set('display_errors', 1);
  4. ini_set('display_startup_errors', 1);
  5.  
  6. include ('connect.php');
  7.  
  8.  
  9.  
  10.  
  11. $mat = (isset($_POST['materialNr']) ? $_POST['materialNr'] : null);
  12. $ind = (isset($_POST['ind']) ? $_POST['ind'] : null);
  13. $ben = (isset($_POST['benennung']) ? $_POST['benennung'] : null);
  14. $men = (isset($_POST['menge']) ? $_POST['menge'] : null);
  15. $pre= (isset($_POST['preispro100ME']) ? $_POST['preispro100ME'] : null);
  16. $wer = (isset($_POST['wert']) ? $_POST['wert'] : null);
  17. $fer = (isset($_POST['fertigkonto']) ? $_POST['fertigkonto'] : null);
  18. $sap = (isset($_POST['sapBeleg']) ? $_POST['sapBeleg'] : null);
  19. $kos = (isset($_POST['kostenstelle']) ? $_POST['kostenstelle'] : null);
  20.  
  21. for ($i = 0; $i < count((isset($_POST['materialNr']) ? $_POST['materialNr'] : null)); $i++){
  22.         $material = $mat[$i];
  23.         $index = $ind[$i];
  24.         $benennung = $ben[$i];
  25.         $menge = $men[$i];
  26.         $preispro100ME = $pre[$i];
  27.         $wert = $wer[$i];
  28.         $fertigkonto = $fer[$i];
  29.         $sapBeleg = $sap[$i];
  30.         $kostenstelle = $kos[$i];
  31. }
  32.  
  33.         $sql = 'INSERT INTO mytable (`material`, `ind`, `ben`, `men`, `prei`, `we`, `fertigun`, `sapb`, `kost`)
  34.                         VALUES ( $mat[$i], $ind[$i], $ben[$i], $men[$i], $pre[$i], $wer[$i], $fer[$i], $sap[$i], $kos[$i]) ';
  35.                         $result = mysqli_query($conn, $sql); //mysqli_multi_query
  36.  
  37.                                 if ($result) {
  38.             //SUCCESS
  39.         header('Location: http://тут типо мой сервер');}
  40.      
  41.  
  42. mysqli_close($conn);
  43.  
  44.         ?>


Везде потыкал (isset($_POST[' ']) ? $_POST[' '] : null) что бы пхп на индекс не ругался.
После этого ошибок ну уж точно нет (ясчитаю), но всё-ровно не работает Растерялся
 
 Top
Sail
Отправлено: 03 Ноября, 2017 - 07:16:26
Post Id



Участник


Покинул форум
Сообщений всего: 1131
Дата рег-ции: Февр. 2014  


Помог: 57 раз(а)




maksqwerty пишет:
Везде потыкал (isset($_POST[' ']) ? $_POST[' '] : null) что бы пхп на индекс не ругался.
После этого ошибок ну уж точно нет (ясчитаю), но всё-ровно не работает

Потому ошибок и нет, что нет попыток обратиться к отсутствующим данным.
Ещё раз: если формируете названия dom-элементов в виде somename+number, то и обращайтесь к ним соответственно через имя с добавленным в виде суффикса числом.
Если хотите обрабатывать на стороне сервера как элемент массива - то и формируйте в js как массив.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB