Ir para conteúdo
Fórum Script Brasil
  • 0

HELP - Recuperar valores do banco de dados


Perdida no Código

Pergunta

Queridos amigos bom dia,

Meu nome é Erika e a muito tempo frequento o fórum mas apenas hoje me cadastrei, depois de muita pesquisar na net resolvi me aventurar em um projeto, porém, não sei praticamente nada de php e mysql, estou começando de forma mais modesta atavéz da barra de ferramentas para o Dreamweaver, a Developer Toolbox, e achei que estava indo bem, mas...

Vendi um projeto basicamente simples, a cliente deseja ter um site onde fará um cadastro de produtos que serão vendidos em outro site, um sisteminha de busca (que pensei ser simples), e por ai vai, não precisa nem de carrinho de compras, porém, agora a cliente solicitou algumas mudanças, e como já recebi meus miseros R$ 300,00 de pagamento pelo sistema não posso voltar atraz e preciso concluir o projeto, por isso serei muito grata se me ajudarem.

Me desculpe se postei no lugar errado, não encontrei nada que me ajudasse no fórum.

É o seguinte, criei um banco de dados com as seguintes tabelas:

produtos, categoria, eventos, genero, idade, profissoes...

A tabela produtos criei da seguinte forma:

CREATE TABLE `produtos` (
  `idprodutos` int(11) NOT NULL AUTO_INCREMENT,
  `p_titulo` varchar(120) DEFAULT NULL,
  `p_descricao` varchar(255) DEFAULT NULL,
  `p_foto` varchar(255) DEFAULT NULL,
  `p_url` text,
  `p_preco` double(15,2) DEFAULT NULL,
  `p_idade_id` varchar(60) DEFAULT NULL,
  `p_sexo_id` varchar(60) DEFAULT NULL,
  `p_categoria_id` varchar(60) DEFAULT NULL,
  `p_evento_id` varchar(60) DEFAULT NULL,
  `p_profissao_id` varchar(60) DEFAULT NULL,
  `p_hobbies_id` varchar(60) DEFAULT NULL,
  `p_lancamento` tinyint(1) DEFAULT NULL,
  `p_status` tinyint(1) DEFAULT NULL,
  PRIMARY KEY (`idprodutos`)
) ENGINE=InnoDB AUTO_INCREMENT=21 DEFAULT CHARSET=latin1;
Onde os campos idade, evento, profissao e hobbies são de multipla escolha e são carregados dinamicamente puxando os dados das outras tabelas, até ai tudo bem, consegui cadastrar os produtos sem problemas, inclusive nesses campos os ids são cadastrados separados por virgula tudo como eu achei que seria certo. Agora vem o grande problema, o sistema de busca. Criei um formulário de busca com os seguintes campos: eventos, genero, idade, profissao, hobbies, preço e categoria Criei os recordsets para cada um dos campos, atribui cada um deles aos respectivos campos do formulário e tudo conforme tem que ser... O que acontece é que não consigo listar os produtos no resultado da busca, vou tentar explicar melhor, por exemplo. Tenho um produto cadastrado com as seguintes caracteristicas: p_categoria_id = 1 p_evento_id = 2,3,4 e assim por diante... Quando eu vou fazer uma busca pela categoria os produtos são listados corretamente, porém, quando vou fazer uma busca pelo evento são listados apenas os ultimos ids, ou seja, quando seleciono outro evento que o mesmo produto está cadastrado ele não aparece... Usei a função echo e vi que o resultado da busca imprime o id do evento selecionado no formulário corretamente, mas não consegue recuperar os valores dos produtos cadastrados. Estou usando os seguintes códigos para a busca:
// Verifica as categoria
if (isset($_POST['categoria']) && is_numeric ($_POST['categoria']) && $_POST['categoria'] > 0 ) {
    $busca .= "AND p_categoria_id = ".$_POST['categoria']." ";
}

// Verifica as evento
if (isset($_POST['evento']) && is_numeric ($_POST['evento']) && $_POST['evento'] > 0 ) {
    $busca .= "AND p_evento_id = ".$_POST['evento']." ";
}

