Таблица PHP, для добавления, удаления и редактирования строк

У меня проблемы с таблицей, я не могу использовать Javascript (что, я знаю, было бы проще). Я могу использовать только HTML, PHP и CSS. Это мой код, который у меня есть на данный момент. Мне нужно решить следующие проблемы:

  • Я могу добавлять строки, удалять и редактировать их с помощью contenteditable, однако моя проблема в том, что каждый раз, когда я добавляю строку или удаляю ее, обновляется вся страница. Как я могу исправить эту проблему?

  • Также, если есть способ иметь кнопку редактирования вместо моего conteneditable метода.

Вот мой код:

input {
        display: block;   /* makes one <input> per line */
        width: 150px;
}
<?php
   if ( isset( $_REQUEST["btnadd"]) == "ADD") {
       // add 1 to the row counter
       if (isset($_REQUEST['count'])) $count = $_REQUEST['count'] + 1;
       // set value for first load
       else $count = 1;
   }

   if ( isset( $_REQUEST["btnremove"]) == "REMOVE") {
   // decrement the row counter
       $count = $_REQUEST['count'] - 1;
       // set minimum row number
       if ($count < 1) $count = 1;
   }
?>
<form name = "form1">
   <table class = "table table-bordered table-striped table-hover text-center" align='center'>
       <tr>
           <th align = "center">Name</th>
           <th>Start </th>
           <th>Size</th>
           <th>First Condition</th>
           <th>Second Conditon</th>
           <th><input type = "submit" name = "btnadd" id = "btnadd" value = "ADD" align='center'></th>
       </tr>
<?php
// print $count rows
for ($i=1; $i<=$count; $i++) {
echo ' <tr>
          <td contenteditable = "true"></td>
          <td contenteditable = "true"></td>
          <td contenteditable = "true"></td>
          <td contenteditable = "true"></td>
          <td contenteditable = "true"></td>
          <td> <input type = "submit" name = "btnremove" id = "btnremove" value = "REMOVE"></td>
      </tr>
';
}
?>
   </table>
   <input type = "hidden" name = "count" value = "<?php echo $count; ?>">
</form>

Именно это и должен делать предполагаемыйinput type = "submit". PHP может вносить изменения только на стороне сервера. Как вы уже догадались, единственный способ получить то, что вы есть, - использовать JavaScript.

Blazemonger 01.05.2018 18:14

Я просто перешел с <input type = "submit"> на кнопку, и она по-прежнему делает то же самое. У тебя есть идеи, что мне делать дальше? я везде искал, как это сделать без js :(

iz_anne 01.05.2018 18:31
<button type = "submit"> почти такие же, как <input type = "submit"> ... Как предполагает @Blazemonger, это, к сожалению, нельзя сделать только с помощью PHP и HTML. «PHP может вносить изменения только на стороне сервера», другими словами, все, что PHP echoes не может быть изменено впоследствии, например, то, что вы сказали вслух, не может быть изменено впоследствии. Вы видите то, что PHP уже поддерживает echo, и это нельзя изменить, если вы не используете javascript :(
Collapsed PLUG 01.05.2018 19:06

К сожалению, это имеет смысл :( Спасибо за объяснение

iz_anne 01.05.2018 19:31

Почему вы не можете использовать JavaScript?

Matthew Goheen 01.05.2018 22:09
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
5
57
1

Ответы 1

every time I add a row or remove one, it refreshes the whole page. How can I fix this issue?

Без Javascript это невозможно.

if there is a way to have an edit button instead of my conteneditable method

Довольно сложно предложить, каким должен быть ваш код, поскольку вы не предлагаете описания того, для чего он предназначен, кроме кода, который не делает то, что вы хотите. Я думаю, вы имеете в виду что-то вроде:

<?php
$width=5;
$data=isset($_REQUEST['data']) ? $_REQUEST['data'] : array();
$count=count($data);
if (isset($_REQUEST['delete'])) {
  foreach ($_REQUEST['delete'] as $i) {
    unset($data[$i]);
  }
}
$data=array_values($data);
if ( isset( $_REQUEST["btnadd"]) == "ADD") {
   // add 1 to the row counter
   $data[]=array();
}
...
foreach ($data as $i=>$row) {
   print "<tr>\n";
   for ($x=0; $x<$width; $x++) {
      @print "<td><input type='text' name='data[$i][$x]'></td>\n";
   }
   print "<td><input type='checkbox' name='delete[]' value='$i'>";
   print "</tr>\n";
}
print "<tr>
 <td colspan='$width'>
 <input type = "submit" name = "btnadd" id = "btnadd" value = "Add">
 </td>
 </tr>\n";

Другие вопросы по теме