Tenho um problema, quero fazer alterações em uma tabela de banco de dados de um determinado usuário. Consegui fazer isso abrindo outra página.
<td><a href="includes/update.php?id=<? echo $user['id']?>" class="edit">Edit href</a></td>
A página será aberta da seguinte forma código da página img
Mas pela janela modal, quando tento abrir os dados, recebo uma mensagem de erro: Aviso: Chave de array indefinida "id" em C:\Program Files\Ampps\www\admin\index.php na linha 182
<td><button tupe="hidden" name="user_id" onclick="window.myDialog.showModal()" value="<? echo $user['id']?>" class="regbtn">Edit modal</button></td>
</tr>
<?
}
?>
</tbody>
</table>
<div class="left">
<dialog id="myDialog" class="modal">
<div class="reg-form">
<h6>Change the data</h6>
<button onclick="closeDialog()">x</button>
<script>
var x = document.getElementById("myDialog");
function showDialog() {
x.show();
}
function closeDialog() {
x.close();
}
</script>
<form method="POST">
<?
$id = $_GET['id'];
$query = mysqli_query($connect, query: "SELECT * from `users` where ID='$id'");
while($row = mysqli_fetch_array($query)) {
?>
<div class="reg-box">
<input type="text" value="<? echo $row["lastname"]?>" name="lastname" placeholder="Last Name">
</div>
<div class="reg-box">
<input type="text" value="<? echo $row["name"]?>" name="name" placeholder="Name">
</div>
<div class="reg-box">
<input type="text" value="<? echo $row["fathername"]?>" name="fathername" placeholder="Father Name">
</div>
<div class="reg-box">
<input type="number" value="<? echo $row["code"]?>" name="code" placeholder="Code">
</div>
<div class="reg-box">
<input type="text" value="<? echo $row["username"]?>" name="username" placeholder="Login">
</div>
<div class="reg-box">
<input type="number" value="<? echo $row["password"]?>" name="password" placeholder="Password">
</div>
<? } ?>
<button tupe="reg" class="btn">Edit</button>
</form>
</div>
<style type="text/css">
dialog {
margin-inline: auto;
margin-block-start: 120px;
background: transparent;
box-shadow: 0 0 10px rgba(0, 0, 0, 0.211);
border: none;
border-radius: 1rem;
}
dialog::backdrop {
background-color: rgba(0, 0, 0, 0.2);
}
</style>
</dialog>
</div>
</div>
você está definindo o valor do botão para o ID do usuário, mas não o passando para o php ao mostrar o modal. basicamente quando você clica no botão "Editar modal" no seu código de referência a seguir
Seu modal tenta obter o ID do usuário da URL porque você adicionou $id = $_GET['id']; no seu código de referência a seguir.
você não definiu $_GET['id']; também não está redirecionando a página, não está abrindo uma nova página com o parâmetro $id=?. você está apenas abrindo uma janela pop-up (modal). Isso significa que $_GET['id'] está vazio, e o PHP lança este aviso
Tente obter dados do usuário com PHP dentro do modal usando JavaScript ou JQuery. Você pode usar atributos de dados no botão para passar dados de informações do usuário. Para mais clareza, você pode ler Atributos de dados HTML5 e como eles funcionam.
Você também precisa adicionar um campo oculto na tag do seu formulário
use o jquery para obter os dados e exibi-los no modal
Se você usou js ou jquery, não precisa usar $_GET['id'] para obter os dados do usuário