PHP PDO Ajax CRUD com INNER JOIN
Olá a todos, tudo bem?
É a minha primeira vez aqui no fórum e gostaria de aproveitar esta oportunidade para poder tirar uma dúvida que tenho. Estou desenvolvendo um projeto em PHP PDO onde o mesmo possui uma tabela onde adiciono, leio, edito e deleto (CRUD). O meu desenvolvimento esta sendo baseado neste exemplo CRUD.
No exemplo citado, estou tentando fazer com que uma coluna FK (Foreing Key) dentro de uma tabela html com plugin DataTable localizada na página index.php mostre o nome do Foreing Key ao invés de mostrar o número ID.
Abaixo segue um link onde mostro um rascunho que estou trabalhando baseado no exemplo citado acima: Rascunho CRUD.
Este CRUD possui a seguinte estrutura:
1. Tabela users:
/monthly_2018_09/image.png.f6e4ab082e010442cd9f2bc1814ea564.png" />
2. Tabela tipo_ps:
/monthly_2018_09/image.png.df1d0c7c17fb65c9d49928e9d0ec628b.png" />
3. Relacionamento entre a tabela users e a tabela tipo_ps:
/monthly_2018_09/image.png.0d74a97d839e928ea78fb66f0d87a265.png" />
4. Um arquivo chamado fetch.php onde o mesmo é responsável por "juntar" todos os dados da tabela MySql users e mostra-las na tabela html localizada na página index.php.
<?php
include('db.php');
include('function.php');
$query = '';
$output = array();
$query .= "SELECT users.*, tipo_ps.tipo
FROM users
INNER JOIN tipo_ps ON users.tipo_fk = tipo_ps.tipo_id; ";
if(isset($_POST["search"]["value"]))
{
$query .= 'WHERE first_name LIKE "%'.$_POST["search"]["value"].'%" ';
$query .= 'OR last_name LIKE "%'.$_POST["search"]["value"].'%" ';
}
if(isset($_POST["order"]))
{
$query .= 'ORDER BY '.$_POST['order']['0']['column'].' '.$_POST['order']['0']['dir'].' ';
}
else
{
$query .= 'ORDER BY id DESC ';
}
if($_POST["length"] != -1)
{
$query .= 'LIMIT ' . $_POST['start'] . ', ' . $_POST['length'];
}
$statement = $connection->prepare($query);
$statement->execute();
$result = $statement->fetchAll();
$data = array();
$filtered_rows = $statement->rowCount();
foreach($result as $row)
{
$image = '';
if($row["image"] != '')
{
$image = '<img src="upload/'.$row["image"].'" class="img-thumbnail" width="50" height="35" />';
}
else
{
$image = '';
}
$sub_array = array();
$sub_array[] = $image;
$sub_array[] = $row["first_name"];
$sub_array[] = $row["last_name"];
$sub_array[] = $row["tipo_fk"];
$sub_array[] = '<button type="button" name="update" id="'.$row["id"].'" class="btn btn-warning btn-xs update">Update</button>';
$sub_array[] = '<button type="button" name="delete" id="'.$row["id"].'" class="btn btn-danger btn-xs delete">Delete</button>';
$data[] = $sub_array;
}
$output = array(
"draw" => intval($_POST["draw"]),
"recordsTotal" => $filtered_rows,
"recordsFiltered" => get_total_all_records(),
"data" => $data
);
echo json_encode($output);
?>
Dentro deste arquivo **fetch.php** contém uma query sql **INNER JOIN** ao qual eu uso para que a mesma selecione os dados na tabela users e tipo_ps e mostre o nome do ítem ao invés do ID do mesmo:
SELECT users.*, tipo_ps.tipo
FROM users
INNER JOIN tipo_ps ON users.tipo_fk = tipo_ps.tipo_id;
Também, no arquivo fetch.php, apenas adicionei um sub array que corresponde a coluna FK "tipo_fk":
$sub_array = array();
$sub_array[] = $image;
$sub_array[] = $row["first_name"];
$sub_array[] = $row["last_name"];
$sub_array[] = $row["tipo_fk"];
$sub_array[] = '<button type="button" name="update" id="'.$row["id"].'" class="btn btn-warning btn-xs update">Update</button>';
$sub_array[] = '<button type="button" name="delete" id="'.$row["id"].'" class="btn btn-danger btn-xs delete">Delete</button>';
$data[] = $sub_array;
Após eu ter inserido esta sub array dentro do arquivo fetch.php, é mostrado na tabela html na página index.php a ID da coluna relacionada **tipo_fk **([Rascunho CRUD)](https://clickmarica.com.br/crud/)porém quando substituo tipo_fk dentro do arquivo fetch.php por apenas **tipo *****$sub_array[] = $row["tipo"];*****, **é me retornado um ***DataTable Error Mesage. Invalid JSON response**. *
No caso acredito que a query INNER JOIN que inseri esta correta porém não estou conseguindo identificar onde devo alterar dentro do arquivo fetch.php. Eu devo mudar o código PHP PDO no arquivo fetch.php?
Desde já agradeço a atenção de todos. Obrigado.Discussão (3)
Carregando comentários...