Как я могу получить идентификатор базы данных, которую я выбрал в своей таблице? (ПДО)

Я сделал таблицу, которая заполняется базой данных SQL. С помощью CSS я сделал это так, когда я наведу курсор мыши на строку таблицы, она будет выделена. Когда я щелкаю строку таблицы (запись), я хочу получить идентификатор этой записи и поместить его в переменную, которую я могу использовать для обновления записи или ее удаления.

echo "<table>";

echo "<tr>";
echo "<th>".'ID'."</th>";
echo "<th>".'Username'."</th>";
echo "<th>".'Name'."</th>";
echo "<th>".'Role'."</th>";
echo "</tr>";
foreach($result as $pers)
{
echo "<tr>";
echo "<td>".$pers->id."</td>
<td>".$pers->username."</td>
<td>".$pers->name."</td>
td>".$pers->role."</td>";
echo "</tr>";
}
echo "</table>";

Выше вы можете увидеть код, который создает таблицу, и она работает, мне просто нужен способ получить идентификатор.

-1

Решение

Я думаю, что лучшая практика это:
присвоить атрибут данных элементу tr:

echo "<tr data-id='".$pers->id."'>";
...
echo "</tr>";

после того, как вы можете получить идентификатор на клик:

$( "tr" ).click(function() {
var id = $(this).attr('data-id');
})
1

Другие решения

Надеюсь это поможет. При нажатии он отправит идентификатор на консоль. Документация в исходном коде.

/* Put all rows in an array */
const rows = [...document.getElementsByTagName("tr")];
/* Assign event listener to each row */
rows.map(row => row.addEventListener("click", () => {
/* Return the first element */
const id = row.querySelector("td");
console.log(id.textContent);
}));
tr:hover {
background-color: yellow;
}
<table>
<tr>
<td>1</td>
<td>User name 1</td>
<td>Name 1</td>
<td>Role 1</td>
</tr>
<tr>
<td>2</td>
<td>User name 2</td>
<td>Name 2</td>
<td>Role 2</td>
</tr>
<tr>
<td>3</td>
<td>User name 3</td>
<td>Name 3</td>
<td>Role 3</td>
</tr>
</table>
0

Для использования данных JS в PHP вы можете использовать ajax-вызов Jquery.

$( "tr" ).click(function() {
var id = $(this).first("td").html(); // now you have it in JS available
$.ajax({
url: "yourfile.php", // you can also send it to the php file that updates or deletes the record
data: {"id": id},
type: 'POST',
success : function(data) { }
});
});

Тогда ваш код PHP:

<?php
if(isset($_POST['id'])){
// session id now has your selected id as value.
$_SESSION['id'] = $_POST['id'];
}
else{
unset($_SESSION['id']); // unset session id every time the page reloads
echo "<table>";
echo "<tr>";
echo "<th>".'ID'."</th>";
echo "<th>".'Username'."</th>";
echo "<th>".'Name'."</th>";
echo "<th>".'Role'."</th>";
echo "</tr>";
foreach($result as $pers)
{
echo "<tr>";
echo "<td>".$pers->id."</td>
<td>".$pers->username."</td>
<td>".$pers->name."</td>
<td>".$pers->role."</td>";
echo "</tr>";
}
echo "</table>";
}

Затем, когда вы обновляете строку в вашей БД, у вас есть доступ к $_SESSION['id'] так как он меняется каждый раз, когда вы нажимаете на tr,

0
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector