Есть много жизнеспособных подходов. Самое простое из того, что я могу построить на основе вашего кода, выглядит примерно так:
<script>
function deleterow(rowid)
{
var f = document.forms['theform'];
f.rowid.value = rowid;
f.submit();
}
</script>
<form name="theform" method="post">
<input type="hidden" name="rowid"/>
<input type="hidden" name="action" value="deleterow"/>
</form>
Затем в своем бэкэнд-коде PHP отметьте $_POST["action"]
для «deleteterow» и выполните SQL delete, получив значение из $_POST["rowid"]
- убедитесь, что правильно экранировали его, чтобы избежать внедрения SQL.
Более элегантный подход, который позволил бы избежать перезагрузки страницы и повторного рендеринга HTML, состоял бы в том, чтобы выполнить AJAX-вызов для бэкэнда, но это требует больше работы. Если это простое приложение, которое никогда не будет иметь более 100 или около того строк на странице, которое никогда не будет использоваться более чем двумя пользователями, то это, вероятно, более хлопотно, чем стоит.
Убедитесь, что вы понимаете, как PHP взаимодействует с HTML / Javascript. PHP выполняется на сервере. HTML визуализируется, а Javascript выполняется на клиенте. То, что вы делаете, когда пишете PHP, это отправка HTML / Javascript клиенту для рендеринга / выполнения. Затем, когда ваш клиент отправляет форму, PHP выполняется на сервере для обработки отправки. Это PHP на сервере, который общается с базой данных. Так что в вашем PHP-коде у вас должно быть что-то вроде этого:
function handle_action()
{
$action = isset($_POST["action"]) ? $_POST["action"] : "";
switch ($_POST["action"])
{
case "deleterow":
handle_delete();
load_data();
break;
default:
load_data();
}
}
function handle_delete()
{
$rowid = isset($_POST["rowid"]) ? $_POST["rowid"] : "";
if (!$rowid) return;
mysqli_query("delete from sms_admins where identity = '".
mysqli_escape_string($rowid)."'");
}
function load_data()
{
// put everything in your example here except for mysqli_connect
}
$con=mysqli_connect("","","","");
// Check connection
if (mysqli_connect_errno())
{
echo "Error " . mysqli_connect_error();
}
handle_action();