dimanche 22 décembre 2019

How can I make a complex checkboxes search system by making a SELECT based on checkboxes echoed as rows from a WHILE of another SELECT

I'm trying to make a checkboxes search system in which the user can filter the prayers by author, OR data, OR subjects, or that author AND that subject, etc., and then choose if the result will display only the titles, or titles + authors, etc., from the filter result.

The problem is that when I display the table authors, for example, as checkboxes, like this:

<?php

$sql = "SELECT DISTINCT autor_da_oracao FROM oracoes;";
$result = mysqli_query($conn, $sql);
$resultCheck = mysqli_num_rows($result);

if ($resultCheck > 0) {
while ($row = mysqli_fetch_assoc($result)) {

echo "

<div class='chk_class'>
<input type='checkbox' id='chk_filtrar_autor_da_oracao' name='chkfautor[]' value='".$row['autor_da_oracao']."'>
<label for='chk_filtrar_autor_da_oracao'><p>".$row['autor_da_oracao']."</p></label>
</div>

";

}}

?>

, I cannot read, in another php tag at the same document, that specific author from that specific row of the "while" command:

<?php
$sql = "SELECT * FROM oracoes WHERE autor_da_oracao = $row['autor_da_oracao'];";
(rest of php query).

It seems like with this code I cannot tell the DB that I want that specific author in that specific line turned into a checkbox.

The whole code is below (by the way, if there's an easier way to do what i'm trying, please indicate to me):

Obs.: I know the code "WHERE autor_da_oracao = $row['autor_da_oracao']" is not right, giving an error. Without it, i have working: when no checkboxes are displayed, show "título", "autor" and "oracao"; when "titulo", or "oracao", or something in the "Exibir" part of the filter menu is checked, PHP only displays what is checked; when checkbox "Tudo" is checked, it displays everything. What I cannot make work are the filters whose terms come from the database and when clicked on their respective checkboxes show all the prayers whose author is such, or whose date is such, etc.

<!--------------------MENU FILTROS-------------------->

<div class="menu_filtros" id="menu_filtros">


<!----------FILTRAR AUTOR---------->

<p2 style="margin-bottom:.5em;">Filtrar autor</p2>


<form method="post">

<div class="chks">

<?php

$sql = "SELECT DISTINCT autor_da_oracao FROM oracoes;";
$result = mysqli_query($conn, $sql);
$resultCheck = mysqli_num_rows($result);

if ($resultCheck > 0) {
while ($row = mysqli_fetch_assoc($result)) {

echo "

<div class='chk_class'>
<input type='checkbox' id='chk_filtrar_autor_da_oracao' name='chkfautor[]' 
value='".$row['autor_da_oracao']."'>
<label for='chk_filtrar_autor_da_oracao'><p>".$row['autor_da_oracao']."</p></label>
</div>

";

}}

?>

</div>

</form>


<!----------FILTRAR DATA---------->

<p2 style="margin-bottom:.5em;">Filtrar data</p2>


<form method="post">

<div class="chks">

<?php

$sql = "SELECT DISTINCT data FROM oracoes;";
$result = mysqli_query($conn, $sql);
$resultCheck = mysqli_num_rows($result);

if ($resultCheck > 0) {
while ($row = mysqli_fetch_assoc($result)) {

echo "

<div class='chk_class'>
<input type='checkbox' id='chk_filtrar_data' name='chkfdata[]' value=''>
<label for='chk_filtrar_data'><p>".$row['data']."</p></label>
</div>

";

}}

?>

</div>

</form>


<!----------FILTRAR TEMPO_LITURGICO---------->

<p2 style="margin-bottom:.5em;">Filtrar tempo litúrgico</p2>


<form method="post">

<div class="chks">

<?php

$sql = "SELECT DISTINCT tempo_liturgico FROM oracoes;";
$result = mysqli_query($conn, $sql);
$resultCheck = mysqli_num_rows($result);

if ($resultCheck > 0) {
while ($row = mysqli_fetch_assoc($result)) {

echo "

<div class='chk_class'>
<input type='checkbox' id='chk_filtrar_tempo_liturgico' name='chkftempoliturgico[]' value=''>
<label for='chk_filtrar_tempo_liturgico'><p>".$row['tempo_liturgico']."</p></label>
</div>

";

}}

