Alimentar tabela ou lista com dados BD. Alguns podem ser NULL! Ta
Olá galera do imasters e visitantes,
Não estou conseguindo alimentar minha tabela com dados do banco. Porém se eu atribuir os ID's manuais no código, ele puxa e monta certinho, responsivo bonitinho, só que pode ter campo que seja NULL e mesmo assim trazer o resultado que preciso. Porque? Seguinte:
É uma pesquisa, se eu selecionar o select do campo "Autor" e não selecionar nenhum outro campo, eu preciso retornar todos os Arquivos que pertencem aquele autor. Se eu selecionar o campo "Autor", "editora" e "disciplina" por exemplo, devo retornar todos os arquivos daquele autor, nesta editora e de determinada disciplina. O mesmo ocorre se eu preencher todos os campos!!! Devo retornar o arquivo específico com aqueles campos de busca relacionados!
O que eu fico puto é que se eu apenas alterar as variáveis no $sqlbusca por ID's, ele me tras o arquivo (preenchendo todos os ID's, não testei preenchendo só alguns, pensei nisso só agora hehe, vou testar mas enfim... ainda tenho um problema...).
Tenho o seguinte esquema (tabela) abaixo:
<table class="table table-action table-striped table-bordered table-hover table-responsive">
<thead>
<th>Nome da Obra</th>
<th>Autor</th>
<th>Tema</th>
<th>Editora</th>
<th>Disciplina</th>
<th>Palavras-Chave</th>
<th>Tipo de Arquivo</th>
</thead>
<tbody>
<input type="submit" name="btn-busca" value="Buscar">
<button name="BUSCAR"> Buscar </button>
<?php if (isset($_REQUEST['BUSCAR'])){
if (empty($_POST['id-edit'])){
$id_editora = NULL;
} else {
$id_editora = $_POST['id-edit'];
}
if (empty($_POST['id-tarq'])){
$id_tipoarquivo = NULL;
} else {
$id_tipoarquivo = $_POST['id-tarq'];
}
if (empty($_POST['id-disciplina'])){
$id_disciplina = NULL;
} else {
$id_disciplina = $_POST['id-disciplina'];
}
if (empty($_POST['id-tema'])){
$id_tema = NULL;
} else {
$id_tema = $_POST['id-tema'];
}
if (empty($_POST['id-autor'])){
$id_autor = NULL;
} else {
$id_autor = $_POST['id-autor'];
}
if (empty($_POST['id-pal-chave'])){
$id_palchave = NULL;
} else {
$id_palchave = $_POST['id-pal-chave'];
}
$sqlbusc = "SELECT * FROM `arquivos` a
INNER JOIN arquivos_has_disciplinas b ON a.ARQ_ID = b.Arquivos_ARQ_ID
INNER JOIN arquivos_has_temas c ON a.ARQ_ID = c.Arquivos_ARQ_ID
INNER JOIN autores_has_arquivos d ON a.ARQ_ID = d.Arquivos_ARQ_ID
INNER JOIN palavraschave_has_arquivos e ON a.ARQ_ID = e.Arquivos_ARQ_ID
where ( a.editoras_ideditoras = $id_editora or $id_editora is NULL )
and ( a.tipoarquivo_idtipoarquivo = $id_tipoarquivo or $id_tipoarquivo is NULL )
and ( b.Disciplinas_DIS_ID = $id_disciplina or $id_disciplina is NULL )
and ( c.Temas_TEM_ID = $id_tema or $id_tema is NULL )
and ( d.Autores_AUT_ID = $id_autor or $id_autor is NULL )
and ( e.PalavrasChave_PAL_CHA_ID = $id_palchave or $id_palchave is NULL )";
$resb = Connection::getInstance()->query($sqlbusc);
while($linha = mysqli_fetch_assoc($resb)) { ?>
<input type=HIDDEN name="endereco" value="<?php echo $linha["ARQ_CAM_ARQ"];?>">
<!--<input type="submit" value="Submit" name="submit">-->
<tr>
<td>
<center><a href="JAVASCRIPT:form_busca.submit()"><img src="img/livrob.png"><br><strong>
<?php
echo $linha["ARQ_NOME"];
?></a>
</strong></center>
</td>
<td><?php
$sqlC = "SELECT AUT_NOME FROM `autores` WHERE `AUT_ID` = $id_autor";
$queryC = Connection::getInstance()->query($sqlC);
$categoria = mysqli_fetch_assoc($queryC);
echo $categoria["AUT_NOME"];
?></td>
<td><?php echo "TAMO aqui"; ?><?php
$sqlC = "SELECT TEM_NOME FROM `temas` WHERE `TEM_ID` = $id_tema";
$queryC = Connection::getInstance()->query($sqlC);
$categoria = mysqli_fetch_assoc($queryC);
echo $categoria["TEM_NOME"];
?></td>
<td><?php
$sqlC = "SELECT EDI_NOME FROM `editoras` WHERE `EDI_ID` = $id_editora";
$queryC = Connection::getInstance()->query($sqlC);
$categoria = mysqli_fetch_assoc($queryC);
echo $categoria["EDI_NOME"];
?></td>
<td><?php
$sqlC = "SELECT DIS_NOME FROM `disciplinas` WHERE `DIS_ID` = $id_disciplina";
$queryC = Connection::getInstance()->query($sqlC);
$categoria = mysqli_fetch_assoc($queryC);
echo $categoria["DIS_NOME"];
?></td>
<td><?php
$sqlC = "SELECT PAL_CHA_NOME FROM `palavraschave` WHERE `PAL_CHA_ID` = $id_palchave";
$queryC = Connection::getInstance()->query($sqlC);
$categoria = mysqli_fetch_assoc($queryC);
echo $categoria["PAL_CHA_NOME"];
?></td>
<td><?php
$sqlC = "SELECT TIP_ARQ_NOME FROM `tipoarquivo` WHERE `TIP_ARQ_ID` = $id_tipoarquivo";
$queryC = Connection::getInstance()->query($sqlC);
$categoria = mysqli_fetch_assoc($queryC);
echo $categoria["TIP_ARQ_NOME"]; } }?></td>
</tr>
</tbody>
</table>
Se eu selecionar apenas alguns campos e por pra buscar... ele me retorna o seguinte:
Warning: mysqli_error() expects exactly 1 parameter, 0 given in C:\xampp\htdocs\portal_academico\View\conexao.php on line 44
Warning: mysqli_fetch_assoc() expects parameter 1 to be mysqli_result, boolean given in C:\xampp\htdocs\portal_academico\View\main.php on line 1158
Se eu selecionar TODOS os campos e por pra buscar... Ele não me retorna erro nenhum e também não retorna os dados do arquivo, mesmo eu selecionando os mesmos itens que eu atribuiria pelo ID manual...
Linha 40 a 47 do arquivo conexao.php: (44 é o print mysqli_error() ;)
public function query($sql)
{
if (!$this->query = mysqli_query($this->_conn,$sql))
{
print mysqli_error(); // mesmo que or die
}
return $this->query;
}
Linha 1158 do main.php
while($linha = mysqli_fetch_assoc($resb)) { ?>
O que estou fazendo de muito errado? help :\
Discussão (6)
Carregando comentários...