I have brought data from the DB to a table, I am trying to pass the ID of to a URL to be able to modify the data in another page, but when printing the data in the input it says that the variable is not defined. I am doing it with views model. I just put two data from the data edit form for simplicity.
Table
<table id="tablae" class="table table-striped table-centre table-bordered table-condensed" style="width:100%" >
<thead class="text-center">
<tr>
<th>ID</th>
<th>Incidencia</th>
<th>Usuario</th>
<th>Estado</th>
<th>Fecha de apertura</th>
<th>Departamento</th>
<th>Acciones</th>
</tr>
</thead>
<?php foreach(get_editar_incidencias($conexion) as $dato):?>
<tbody>
<tr>
<td ><?php echo $dato['id']?></td>
<td ><?php echo $dato['incidencia']?></td>
<td ><?php echo $dato['usuario']?></td>
<td ><?php echo $dato['estado']?></td>
<td ><?php echo $dato['fecha_inicio']?></td>
<td ><?php echo $dato['nom_dep']?></td>
<td ><button><a href="editar_incidencia.php?id=<?php echo $dato['id']?>">Ver</a></button></td>
</tr>
</tbody>
<?php endforeach ?>
</table>
editar_incidencia.php
<?php session_start();
if(isset($_SESSION['identificador'])){
require 'frontend/editar_incidencia-vista.php';
}else{
header ('location: login.php');
}
$id= $_GET['id'];
$sql_traer_incidencia = "SELECT incidencia.id,incidencia.incidencia,incidencia.usuario,incidencia.nom_dep,incidencia.fecha_inicio,incidencia.estado,incidencia.categoria,incidencia.usuario_resuel,incidencia.fecha_fin, usuarios.usuario,
departamento.nom_dep,estado.estado,categoria.categoria,cliente.cliente,problematica.problematica,entorno.entorno,comentario.comentario, comentario.fecha_comentario,comentario.id_usuario
FROM incidencia LEFT JOIN usuarios ON usuarios.id = incidencia.usuario LEFT JOIN usuarios AS usuarios_resuletos ON usuarios_resuletos.id =incidencia.usuario_resuel INNER JOIN departamento ON departamento.cod = incidencia.nom_dep
INNER JOIN estado ON estado.id = incidencia.estado INNER JOIN categoria ON categoria.id=incidencia.categoria INNER JOIN cliente ON cliente.id = incidencia.cliente INNER JOIN problematica ON problematica.id = incidencia.problematica
INNER JOIN entorno ON entorno.id = incidencia.entorno LEFT JOIN comentario ON comentario.id_incidencia = incidencia.id LEFT JOIN comentario AS comentario_usuario ON comentario_usuario.id = incidencia.usuario WHERE incidencia.id='$id'";
$resultado_edit_inci =$gsnet = $conexion->prepare($sql_traer_incidencia);
$resultado_edit_inci = $gsnet->execute();
$resultado_edit_inci = $gsnet->fetchAll()
?>
editar_incidencia-vista.php
<form id="formUsuarios">
<div class="modal-body">
<div class="row">
<div class="col-lg-6">
<div class="form-group">
<label for="" class="col-form-label">Incidencia</label>
<input type="text" class="form-control" id="incidencia" value="<?php echo $resultado_edit_inci['incidencia']?>" readonly>
</div>
</div>
<div class="col-lg-6">
<div class="form-group">
<label for="" class="col-form-label">Usuario solicitante</label>
<input type="text" class="form-control" name="usuario" id="usuario" value="<?php echo $resultado_edit_inci['usuario'];?>" readonly >
<input type="hidden" name="id" id="id" value="<?php echo $resultado_edit_inci['id'];?>" >
</div>
</div>
</div>
</form>
My Answer:
In your editar_incidencia.php file, you are fetching the data from the database and storing it in $resultado_edit_inci as an array of rows. So, when you try to access $resultado_edit_inci['incidencia'] in your editar_incidencia-vista.php file, it will not work because $resultado_edit_inci is an array, not a single row.
To fix this issue, you need to access the data from the correct row of the $resultado_edit_inci array. Since you are fetching only one row from the database based on the ID, you can access the data like this:
php
<input type="text" class="form-control" id="incidencia" value="<?php echo $resultado_edit_inci[0]['incidencia']?>" readonly>
<input type="text" class="form-control" name="usuario" id="usuario" value="<?php echo $resultado_edit_inci[0]['usuario'];?>" readonly >
<input type="hidden" name="id" id="id" value="<?php echo $resultado_edit_inci[0]['id'];?>" >
By accessing the data from the first row of the $resultado_edit_inci array (index 0), you should be able to display the data in your form inputs correctly.
Rate this post
4 of 5 based on 2021 votesComments