У меня проблемы с таблицей, я не могу использовать 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"> на кнопку, и она по-прежнему делает то же самое. У тебя есть идеи, что мне делать дальше? я везде искал, как это сделать без js :(
<button type = "submit">
почти такие же, как <input type = "submit">
... Как предполагает @Blazemonger, это, к сожалению, нельзя сделать только с помощью PHP и HTML. «PHP может вносить изменения только на стороне сервера», другими словами, все, что PHP echo
es не может быть изменено впоследствии, например, то, что вы сказали вслух, не может быть изменено впоследствии. Вы видите то, что PHP уже поддерживает echo
, и это нельзя изменить, если вы не используете javascript :(
К сожалению, это имеет смысл :( Спасибо за объяснение
Почему вы не можете использовать JavaScript?
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";
Именно это и должен делать предполагаемый
input type = "submit"
. PHP может вносить изменения только на стороне сервера. Как вы уже догадались, единственный способ получить то, что вы есть, - использовать JavaScript.