?>

</div>

</form>


<!----------FILTRAR SOLENID_FESTA_MEMORIA_MESES_TEMATICOS---------->

<p2 style="margin-bottom:.5em;">Filtrar Solenidade, festa, memória, meses temáticos</p2>


<form method="post">

<div class="chks">

<?php

$sql = "SELECT DISTINCT solenid_festa_memoria_meses_tematicos FROM oracoes;";
$result = mysqli_query($conn, $sql);
$resultCheck = mysqli_num_rows($result);

if ($resultCheck > 0) {
while ($row = mysqli_fetch_assoc($result)) {

echo "

<div class='chk_class'>
<input type='checkbox' id='chk_filtrar_solenid_festa_memoria_meses_tematicos' name='chkfsolenid[]' value=''>
<label for='chk_filtrar_solenid_festa_memoria_meses_tematicos' <p>".$row['solenid_festa_memoria_meses_tematicos']."</p></label>
</div>

";

}}

?>

</div>

</form>


<!----------FILTRAR DIRIGIDA_A---------->

<p2 style="margin-bottom:.5em;">Filtrar dirigida a</p2>


<form method="post">

<div class="chks">

<?php

$sql = "SELECT DISTINCT dirigida_a FROM oracoes;";
$result = mysqli_query($conn, $sql);
$resultCheck = mysqli_num_rows($result);

if ($resultCheck > 0) {
while ($row = mysqli_fetch_assoc($result)) {

echo "

<div class='chk_class'>
<input type='checkbox' id='chk_filtrar_dirigida_a' name='chkfdirigidaa[]' value=''>
<label for='chk_filtrar_dirigida_a'><p>".$row['dirigida_a']."</p></label>
</div>

";

}}

?>

</div>

</form>


<!----------FILTRAR NATUREZA---------->

<p2 style="margin-bottom:.5em;">Filtrar natureza</p2>


<form method="post">

<div class="chks">

<?php

$sql = "SELECT DISTINCT natureza FROM oracoes;";
$result = mysqli_query($conn, $sql);
$resultCheck = mysqli_num_rows($result);

if ($resultCheck > 0) {
while ($row = mysqli_fetch_assoc($result)) {

echo "

<div class='chk_class'>
<input type='checkbox' id='chk_filtrar_natureza' name='chkfnatureza[]' value=''>
<label for='chk_filtrar_natureza'><p>".$row['natureza']."</p></label>
</div>

";

}}

?>

</div>

</form>


<!----------FILTRAR ORIGEM---------->

<p2 style="margin-bottom:.5em;">Filtrar origem</p2>


<form method="post">

<div class="chks">

<?php

$sql = "SELECT DISTINCT origem FROM oracoes;";
$result = mysqli_query($conn, $sql);
$resultCheck = mysqli_num_rows($result);

if ($resultCheck > 0) {
while ($row = mysqli_fetch_assoc($result)) {

echo "

<div class='chk_class'>
<input type='checkbox' id='chk_filtrar_origem' name='chkforigem[]' value=''>
<label for='chk_filtrar_origem'><p>".$row['origem']."</p></label>
</div>

";

}}

?>

</div>

</form>


<!----------FILTRAR ASSUNTO---------->

<p2 style="margin-bottom:.5em;">Filtrar assunto</p2>


<form method="post">

<div class="chks">

<?php

$sql = "SELECT DISTINCT assunto FROM oracoes;";
$result = mysqli_query($conn, $sql);
$resultCheck = mysqli_num_rows($result);

if ($resultCheck > 0) {
while ($row = mysqli_fetch_assoc($result)) {

$exp_assunto = explode(",", $row["assunto"]);


foreach($exp_assunto as $exp_assunto_itens) {


echo "

<div class='chk_class'>
<input type='checkbox' id='chk_filtrar_assunto' name='chkfassunto[]' value=''>
<label for='chk_filtrar_assunto'><p>".$exp_assunto_itens."</p></label>
</div>

";

}}}

?>

</div>

<!--</form>-->


<!----------EXIBIR---------->

<p2 style="margin-bottom:.5em;">Exibir</p2>


<!--<form method="post">-->

<div class="chks">

<div class="chk_class">
<input type="checkbox" id="chk_tudo" name="chk_tudo[]" value="tudo">
<label for="chk_tudo">Tudo</label>
</div>

