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:
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
A
Andre_Lira1 like
É 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
D
Dragoon
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.
D
Dragoon
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.
A
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.
D
Dragoon
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)!
é 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:
<?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.
A
Andre_Lira
Meu search.php está assim:
<?phprequire_once'init.php';$PDO=db_connect();$radiostacked=$_POST['radiostacked'];$busca=$_POST['busca'];$db=newPDO('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();
D
Dragoon
Sim eu vi o seu arquivo qual a duvida? tem um erro na variavel $categoria
A
Andre_Lira
No retorno dos resultados.
D
Dragoon
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 !
A
Andre_Lira
No banco só há uma table que no caso é “livro” onde há as colunas: idlivro, titulo, autor, tema e editora.
D
Dragoon
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?
A
Andre_Lira
Não sei se categorias se encaixaria. E se fizer + - assim? $stmt = $db->prepare("SELECT * FROM livro AS t WHERE '$radiostacked' = ?");
Falha minha…
D
Dragoon
Se você tem esses campos na sua tabela:
idlivro, titulo, autor, tema e editora.
tem que utilizar eles, qual é o filtro que deseja fazer?
A
Andre_Lira
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).
D
Dragoon1 like
Acho que ficaria mais ou menos assim:
<?phprequire_once'init.php';$PDO=db_connect();$db=newPDO('mysql:host=localhost;dbname=testdb;','username','password');$radiostacked=$_POST['radiostacked'];$busca=$_POST['busca'];$sql='SELECT * FROM livro AS t WHERE';//idlivro, titulo, autor, tema e editora.switch($radiostacked){case'titulo':{$sql.=' t.titulo=?';break;}case'autor':{$sql.=' t.autor=?';break;}case'tema':{$sql.=' t.autor=?';break;}case'editora':{$sql.=' t.editora=?';break;}case'indice':{$sql.=' t.idlivro=?';break;}}$stmt=$db->prepare($sql);$stmt->execute([$busca]);$rows=$stmt->fetchAll(PDO::FETCH_ASSOC);
A
Andre_Lira
Como ficaria pra exibir o resultado?
D
Dragoon
$rows=$stmt->fetchAll(PDO::FETCH_ASSOC);
vai ter que varrer esses $rows
foreach($rowsas$row){echo$row['autor'];// aqui os outros echo}
e assim por diante
A
Andre_Lira
A página não retorna os resultados, simplesmente fica em branco. O que pode ser?
D
Dragoon
Tem que ver a coisa funcionando, pode ser erro de programação e dependendo da configuração do servidor não aparece nada …
Tem que verificar a fundo um problema desses… porque pode ser tanta coisa