За последние 24 часа нас посетили 56838 программистов и 1750 роботов. Сейчас ищут 782 программиста ...

Динамическое редактирование таблиц БД Oracle через html

Тема в разделе "Прочие вопросы по PHP", создана пользователем sn41, 24 мар 2016.

  1. sn41

    sn41 Новичок

    С нами с:
    24 мар 2016
    Сообщения:
    1
    Симпатии:
    0
    Всем привет. Если кто может, помогите советом начинающему PHP-разработчику.
    Есть функция, которая принимает наименование таблицы БД и выводит её в html таблицу(наименование столбцов и их значения) workWithOralce.php:

    Код (PHP):
    1. //Вывести данные одной таблицы
    2.         public static function getDataTable($table){
    3.  
    4.             //Подключаемся к БД
    5.             global $conn;
    6.             //Запрос наименовай столбцов
    7.             $stid = oci_parse($conn, 'SELECT * from dba_tab_columns where table_name = ' . '\'' . $table . '\'');
    8.             oci_execute($stid);
    9.  
    10.             //Запрос всех данных таблицы
    11.             $stip = oci_parse($conn, 'SELECT * from ' . $table);
    12.             oci_execute($stip);
    13.  
    14.             $items = array();
    15.             $items2 = array();
    16.  
    17.             echo "<table border=\"1\">\n";
    18.             while ($row = oci_fetch_array($stid, OCI_ASSOC+OCI_RETURN_NULLS)) {
    19.                         $items[] = $row;
    20.               }
    21.  
    22.             //Получаем нименования столбцов
    23.             $arr = array();
    24.             foreach($items as $item){
    25.                 array_push($arr, $item['COLUMN_NAME']);
    26.             }
    27.             //Удаляем повторяющиеся наименования
    28.             $res = array_unique($arr);
    29.             sort($res);
    30.             $len = count($res);
    31.             $arr2 = array();
    32.             $count = 0;
    33.             //Содаем многомерный массив значений
    34.             while ($row2 = oci_fetch_array($stip, OCI_ASSOC+OCI_RETURN_NULLS)) {
    35.  
    36.                 //Генерация многомерного массива
    37.                 // Длинна массива зависит от длины $res
    38.                 for($n = 0; $n < $len; $n++){
    39.                     $arr2[$count][$n] = $row2[$res[$n]];
    40.                 }
    41.                  $count += 1;
    42.             }
    43.             //Выводим зоговлки таблицы
    44.             echo "<table border='1'>\n";
    45.             echo "<caption>" . $table . "</caption>";
    46.             echo "<thead>";
    47.             echo '<tr id="1">';
    48.             foreach ($res as $key) {
    49.                 echo '<th>' . $key . '</th>';
    50.             }
    51.             echo '</tr>';
    52.             echo "</thead>";
    53.             echo "<tbody>";
    54.  
    55.             // Тело таблицы
    56.             $len2 = count($arr2);
    57.             if($len2 == 0){
    58.                 echo "<tr>";
    59.                 for($i = 0; $i < $len; $i++){
    60.                     echo "<td></td>";
    61.                 }
    62.                 echo "</tr>";
    63.                 echo "</tbody>";
    64.                 echo '</table>';
    65.                 echo '<td><button type="button" class="btn btn-link" id="readbutton">Добавить запись</button></td>';
    66.             }
    67.             else{
    68.                 $c = 1;
    69.                 $h = 0;
    70.                 for($b = 0; $b < $len2; $b++){
    71.                     echo '<tr id=item' . $c . '>';
    72.                     foreach ($arr2[$b] as $value) {
    73.  
    74.                         echo '<td><div class="edit"
    75.                              data-id=' . $c
    76.                              . ' data-name=' . $res[$h]
    77.                             . ' contenteditable>' . $value . '</div></td>';
    78.                             $h++;
    79.  
    80.  
    81.                     }
    82.                     echo '<td><button type="button" class="btn btn-link button" data-id=' . $c . '>Удалить</button></td>';
    83.                     echo '</div></tr>';
    84.                     $c++;
    85.                     $h = 0;
    86.                 }
    87.  
    88.                 echo "</tbody>";
    89.                 echo '</table>';
    90.                 echo '<td><button type="button" class="btn btn-link" id="readbutton">Добавить запись</button></td>';
    91.             }
    92.         }
    93.  
    94.  
    Далее, построчно сделал дополнение таблицы данными(не работает корректно) и удаление с помощью jquery
    app.js:
    Код (PHP):
    1.   //Удаление записи в БД
    2.   $('.button').click(function(){
    3.     id = $(this).data('id');
    4.     var elem = '#item' + id;
    5.     tableNames = $('caption').text();
    6.     var elemText = $(elem).find('div').eq(0).text();
    7.     var elemDataName = $(elem).find('div').eq(0).data('name');
    8.     $.ajax({
    9.       url: 'index.php',
    10.       type: 'POST',
    11.       data: {elem_text: elemText,
    12.              del_table_name: tableNames,
    13.              elem_data_name: elemDataName
    14.             },
    15.       success: function(e){
    16.         console.log(e);
    17.  
    18.         //Перезагрузка страницы
    19.         location.reload();
    20.       },
    21.       error: function(e){
    22.         console.log(e);
    23.  
    24.         //Перезагрузка страницы
    25.         location.reload();
    26.       }
    27.     });
    28.     //console.log("SDSDFSDF");
    29.     console.log(elemText +"|"+ elemDataName);
    30.   });
    31.  
    32.  
    33.  
    34.  
    35.  
    36.  
    37.   //Добавление записи в БД
    38.   $('#readbutton').click(function(){
    39.     tableNames = $('caption').text();
    40.     var len = $('#1 > th').length;
    41.  
    42.     $('tbody').append(function(){
    43.       var res = "<tr id='appendContent'>";
    44.       for(var i = 0; i < len; i++){
    45.         res += '<td><div class="appendChild" contenteditable>Бу</div></td>';
    46.       }
    47.       res += '<td><button type="button" class="btn btn-link" id="Save">Сохранить</button></td></tr>';
    48.       return res;
    49.     });
    50.  
    51.     var arrayData = [];
    52.     $('#Save').click(function(){
    53.       for(var i = 0; i < len; i++){
    54.         arrayData[i] = $('#appendContent').find('.appendChild').eq(i).text();
    55.       }
    56.  
    57.       $.ajax({
    58.         url: 'index.php',
    59.         type: 'POST',
    60.         data: {cr_table: tableNames, cr_text: arrayData},
    61.         success: function(e){
    62.           console.log(e);
    63.           //Перезагрузка страницы
    64.           location.reload();
    65.         },
    66.         error: function(e){
    67.           console.log(e);
    68.           //Перезагрузка страницы
    69.           location.reload();
    70.         }
    71.       });
    72.  
    73.     });
    74. });
    75.  
    Теперь понадобилось добавлять несколько строк с данными и за один клик сохранять в БД.
    Не могу понять как мне это реализовать. Ассоциативные массивы или нет? Как получить с помощью jquery наименование столбца в который будем добавлять данные? Как потом с помощью php собрать запрос?
    Заранее благодарю!

    Подсказка от модератора:
    Любой код или текст конфигурации пишите между тегом [code=php] и [/code].
    Используйте отступы в коде для форматирования текста.
    Это помогает быстрее понять вас, увеличивает шанс на получение ответа.
    Что выделять? Например: PHP, HTML, CSS, JavaScript, SQL, XML, .htaccess, ini, регулярные выражения, код шаблонизаторов, любая другая разметка, результаты array/object dump и т. д.