<div class="chk_class">
<input type="checkbox" id="chk_titulo" name="chk[]" value="titulo">
<label for="chk_titulo">Título</label>
</div>

<div class="chk_class">
<input type="checkbox" id="chk_oracao_original" name="chk[]" value="oracao_original">
<label for="chk_oracao_original">Oração original</label>
</div>

<div class="chk_class">
<input type="checkbox" id="chk_obra_oracao_original" name="chk[]" value="obra_da_oracao_original">
<label for="chk_obra_oracao_original">Obra da oração original</label>
</div>

<div class="chk_class">
<input type="checkbox" id="chk_autor_oracao" name="chk[]" value="autor_da_oracao">
<label for="chk_autor_oracao">Autor da oração</label>
</div>

<div class="chk_class">
<input type="checkbox" id="chk_data" name="chk[]" value="data">
<label for="chk_data">Data</label>
</div>

<div class="chk_class">
<input type="checkbox" id="chk_local" name="chk[]" value="local">
<label for="chk_local">Local</label>
</div>

<div class="chk_class">
<input type="checkbox" id="chk_oracao_traduzida_pt" name="chk[]" value="oracao_traduzida_pt">
<label for="chk_oracao_traduzida_pt">Oração traduzida pt</label>
</div>

<div class="chk_class">
<input type="checkbox" id="chk_obra_traducao" name="chk[]" value="obra_da_traducao">
<label for="chk_obra_traducao">Obra da tradução</label>
</div>

<div class="chk_class">
<input type="checkbox" id="chk_autor_traducao" name="chk[]" value="autor_da_traducao">
<label for="chk_autor_traducao">Autor da tradução</label>
</div>

<div class="chk_class">
<input type="checkbox" id="chk_tempo_liturgico" name="chk[]" value="tempo_liturgico">
<label for="chk_tempo_liturgico">Tempo litúrgico</label>
</div>

<div class="chk_class">
<input type="checkbox" id="chk_solenid_festa_memoria_meses_tematicos" name="chk[]" value="solenid_festa_memoria_meses_tematicos">
<label for="chk_solenid_festa_memoria_meses_tematicos">Solenid, festa, mem, meses tem</label>
</div>

<div class="chk_class">
<input type="checkbox" id="chk_dirigida_a" name="chk[]" value="dirigida_a">
<label for="chk_dirigida_a">Dirigida a(à,ao)</label>
</div>

<div class="chk_class">
<input type="checkbox" id="chk_natureza" name="chk[]" value="natureza">
<label for="chk_natureza">Natureza</label>
</div>

<div class="chk_class">
<input type="checkbox" id="chk_origem" name="chk[]" value="origem">
<label for="chk_origem">Origem</label>
</div>

<div class="chk_class">
<input type="checkbox" id="chk_assuntos" name="chk[]" value="assunto">
<label for="chk_assuntos">Assuntos</label>
</div>

<div class="chk_class">
<input type="checkbox" id="chk_comentario" name="chk[]" value="comentario">
<label for="chk_comentario">Comentário</label>
</div>

</div> <!--chks-->

<div class="chks">
<input type="submit" name="exibir" value="Filtrar/Exibir" style="cursor:pointer;">
</div> <!--chks-->

</form>


<!----------PESQUISAR CONTEÚDOS---------->

<p2 style="margin-bottom:.5em;">Pesquisar conteúdos das orações</p2>


<div class="chks">
Barra de pesquisa.
</div>


</div> <!--menu_filtros-->


<!----------MAIN_EXIBIÇÃO_FILTRADOS---------->

<div class="main_exibicao_filtrados" id="main_exibicao_filtrados">


<!----------MOSTRANDO ORAÇÕES---------->

<?php


