За последние 24 часа нас посетили 21053 программиста и 1282 робота. Сейчас ищут 705 программистов ...

Таблица принимающая и записывающая данные как?

Тема в разделе "HTML и CSS", создана пользователем 55GA_Impostor_in_IT, 23 дек 2023.

  1. 55GA_Impostor_in_IT

    55GA_Impostor_in_IT Новичок

    С нами с:
    23 дек 2023
    Сообщения:
    1
    Симпатии:
    0
    Итак смысл в том что бы сделать таблицу в которую вводятся данные(в ячейку) после чего они должны там быть сохранены в конкретной ячейке куда эти данные были введены. То есть эта таблица должна принимать и записывать данные. Вот например я зашёл на сайт нашёл таблицу на этом сайте и написал в ячейке которая находится скажем на 3-й строчке в 10-м столбике слово "триангуляция" нажал клавишу Enter. После чего закрыл сайт и выключил компьютер. Теперь я снова зашёл на этот сайт и я увидел что в той самой ячейке 3-я сточка 10-й столбец введены данные(слово"триангуляция"). Как это сделать ? В дополнении напишу что это не конкретная ячейка должна быть а в принципе любая ячейка которая мне понравится должна записывать введённые в неё данные.
     
  2. Boothooz

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

    С нами с:
    8 май 2016
    Сообщения:
    63
    Симпатии:
    6
    БД для этого и была создана - чтобы хранить данные и получать их в любое время :)
     
  3. Дюран

    Дюран Активный пользователь

    С нами с:
    9 мар 2018
    Сообщения:
    266
    Симпатии:
    21
    Вам нужно искать библиотеку, которая такой grid input делает.
    Например у меня под такую задачу записана - эта, но юзать не пришлось.
    Тут смотря что еще за фронт у вас, под их фреймы типа vue, react наверное тоже есть решения, такой ввод укладывается в их логику
     
  4. Vladimir Kheifets

    Vladimir Kheifets Новичок

    С нами с:
    23 сен 2023
    Сообщения:
    262
    Симпатии:
    52
    Адрес:
    Бавария, Германия
    Добрый день и с наступающим Новым Годом!
    Это можно сделать так:
    index.php
    PHP:
    1. <?
    2. $connect = new mysqli("127.0.0.1:3306","root","","test");
    3. #####################################################################
    4. /*
    5.   myTable structure:
    6.  
    7.   ID primary key int(3)       No none AUTO_INCREMENT
    8.    A text utf8mb4_unicode_ci Yes NULL
    9.    B text utf8mb4_unicode_ci Yes NULL
    10.    C text utf8mb4_unicode_ci Yes NULL
    11.    D text utf8mb4_unicode_ci Yes NULL
    12.    E text utf8mb4_unicode_ci Yes NULL
    13.    F text utf8mb4_unicode_ci Yes NULL
    14. */
    15. #####################################################################
    16. $table = "myTable";
    17. $query = "SHOW COLUMNS FROM $table";
    18. $result = mysqli_query($connect,$query);
    19. $tableHeader = [];
    20. while($row = mysqli_fetch_assoc($result))
    21. {
    22.   $tableHeader[] = $row['Field'];
    23. }
    24. $feldsInsUpd = $tableHeader;
    25. unset($feldsInsUpd[0]);
    26. $columns = count($tableHeader);
    27. #####################################################################
    28. if(isset($_POST["checkRow"]))
    29. {
    30.   $buf = [];
    31.   foreach($_POST["checkRow"] as $ID)
    32.   {
    33.     $query = "DELETE FROM $table WHERE ID = '$ID'";
    34.     mysqli_query($connect, $query);
    35.   }
    36. }
    37. else if(isset($_POST["iRow"]))
    38. {
    39.   foreach ($_POST["iRow"] as $iRow => $ID) {
    40.     if($ID==0)
    41.     {
    42.       $query = "INSERT INTO $table (";
    43.       $query .= "`".implode("`,`",$feldsInsUpd)."`";
    44.       $query .= ") VALUES ('";
    45.       $buf = [];
    46.       for ($i=1; $i < $columns; $i++) {
    47.         $buf[] = addslashes($_POST["col$i"][$iRow]);
    48.       }
    49.       $query .= implode("','",$buf);
    50.       $query .= "')";
    51.       mysqli_query($connect,$query);
    52.     }
    53.     else
    54.     {
    55.       $query = "UPDATE $table SET ";
    56.       $buf = [];
    57.       for ($i=1; $i < $columns; $i++) {
    58.         $value = htmlentities($_POST["col$i"][$iRow]);
    59.         $buf[] = "`{$feldsInsUpd[$i]}` = '$value'";
    60.       }
    61.       $query .= implode(",",$buf);
    62.       $query .= " WHERE `{$tableHeader[0]}` = '$ID'";
    63.       mysqli_query($connect, $query);
    64.     }
    65.   }
    66. }
    67. #####################################################################
    68. $query = "SELECT * FROM $table";
    69. $result = mysqli_query($connect, $query);
    70. if(mysqli_num_rows($result)>0)
    71. {
    72.   $tableRows =[];
    73.   while($row = mysqli_fetch_assoc($result))
    74.   {
    75.     $buf = [];
    76.     foreach($tableHeader as $col => $colName)
    77.     {
    78.       if($col==0) $ID = $row[$colName];
    79.         $buf[] = $row[$colName];
    80.     }
    81.     $tableRows[$ID] = $buf;
    82.   }
    83. }
    84. else
    85.   $tableRows[0] = array_fill(0, 7, '');
    86. #####################################################################
    87. function setTdTag($value, $iCol=null){
    88.   if(isset($iCol))
    89.     return <<<HTML
    90.     <td><input type = "text" name="col{$iCol}[]" value="$value"></td>
    91.     HTML;
    92.   else
    93.     return <<<HTML
    94.     <td>$value</td>
    95.     HTML;
    96. }
    97. #####################################################################
    98. function setTableRow($rowArray, $inpRow=false, $iRow = 0){
    99.   $outHtml = "<tr>";
    100.   foreach($rowArray as $iCol => $value)
    101.   {
    102.     if($iCol == 0)
    103.     {
    104.       if($inpRow)
    105.       {
    106.         $outHtml .= "<td><input name='checkRow[]' type='checkbox' value='$iRow'>";
    107.         $outHtml .= "<input type ='hidden' name = 'iRow[]' value='$iRow'></td>";
    108.       }
    109.       else
    110.         $outHtml .= "<td>&nbsp;</td>";
    111.     }
    112.     else
    113.     {
    114.       if($inpRow)
    115.         $outHtml .= setTdTag($value, $iCol);
    116.       else
    117.          $outHtml .= setTdTag($value);
    118.     }
    119.   }
    120.   $outHtml .= "<tr>";
    121.   return $outHtml;
    122. }
    123. #####################################################################
    124. ?>
    125. <html>
    126. <head>
    127. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    128. <title>Table editor</title>
    129. <link rel="stylesheet" type="text/css" href="tableEditor.css" />
    130. <script>
    131.   columns = "<?=$columns?>";
    132.   tableID = "<?=$table;?>";
    133. </script>
    134. <script type="text/javascript" src="tableEditor.js"></script>
    135. </head>
    136. <body>
    137. <div align="center">
    138. <form action="" method="post">
    139. <table id="<?=$table?>" border="1">
    140. <?
    141. echo setTableRow($tableHeader,false);
    142. foreach($tableRows as $iRow => $tableRow)
    143. {
    144.   echo setTableRow($tableRow, true, $iRow);
    145. }
    146. ?>
    147. </table>
    148. <p>
    149. <input type="submit" value="Save " />
    150. <input type="button" value="Add row" />
    151. <input type="button" value="Delete row" />
    152. </p>
    153. </form>
    154. </div>
    155. </body>
    156. </html>
    tableEditor.js
    Код (Javascript):
    1. window.addEventListener("load", () => {
    2.   msg1 = "Do you really want to delete the table rows?";
    3.   msg2 = "Select the table rows you want to delete";
    4.   //--------------------------------------------------------
    5.   addRow = function(){
    6.     table = document.getElementById(tableID);
    7.     newRow = table.insertRow(-1);
    8.     newCell = newRow.insertCell(-1);
    9.     colHTML = "<input name='checkRow[]' type='checkbox' value='0'>";
    10.     colHTML += "<input type ='hidden' name = 'iRow[]' value='0'>";
    11.     newCell.innerHTML = colHTML;
    12.     for (var i = 1; i < columns; i++) {
    13.       newCell = newRow.insertCell(-1);
    14.       newCell.innerHTML = '<input type = "text" name="col'+i+'[]" value="">';
    15.     }
    16.   }
    17.   //--------------------------------------------------------
    18.   delRows = function(){
    19.     if(!confirm(msg1)) return;
    20.     table = document.getElementById(tableID);
    21.     checkEl = document.querySelectorAll("input[type='checkbox']");
    22.     checkCount = checkEl.length;
    23.     goSubmit = false;
    24.     noCheked = true;
    25.     for (i = 0; i < checkCount; i++) {
    26.       if(checkEl[i].checked)
    27.       {
    28.         noCheked = false;
    29.         r = checkEl[i].parentNode.parentNode.rowIndex;
    30.         if(checkEl[i].value == 0)
    31.           table.deleteRow(r);
    32.         else
    33.           goSubmit = true;
    34.       }
    35.     }
    36.  
    37.     if(noCheked)
    38.     {
    39.       alert(msg2);
    40.       return;
    41.     }
    42.     else if(goSubmit)
    43.     {
    44.       table.parentNode.submit();
    45.     }
    46.   }
    47.   //-----------------------------------------------------------------
    48.   buttonAdd = document.querySelectorAll("input[value='Add row']")[0];
    49.   buttonAdd.addEventListener("click", addRow);
    50.   //-----------------------------------------------------------------
    51.   buttonDel = document.querySelectorAll("input[value='Delete row']")[0];
    52.   buttonDel.addEventListener("click", delRows);
    53.   //-----------------------------------------------------------------
    54. });
    tableEditor.css
    Код (CSS):
    1. table{
    2.   margin-top: 40px;
    3.   border-collapse: collapse;
    4. }
    5.  
    6. td{
    7.   padding:0 2 0 2;
    8.   text-align: center;
    9.   width: 50px;
    10. }
    11.  
    12. td + td{
    13.   width: 150px;
    14. }
    15.  
    16. input[type="text"]{
    17.   border-width:0px;
    18.   border:none;
    19. }
    20.  
    21. p input{
    22.   width: 150px;
    23.   margin: 20 20 0 20;
    24. }
    Удачи!