Se alguém puder me ajudar agradeço de coração, pois, estou desesperada, tenho que entregar o projeto amanha dia 14/01/11 e só falta isso para dar tudo certo.

Se for necessário disponibilizo todo o código para download, só peço que pelo amor de Deus, ajudem rsrsrs

Obrigadinha a todos e muitos beijinhos

Editado por kuroi
Adicionar tag CODE
Link para o comentário
Compartilhar em outros sites

5 respostass a esta questão

Posts Recomendados

  • 0

Tem que tratar p_evento_id = 2,3,4

$exp = explode(",",$p_evento_id);

for($x=0;$x<count($exp); $x++){

$buscaeventoid .= " OR p_evento_id = ".$exp[$x]." ";

}

entendeu a lógica?

Existe alguma possibilidade de a busca trazer com ordem trocada

ex: no banco ta gravado assim >> 2,3,4

na busca vem assim >> 3,4,2

??

Editado por Jefferson Oliveira
Link para o comentário
Compartilhar em outros sites

  • 0
Tem que tratar p_evento_id = 2,3,4

$exp = explode(",",$p_evento_id);

for($x=0;$x<count($exp); $x++){

$buscaeventoid .= " OR p_evento_id = ".$exp[$x]." ";

}

entendeu a lógica?

Existe alguma possibilidade de a busca trazer com ordem trocada

ex: no banco ta gravado assim >> 2,3,4

na busca vem assim >> 3,4,2

??

Boa tarde Jefferson,

Muito obrigada pela sua atenção, mas infelizmente não consegui entender a lógica, não entendo quase nada de php e mysql...

Graças a Deus encontrei a solução com a ajuda do amigo LeoB do forum wmonline e foi relativamente simples, vou deixar aqui, talvéz possa ajudar outras pessoas.

No SQL substitui: $busca .= "AND p_evento_id = ".$_POST['evento']." ";

Por: $busca .= "AND (p_evento_id LIKE '".$_POST['evento'].",%' OR p_evento_id LIKE '%,".$_POST['evento'].",%' OR p_evento_id LIKE '%,".$_POST['evento']."' OR p_evento_id LIKE '".$_POST['evento']."')";

Um grande beijo!

Link para o comentário
Compartilhar em outros sites

  • 0

Bom dia queridos amigos,

Pensei que estava resolvido o problema da busca com os campos de cadastro unico e multiplos e fui concluir o que faltava mas infelizmente apareceu um outro problemminha...

O campo de busca por preços não é dinamico, sendo assim inseri o seguinte sql:

// Verifica as preço

if(isset($_POST['preço']) && is_numeric($_POST['preço']) && $_POST['preço'] > 0) {

$busca .= "AND p_preco > ".$_POST['preço']." ";

$setpreco = 1;

}

if(isset($_POST['preço']) && $_POST['preço'] != NULL && $setpreco == NULL){

$preco1 = explode("__", $_POST['preço']);

$valorde = $preco1[0];

$valorate = $preco1[1];

$busca .= "AND p_preco > $valorde AND p_preco < $valorate";

}

No formulário da busca foi feito assim:

<label>

<select name="preço" id="preço">

<option selected="selected">Selecione</option>

<option value="1__100">At&eacute; R$ 100,00</option>

<option value="101__200">De R$ 101,00 &agrave; R$ 200,00</option>

<option value="201__300">De R$ 201,00 &agrave; R$ 300,00</option>

<option value="301__500">De R$ 301,00 &agrave; R$ 500,00</option>

<option value="501__700">De R$ 501,00 &agrave; R$ 700,00</option>

<option value="701__1000">De R$ 701,00 &agrave; R$ 1.000,00</option>

<option value="1001">Acima de R$ 1.000,00</option>

</select>

</label>

Nesse caso, o resultado da busca por valores funciona perfeitamente, só que todos os outros campos param de funcionar e aparece a seguinte mensagem:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1

Obs: Quando tiro o sql da busca por preços os outros campos voltam a funcionar normlmente...

Poderiam me ajudar com isso também?

Agora o desespero bateu de verdade meu prazo de entrega esta se esgotando...

Um grande beijo

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      652k
×
×
  • Criar Novo...