Child row with another table mysql - relationship with id master table
Child row with another table mysql - relationship with id master table
Hello,
This is my first development in PHP and I need help to develop a datatable that I need to connect with a another table. Below the main page with the main and child table:
Main Table Projetos:

Child Table prj_tasks

<?php $pag = 'projetos'; @session_start(); require_once("../conexao.php"); require_once('verificar-permissao.php'); if (!isset($_SESSION['usuario_usuario'])) { header("Location:../index.php"); exit(); } ?> <a href="index.php?pagina=<?php echo $pag ?>&funcao=novo" type="button" class="btn btn-secondary mt-2">Novo projeto</a> <?php $query = $pdo->query("SELECT * FROM projetos ORDER BY status asc"); $res = $query->fetchAll(PDO::FETCH_ASSOC); $total_reg = @count($res); if ($total_reg > 0) { ?> <div class="mt-4" style="margin-right:25px"> <small> <table id="example" class="table table-striped my-2" style="width:100%"> <thead> <tr> <th></th> <th>PPM</th> <th>Nome</th> <th>Status</th> <th>Previsto</th> <th>Realizado</th> <th>Ações</th> </tr> </thead> <tbody> <?php for ($i = 0; $i < $total_reg; $i++) { foreach ($res[$i] as $key => $value) { } ?> <tr> <td></td> <td><?php echo $res[$i]['ppm'] ?></td> <td><?php echo $res[$i]['nome'] ?></td> <td><?php echo $res[$i]['Status'] ?></td> <td>Previsto###</td> <td>Realizado</td> <td> <a href="index.php?pagina=<?php echo $pag ?>&funcao=editar&id=<?php echo $res[$i]['id'] ?>" title="Editar registro"> <i class="bi bi-pencil-square text-primary" style="font-size: 1.3rem;"></i></a> <a href="index.php?pagina=<?php echo $pag ?>&funcao=deletar&id=<?php echo $res[$i]['id'] ?>" title="Excluir registro"> <i class="bi bi-trash text-danger mx-2" style="font-size: 1.3rem;"></i></a> </td> <?php } ?> </tbody> </table> </small> <?php } else { echo "Não existe dados para serem exibidos !!"; } ?> </div> Below de JSON with datas of prj_task.
<?php require_once("../../conexao.php"); @session_start(); $query_con_past = $pdo->prepare("select * from prj_task order by id_projeto, prioridade asc"); $query_con_past->execute(); $res_con_past = $query_con_past->fetchAll(PDO::FETCH_ASSOC); $total_reg = count($res_con_past); for ($i = 0; $i < $total_reg; $i++) { foreach ($res_con_past[$i] as $key => $value) { } $data[] =array( $res_con_past[$i]['id'], $res_con_past[$i]['descricao'], $res_con_past[$i]['percentual'], $res_con_past[$i]['data_inicio'], $res_con_past[$i]['data_fim'], $res_con_past[$i]['prioridade'], $res_con_past[$i]['id_projeto']); } echo json_encode($data); ?> I tried to use tis example, but a I can't
https://datatables.net/examples/api/row_details.html
Now, I need show de child (prj_tasks table) below each projeto. How Can I do?
This question has an accepted answers - jump to answer
This discussion has been closed.
Answers
Are you getting an error or something else? That is certainly the example to start with. Then create a
<table>in the child row and initialise it as a DataTable.Allan
That confused me, too. The child rows of the example don't have much in common with the parent - child relationship (1: N) in a relational data model.
I see you have projects and those projects have tasks. Strictly hierarchical. A task can only belong to one project and it cannot exist without a project. No link table required.
Take a look at this please: (Parent: sites, child: users)
https://datatables.net/blog/2016-03-25#DataTables-Javascript
https://editor.datatables.net/examples/advanced/parentChild
You can also do parent / child editing in a child row:
https://datatables.net/blog/2019-01-11
I think this link really has all you need. If you're not using Editor just skip that part.
https://datatables.net/blog/2019-01-11
Allan,
Do you have some example? Do you have step-by-step?
I read the article, but I didn't understand.
Taking your first example, you would need to make another server-side call using ajax in that
format()function to get the data for that child table, then as Allan said, create that table with the returned data.Colin