Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Danny89

Qual é o erro desse código?

Recommended Posts

Pois é. O fórum modera palavras "proibidas" e o "s e x o" é alterado para "---o".

Muda isso, e pelo que eu entendi, a consulta não está recebendo os valores do formulário.

Compartilhar este post


Link para o post
Compartilhar em outros sites

ah mais uma coisa, parece que ele não está inserindo os valores das variáveis na consulta...

 

tenta, só pra eliminar esta possibilidade o seguinte:

 

if ($estado != 'TODOS') {
$sql .= " AND estado = 'MG' ";
}

deixa só esta linha e roda o script...

 

e tenta mais uma coisa:

 

if ($estado != 'TODOS') {

$sql .= " AND estado = '".$estado."' ";
}

aspas ' e depois " (vai que né...)

 

obs: supondo que você tenha algum registro no banco de dados com MG né?

 

obs2: o campo formação é de texto livre, quando você define que seja = ao que está no banco de dados fica complicado o usuário acertar exatamente...

 

minha sugestão é você criar mais tabelas: estados, formação e ---o. Aí no html você faz um while e lista as opções de formação, ---o e estado. Assim se futuramente você quiser adicionar mais estados ou formações, não precisa editar o arquivo html, só o banco de dados...

 

tipo assim:

<select>

<option value='0' selected='selected'>Todos</option>

<?php

//obs: lá no código se for 0 nem vai entrar no if então vai mostrar tudo

$sql = "SELECT * FROM estados ORDER BY estado ASC";

$query = mysql_query($sql);

while ($dado = mysql_fetch_array($sql){

echo "<option name="estado" value='".$dado['id']."'>".$dado['estado']."</option>"

}

?>

</select>

 

obs3: mas caso você usar como texto aberto mesmo, faz assim: http://blog.thiagobelem.net/busca-no-mysql-usando-palavra-chave/

 

abraço

Compartilhar este post


Link para o post
Compartilhar em outros sites

ah mais uma coisa, parece que ele não está inserindo os valores das variáveis na consulta...

 

tenta, só pra eliminar esta possibilidade o seguinte:

 

if ($estado != 'TODOS') {

$sql .= " AND estado = 'MG' ";

}

 

deixa só esta linha e roda o script...

 

e tenta mais uma coisa:

 

if ($estado != 'TODOS') {

$sql .= " AND estado = '".$estado."' ";

}

aspas ' e depois " (vai que né...)

 

obs: supondo que você tenha algum registro no banco de dados com MG né?

 

obs2: o campo formação é de texto livre, quando você define que seja = ao que está no banco de dados fica complicado o usuário acertar exatamente...

 

minha sugestão é você criar mais tabelas: estados, formação e ---o, no html você faz um while e lista as opções de formação, ---o e estado. Assim se futuramente você quiser adicionar mais estados ou formações, não precisa editar o arquivo html, só o php...

 

obs3: mas caso você usar como texto aberto mesmo, faz assim: http://blog.thiagobelem.net/busca-no-mysql-usando-palavra-chave/

 

abraço

Sei que é difícil o sistema retornar valores de texto livre, mas na minha busca estou selecionando somente estado e sexo, campos que tenho certeza que existem usuarios com essas caracteristicas no banco, deixando o o campo formação em branco (a ideia é poder selecionar quantos campos quiser para efetuar a busca, com no mínimo 1)

E mesmo que se eu tivesse selecionado o campo formação, a ideia era que se um dos campos selecionados fosse inexistente no banco de dados, a ideia era retornar zero (por exemplo, se existissem usuarios de estado RJ e sexo Masculino, mas não tivesse a formaçao selecionada retornaria que não existe usuario com essas caracteristicas exatas combinadas)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Certo, mas da maneira que você escreveu, se eu estou buscando por "superior" e no banco de dados estiver "Superior" não vai retornar... (por causa do = )

 

E formação tem registros finitos... primeiro segundo superior completo incompleto etc... você pode prever isso e colocar uma caixa de seleção...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Certo, mas da maneira que você escreveu, se eu estou buscando por "superior" e no banco de dados estiver "Superior" não vai retornar... (por causa do = )

 

E formação tem registros finitos... primeiro segundo superior completo incompleto etc... você pode prever isso e colocar uma caixa de seleção...

Como eu deveria fazer então?

Compartilhar este post


Link para o post
Compartilhar em outros sites

você usa o conceito de chave estrangeira

 

uma formação pode ser de vários usuários certo?

 

então não tem porque você escrever "Superior Completo" toda vez que você cadastrar um novo usuário

 

você vai criar uma tabela "Formação"

nesta tabela você terá, (simplificando) por exemplo:

id (toda tabela deve ter um id, um identificador único daquele registro, esta é a chave primária)

formação (aqui você vai inserir, superior completo, incompleto, etc)

 

depois na tabela usuários você coloca algo do tipo:

id

id_formacao (aqui vai o id da tabela formação, esta é a chave que vem da outra tabela)

Compartilhar este post


Link para o post
Compartilhar em outros sites

você usa o conceito de chave estrangeira

 

uma formação pode ser de vários usuários certo?

 

então não tem porque você escrever "Superior Completo" toda vez que você cadastrar um novo usuário

 

você vai criar uma tabela "Formação"

nesta tabela você terá, (simplificando) por exemplo:

id (toda tabela deve ter um id, um identificador único daquele registro, esta é a chave primária)

formação (aqui você vai inserir, superior completo, incompleto, etc)

 

depois na tabela usuários você coloca algo do tipo:

id

id_formacao (aqui vai o id da tabela formação, esta é a chave que vem da outra tabela)

Então não é possível manter todos os dados de formação na tabela usuários, sem precisar criar mais uma? E o usuário que tiver mais de um idioma, por exemplo, será necessário criar uma tabela só pra idioma para poder receber mais de um dado?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você vai ter a tabela idiomas (ingles, portugues, espanhol, etc)

 

voce vai ter uma tabela usuários

 

e voce vai ter uma tabela usuario_idiomas por exemplo

 

ali você vai associar o id do usuário com o id do idioma, assim um usuário pode ter quantos idiomas você quiser

 

estuda sobre planejamento de banco de dados, a lógica mesmo sabe, porque as bases não são só para mysql, é qualquer banco de dados.

 

Abraço

Compartilhar este post


Link para o post
Compartilhar em outros sites

é que, teoricamente, não precisa de mais de 2 né...

id e idioma

 

mas se fosse nível de escolaridade, por exemplo

 

voce podia ter 3

id (sequencial e único)

nível (superior completo, incompleto, etc)

descrição (por exemplo: Usuário que completou a Graduação)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mas se no meu formulario de cadastro o usuário puder escolher mais de uma opção no idioma, não precisaria de mais de 2 campos na tabela? E se for o caso do usuário ter um superior completo e outro em andamento?

Compartilhar este post


Link para o post
Compartilhar em outros sites

quando um usuário puder ter várias formações, você faz igual em idiomas... outra tabela só para os relacionamentos.

 

vou sair aqui... sugiro que você pesquise por projeto de banco de dados para entender bem como funciona.

 

uma boa leitura também: http://www.blogdati.com.br/index.php/2010/03/normalizacao-em-banco-de-dados/

 

abraço

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.