if(isset($_POST['chk_tudo'])){


if (!isset($_POST['chkfautor'], $_POST['chkfdata'], $_POST['chkftempoliturgico'], $_POST['chkfsolenid'], 
$_POST['chkfdirigidaa'], $_POST['chkfnatureza'], $_POST['chkforigem'], $_POST['chkfassunto'])) {


$sql = "SELECT * FROM oracoes;";
$result = mysqli_query($conn, $sql);
$resultCheck = mysqli_num_rows($result);

if ($resultCheck > 0) {
while ($row = mysqli_fetch_assoc($result)) {

echo "

<div class='div_oracoes'>

<div class='div_cada_oracao_titulo' id='id_cada_oracao_titulo'>
<p2>Título</p2>
<p>".$row['titulo']."</p>
</div>
<div class='div_cada_oracao' id='id_cada_oracao_oracao_original'>
<p2>Oração original</p2>
<p>".$row['oracao_original']."</p>
</div>
<div class='div_cada_oracao' id='id_cada_oracao_obra_da_oracao_original'>
<p2>Obra da oração original</p2>
<p>".$row['obra_da_oracao_original']."</p>
</div>
<div class='div_cada_oracao' id='id_cada_oracao_autor_da_oracao'>
<p2>Autor da oração</p2>
<p>".$row['autor_da_oracao']."</p>
</div>
<div class='div_cada_oracao' id='id_cada_oracao_data'>
<p2>Data provável da composição da oração</p2>
<p>".$row['data']."</p>
</div>
<div class='div_cada_oracao' id='id_cada_oracao_local'>
<p2>Local provável da composição da oração</p2>
<p>".$row['local']."</p>
</div>
<div class='div_cada_oracao' id='id_cada_oracao_oracao_traduzida_pt'>
<p2>Oração traduzida para o português</p2>
<p>".$row['oracao_traduzida_pt']."</p>
</div>
<div class='div_cada_oracao' id='id_cada_oracao_obra_da_traducao'>
<p2>Obra em que se encontra a tradução</p2>
<p>".$row['obra_da_traducao']."</p>
</div>
<div class='div_cada_oracao' id='id_cada_oracao_autor_da_traducao'>
<p2>Autor da tradução</p2>
<p>".$row['autor_da_traducao']."</p>
</div>
<div class='div_cada_oracao' id='id_cada_oracao_tempo_liturgico'>
<p2>Tempo litúrgico mais oportuno para a utilização da oração</p2>
<p>".$row['tempo_liturgico']."</p>
</div>
<div class='div_cada_oracao' id='id_cada_oracao_solenid_festa_memoria_meses_tematicos'>
<p2>Solenidade, festa, memória, meses temáticos em que a oração é cabível</p2>
<p>".$row['solenid_festa_memoria_meses_tematicos']."</p>
</div>
<div class='div_cada_oracao' id='id_cada_oracao_dirigida_a'>
<p2>Dirigida a(à,ao)</p2>
<p>".$row['dirigida_a']."</p>
</div>
<div class='div_cada_oracao' id='id_cada_oracao_natureza'>
<p2>Natureza (imprecação, louvor, etc.)</p2>
<p>".$row['natureza']."</p>
</div>
<div class='div_cada_oracao' id='id_cada_oracao_origem'>
<p2>Origem (Bíblia, tradição, etc.)</p2>
<p>".$row['origem']."</p>
</div>
<div class='div_cada_oracao' id='id_cada_oracao_assunto'>
<p2>Assuntos de que trata a oração (sofrimento, entrega total, etc.)</p2>
<p>".$row['assunto']."</p>
</div>
<div class='div_cada_oracao' id='id_cada_oracao_comentario'>
<p2>Comentário à oração</p2>
<p>".$row['comentario']."</p>
</div>

</div>

";


}}} else {


$sql = "SELECT * FROM oracoes WHERE autor_da_oracao = $row['autor_da_oracao'];";
$result = mysqli_query($conn, $sql);
$resultCheck = mysqli_num_rows($result);

if ($resultCheck > 0) {
while ($row = mysqli_fetch_assoc($result)) {

echo "

<div class='div_oracoes'>

<div class='div_cada_oracao_titulo' id='id_cada_oracao_titulo'>
<p2>Título</p2>
<p>".$row['titulo']."</p>
</div>
<div class='div_cada_oracao' id='id_cada_oracao_oracao_original'>
<p2>Oração original</p2>
<p>".$row['oracao_original']."</p>
</div>
<div class='div_cada_oracao' id='id_cada_oracao_obra_da_oracao_original'>
<p2>Obra da oração original</p2>
<p>".$row['obra_da_oracao_original']."</p>
</div>
<div class='div_cada_oracao' id='id_cada_oracao_autor_da_oracao'>
<p2>Autor da oração</p2>
<p>".$row['autor_da_oracao']."</p>
</div>
<div class='div_cada_oracao' id='id_cada_oracao_data'>
<p2>Data provável da composição da oração</p2>
<p>".$row['data']."</p>
</div>
<div class='div_cada_oracao' id='id_cada_oracao_local'>
<p2>Local provável da composição da oração</p2>
<p>".$row['local']."</p>
</div>
<div class='div_cada_oracao' id='id_cada_oracao_oracao_traduzida_pt'>
<p2>Oração traduzida para o português</p2>
<p>".$row['oracao_traduzida_pt']."</p>
</div>
<div class='div_cada_oracao' id='id_cada_oracao_obra_da_traducao'>
<p2>Obra em que se encontra a tradução</p2>
<p>".$row['obra_da_traducao']."</p>
</div>
<div class='div_cada_oracao' id='id_cada_oracao_autor_da_traducao'>
<p2>Autor da tradução</p2>
<p>".$row['autor_da_traducao']."</p>
</div>
<div class='div_cada_oracao' id='id_cada_oracao_tempo_liturgico'>
<p2>Tempo litúrgico mais oportuno para a utilização da oração</p2>
<p>".$row['tempo_liturgico']."</p>
</div>
<div class='div_cada_oracao' id='id_cada_oracao_solenid_festa_memoria_meses_tematicos'>
<p2>Solenidade, festa, memória, meses temáticos em que a oração é cabível</p2>
<p>".$row['solenid_festa_memoria_meses_tematicos']."</p>
</div>
<div class='div_cada_oracao' id='id_cada_oracao_dirigida_a'>
<p2>Dirigida a(à,ao)</p2>
<p>".$row['dirigida_a']."</p>
</div>
<div class='div_cada_oracao' id='id_cada_oracao_natureza'>
<p2>Natureza (imprecação, louvor, etc.)</p2>
<p>".$row['natureza']."</p>
</div>
<div class='div_cada_oracao' id='id_cada_oracao_origem'>
<p2>Origem (Bíblia, tradição, etc.)</p2>
<p>".$row['origem']."</p>
</div>
<div class='div_cada_oracao' id='id_cada_oracao_assunto'>
<p2>Assuntos de que trata a oração (sofrimento, entrega total, etc.)</p2>
<p>".$row['assunto']."</p>
</div>
<div class='div_cada_oracao' id='id_cada_oracao_comentario'>
<p2>Comentário à oração</p2>
<p>".$row['comentario']."</p>
</div>

</div>

";

}}}

} else if(isset($_POST['chk'])){


$chk1 = $_POST['chk'];
$chk2 = implode(',',$chk1);

$sql = "SELECT $chk2 FROM oracoes;";
$result = mysqli_query($conn, $sql);
$resultCheck = mysqli_num_rows($result);

if ($resultCheck > 0) {
while ($row = mysqli_fetch_assoc($result)) {

echo "

<div class='div_oracoes'>

";

if (strpos($chk2, 'titulo') !== false) {

echo "

<div class='div_cada_oracao_titulo' id='id_cada_oracao_titulo'>
<p2>Título</p2>
<p>".$row['titulo']."</p>
</div>

";}

if (strpos($chk2, 'oracao_original') !== false) {

echo "

<div class='div_cada_oracao' id='id_cada_oracao_oracao_original'>
<p2>Oração original</p2>
<p>".$row['oracao_original']."</p>
</div>

";}

if (strpos($chk2, 'obra_da_oracao_original') !== false) {

echo "

<div class='div_cada_oracao' id='id_cada_oracao_obra_da_oracao_original'>
<p2>Obra da oração original</p2>
<p>".$row['obra_da_oracao_original']."</p>
</div>

";}


if (strpos($chk2, 'autor_da_oracao') !== false) {

echo "

<div class='div_cada_oracao' id='id_cada_oracao_autor_da_oracao'>
<p2>Autor da oração</p2>
<p>".$row['autor_da_oracao']."</p>
</div>

";}


if (strpos($chk2, 'data') !== false) {

echo "

<div class='div_cada_oracao' id='id_cada_oracao_data'>
<p2>Data provável da composição da oração</p2>
<p>".$row['data']."</p>
</div>

";}


if (strpos($chk2, 'local') !== false) {

echo "

<div class='div_cada_oracao' id='id_cada_oracao_local'>
<p2>Local provável da composição da oração</p2>
<p>".$row['local']."</p>
</div>

";}


if (strpos($chk2, 'oracao_traduzida_pt') !== false) {

echo "

<div class='div_cada_oracao' id='id_cada_oracao_oracao_traduzida_pt'>
<p2>Oração traduzida para o português</p2>
<p>".$row['oracao_traduzida_pt']."</p>
</div>

";}


if (strpos($chk2, 'obra_da_traducao') !== false) {

echo "

<div class='div_cada_oracao' id='id_cada_oracao_obra_da_traducao'>
<p2>Obra em que se encontra a tradução</p2>
<p>".$row['obra_da_traducao']."</p>
</div>

";}


if (strpos($chk2, 'autor_da_traducao') !== false) {

echo "

<div class='div_cada_oracao' id='id_cada_oracao_autor_da_traducao'>
<p2>Autor da tradução</p2>
<p>".$row['autor_da_traducao']."</p>
</div>

";}


if (strpos($chk2, 'tempo_liturgico') !== false) {

echo "

<div class='div_cada_oracao' id='id_cada_oracao_tempo_liturgico'>
<p2>Tempo litúrgico mais oportuno para a utilização da oração</p2>
<p>".$row['tempo_liturgico']."</p>
</div>

";}


if (strpos($chk2, 'solenid_festa_memoria_meses_tematicos') !== false) {

echo "

<div class='div_cada_oracao' id='id_cada_oracao_solenid_festa_memoria_meses_tematicos'>
<p2>Solenidade, festa, memória, meses temáticos em que a oração é cabível</p2>
<p>".$row['solenid_festa_memoria_meses_tematicos']."</p>
</div>

";}


if (strpos($chk2, 'dirigida_a') !== false) {

echo "

<div class='div_cada_oracao' id='id_cada_oracao_dirigida_a'>
<p2>Dirigida a(à,ao)</p2>
<p>".$row['dirigida_a']."</p>
</div>

";}


if (strpos($chk2, 'natureza') !== false) {

echo "

<div class='div_cada_oracao' id='id_cada_oracao_natureza'>
<p2>Natureza (imprecação, louvor, etc.)</p2>
<p>".$row['natureza']."</p>
</div>

";}


if (strpos($chk2, 'origem') !== false) {

echo "

<div class='div_cada_oracao' id='id_cada_oracao_origem'>
<p2>Origem (Bíblia, tradição, etc.)</p2>
<p>".$row['origem']."</p>
</div>

";}


if (strpos($chk2, 'assunto') !== false) {

echo "

<div class='div_cada_oracao' id='id_cada_oracao_assunto'>
<p2>Assuntos de que trata a oração (sofrimento, entrega total, etc.)</p2>
<p>".$row['assunto']."</p>
</div>

";}


if (strpos($chk2, 'comentario') !== false) {

echo "

<div class='div_cada_oracao' id='id_cada_oracao_comentario'>
<p2>Comentário à oração</p2>
<p>".$row['comentario']."</p>
</div>

";}

echo "
</div>
";

}}} else {

$sql = "SELECT titulo, autor_da_oracao, oracao_traduzida_pt FROM oracoes;";
$result = mysqli_query($conn, $sql);
$resultCheck = mysqli_num_rows($result);

if ($resultCheck > 0) {
while ($row = mysqli_fetch_assoc($result)) {

echo "

<div class='div_oracoes'>

<div class='div_cada_oracao_titulo' id='id_cada_oracao_titulo'>
<p2>Título</p2>
<p>".$row['titulo']."</p>
</div>

<div class='div_cada_oracao' id='id_cada_oracao_autor_da_oracao'>
<p2>Autor da oração</p2>
<p>".$row['autor_da_oracao']."</p>
</div>

<div class='div_cada_oracao' id='id_cada_oracao_oracao_traduzida_pt'>
<p2>Oração traduzida para o português</p2>
<p>".$row['oracao_traduzida_pt']."</p>
</div>

</div>

";

}}}

?>


</div> <!--main_exibicao_filtrados-->

The filter menu is like the image attached, so it can help to get the idea.

Print from filter menu




Aucun commentaire:

Enregistrer un commentaire