Gostaria de fazer um sistema onde clicássemos numa letra e direcionasse para minha index.php
e aparecesse a table com os dados que comessem com a letra clicada.
Primeiro teria uma opção para selecionar a coluna da tabela(MySQL) para procurar:
<div class="op">
<select name="opcao_filtro" class="form-control" style="width:150px;">
<option value="nulo">--</option>
<option value="titulo">Título</option>
<option value="autor">Autor</option>
<option value="tema">Tema</option>
<option value="editora">Editora</option>
<option value="indice">Índice</option>
</select>
</div>
Depois há as Letras:
<a href="url">A</a>
<a href="url">B</a>
<a href="url">C</a>
Crie um formulário de pesquisa da seguinte forma:
<form action="index.php" method="post">
<div class="op">
<select name="opcao_filtro" class="form-control" style="width:150px;">
<option value="nulo">--</option>
<option value="titulo">Título</option>
<option value="autor">Autor</option>
<option value="tema">Tema</option>
<option value="editora">Editora</option>
<option value="indice">Índice</option>
</select>
</div>
<div>
<input type="text" name="opcao_letra" />
</div>
<button type="submit">Enviar Pesquisa</button>
</form>
Ao escolher a opção e digitar na caixa de texto clique no botão e no servidor vai receber duas variáveis:
<?php
$letra = $_POST['opcao_letra'];
$filtro = $_POST['opcao_filtro'];
Isso é um exemplo simples, porque, falta embasamento no seu questionário.
Não é possível fazer com <a href>
?
Dá também, mas, teria que criar uma forma com Javascript, mas, basicamente é:
<a href="index.php?opcao_letra=A&opcao_filtro=titulo">A</a>
mas, dessa forma seria inviável, teria mesmo de proporcionar um algo dinâmico.
Eu prefiro com post mas, nada impede ser com get! Falta contexto na sua pergunta
É que não tenho nenhum exemplo melhor para dar, sou novo em PHP e JavaScript, talvez pode ser que até por estar faltando o “contexto” no meu código xd
1 curtida
Então se pode estar pulando estapa!
Tipo estudar html, css e javascript e depois uma programação Server Side. A programação Web é muito complexa e precisa de um tempo hábil para desenvolvimento… Comece sempre do mais básico para o mais avançado é uma dica.
Eu sei que não é fácil e faculdade realmente não prepara ninguém para o mercado de trabalho, tem que buscar fora! Eu te compreendo.
E se eu colocar 2 opções, colocar um input para buscar por palavras (“exemplo: no meio do título, começo ou fim”) e um outro input para buscar pela primeira palavra/letra?
Encontrei esse tópico onde apresenta a função LIKE, achei que daria pra fazer algo do tipo.
Coloquei o formulário em um Collapse(antes em outra página) achei que ficaria mais fácil na hora de exibir o resultado.
Dragoon
Julho 25, 2018, 12:48pm
#10
Andre_Lira:
E se eu colocar 2 opções, colocar um input para buscar por palavras (“exemplo: no meio do título, começo ou fim”) e um outro input para buscar pela primeira palavra/letra?
Encontrei esse tópico onde apresenta a função LIKE, achei que daria pra fazer algo do tipo.
Coloquei o formulário em um Collapse(antes em outra página) achei que ficaria mais fácil na hora de exibir o resultado.
E se você colocar um input do tipo text e um 2 radio para definir a pesquisa? tudo isso em um form com a requisição post!
Veja tem que usar um form
por vários motivos um é segurança (não é segurança logo de cara mas, vai ajudar na segurança)!
Ficou assim:
<div class="row">
<div class="col">
<div class="collapse multi-collapse" id="form-busca">
<div class="card card-body">
<form class="form-horizontal" method="POST" action="search.php" method="post">
<div class="custom-control custom-radio">
<p>
<input type="radio" id="radiotitulo" name="radio-stacked" value="titulo" required> Título</input>
</p>
<p>
<input type="radio" id="radioautor" name="radio-stacked" value="autor" required> Autor</input>
</p>
<p>
<input type="radio" id="radiotema" name="radio-stacked" value="tema" required> Tema</input>
</p>
<p>
<input type="radio" id="radioeditora" name="radio-stacked" value="editora" required> Editora</input>
</p>
<p>
<input type="radio" id="radioindice" name="radio-stacked" value="indice" required> Índice</input>
</p>
</div>
<br/>
<table>
<tr>
<td>
<input type="search" class="form-control" name="busca" id="busca" placeholder="Busca" style="width:200px; float:left;" autocomplete="off">
</td>
</tr>
</table>
<br />
<table>
<tr>
<td>
<a href="Busca/A.php">A</a>
<a href="url">B</a>
<a href="url">C</a>
...
</td>
</tr>
</table>
</form>
</div>
</div>
</div>
</div>
Andre_Lira:
form-horizontal
é isso que você não deve estar entendo não precisa do link ali não tem necessidade porque você vai utilizar outro tipo de verb
(que no caso é POST
), então seria:
Html
<div class="row">
<div class="col">
<div class="collapse multi-collapse" id="form-busca">
<div class="card card-body">
<form class="form-horizontal" method="POST" action="search.php" method="post">
<div class="custom-control custom-radio">
<p>
<input type="radio" id="radiotitulo" name="radiostacked" value="titulo" required> Título</input>
</p>
<p>
<input type="radio" id="radioautor" name="radiostacked" value="autor" required> Autor</input>
</p>
<p>
<input type="radio" id="radiotema" name="radiostacked" value="tema" required> Tema</input>
</p>
<p>
<input type="radio" id="radioeditora" name="radiostacked" value="editora" required> Editora</input>
</p>
<p>
<input type="radio" id="radioindice" name="radiostacked" value="indice" required> Índice</input>
</p>
</div>
<br />
<table>
<tr>
<td>
<input type="search" class="form-control" name="busca" id="busca" placeholder="Busca" style="width:200px; float:left;" autocomplete="off">
</td>
</tr>
</table>
<br />
<table>
<tr>
<td>
<select class="form-control" name="stexto">
<option value="">Selecione a letra ...</option>
<option value="A">A</option>
<option value="B">B</option>
<option value="C">C</option>
</select>
</td>
</tr>
</table>
<br />
<table>
<tr>
<td>
<button type="submit" class="btn btn-success">Enviar</button>
</td>
</tr>
</table>
</form>
</div>
</div>
</div>
</div>
PHP arquivo search.php
<?php
$radiostacked = $_POST['radiostacked'];
$stexto = $_POST['stexto'];
$busca = $_POST['busca'];
// aqui em diante trabalhe com a informação
Observação:
Não coloque no name
palavras separadas por traço, como por exemplo estava radio-stacked
eu mudei para radiostacked
.
Meu search.php está assim:
<?php
require_once 'init.php';
$PDO = db_connect();
$radiostacked = $_POST['radiostacked'];
$busca = $_POST['busca'];
$db = new PDO('mysql:host=localhost;dbname=testdb;','username','password');
$categoria = $_GET['busca'];
$stmt = $db->prepare("SELECT * FROM livro AS t WHERE t.categorias = ?");
$stmt->execute($categoria); //SE FOSSE 2 PARAMETROS, PASSE UM ARRAY
$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
$stmt = $PDO->prepare($sql);
$stmt->execute();
Sim eu vi o seu arquivo qual a duvida? tem um erro na variavel $categoria
No retorno dos resultados.
Me explica
t.categorias
é o que está no formulário como Título, Autor etc ???
E qual é o outro filtro …
Precisa explicar a SQL para mim !
No banco só há uma table que no caso é “livro” onde há as colunas: idlivro, titulo, autor, tema e editora.
Então
$stmt = $db->prepare(“SELECT * FROM livro AS t WHERE t.categorias = ?”);
essa SQL não está certa? porque não tem o campo categorias?
Não sei se categorias se encaixaria. E se fizer + - assim?
$stmt = $db->prepare("SELECT * FROM livro AS t WHERE '$radiostacked' = ?");
Falha minha…
Andre_Lira:
Não sei se categorias se encaixaria. E se fizer + - assim?
$stmt = $db->prepare(“SELECT * FROM livro AS t WHERE ‘$radiostacked’ = ?”);
Dragoon:
essa SQL não está certa? porque não tem o campo categorias?
Falha minha…
Se você tem esses campos na sua tabela:
idlivro, titulo, autor, tema e editora.
tem que utilizar eles, qual é o filtro que deseja fazer?
Pegar as informações desse formulário e exibir de segundo ele.
Por exemplo quero procurar na coluna titulo um livro que tenha a palavra “Teste”, mostre o livro com suas outras colunas só que de acordo com o título(já que selecionei título).