Ir para conteúdo

POWERED BY:

Arquivado

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

deamdornelles

Problemas em armazenar resultado da query em sessão

Recommended Posts

Bom dia

 

Eu estou desenvolvendo um site de vendas para um trabalho da faculdade, eu nunca tinha trabalhado com php antes na vida, e como estamos sem professor para a disciplina estou tendo que fazer tudo na raça. Pois bem, eu peço a ajuda de vocês para o seguinte problema: a pessoa vai entrar na página:

 

 

<html>

<head>
 <title>Procurar Produto</title>
 <meta name="description" content="website description" />
 <meta name="keywords" content="website keywords, website keywords" />
 <meta http-equiv="content-type" content="text/html; charset=windows-1252" />
 <link rel="stylesheet" type="text/css" href="style/style.css" title="style" />
</head>

<body>
 <div id="main">
   <div id="header">
     <div id="logo">
       <div id="logo_text">
         <h1><a href="index.html">DLTD<span class="logo_colour">Music</span></a></h1>
         <h2>Compre tudo.</h2>
       </div>
     </div>
     <div id="menubar">
       <ul id="menu">
         <li><a href="index.html">Home</a></li>
         <li><a href="cadastrar.html">Cadastrar Usuário</a></li>
         <li><a href="cadastrar_produto.php">Cadastrar Produto</a></li>
         <li class="selected"><a href="procurar_produto.html">Procurar Produto</a></li>
         <li><a href="sair.php">Sair</a></li>
       </ul>
     </div>
   </div>
   <div id="site_content">
     <div class="sidebar">
     </div>
     <div id="content">
       <form method="POST" action="procura.php">    
         <p> </p>
         <p> </p>
         <p>Categoria <select size="1" name="categoria">
         <option>Afinador</option>
         <option>Baixo</option>
         <option>Bateria</option>
         <option>Cordas</option>
         <option>Guitarra</option>
         <option>Saxofone</option>
          
         </select></p>
         <p> </p>
         <p> </p>
         <p> </p>
         <p><input type="reset" value="Limpar" name="limpar">    <input type="submit" value="Buscar" name="buscar"></p>
       </form>
       <p> </p>
     </div>
   </div>
   <div id="content_footer"></div>
   <div id="footer">
      
   </div>
 </div>
<div style="text-align: center; font-size: 0.75em;"></div></body>
</html>

 

Onde ela vai escolher uma categoria, nesta página é chamada a função procura.php

 

<?php
$categoria = $_REQUEST ['categoria'];
$conexao = mysql_connect ("localhost","root","") or die (mysql_error());
mysql_select_db ("trabalho_implementacao") or die (mysql_error());
$procura = mysql_query ("SELECT nome, preco FROM produto WHERE categoria = '$categoria' ORDER BY nome", $conexao);
$_SESSION ['session_linhas'] = mysql_num_rows ($procura);
if ($_SESSION ['session_linhas'] != 0)
{
 header ("Location: produto_achado.php");
}
 else
 {
  header ("Location: produto_nao_existe.html");
 }
mysql_close ($conexao);
?>

 

Se o produto existir no banco de dados, a função manda a pessoa para a página:

 

<!DOCTYPE HTML>
<html>

<head>
 <title>Procurar Produto</title>
 <meta name="description" content="website description" />
 <meta name="keywords" content="website keywords, website keywords" />
 <meta http-equiv="content-type" content="text/html; charset=windows-1252" />
 <link rel="stylesheet" type="text/css" href="style/style.css" title="style" />
</head>

<body>
<?php
 session_start ();
?>
 <div id="main">
   <div id="header">
     <div id="logo">
       <div id="logo_text">
         <h1><a href="index.html">DLTD<span class="logo_colour">Music</span></a></h1>
         <h2>Compre tudo.</h2>
       </div>
     </div>
     <div id="menubar">
       <ul id="menu">
         <li><a href="index.html">Home</a></li>
         <li><a href="cadastrar.html">Cadastrar Usuário</a></li>
         <li><a href="cadastrar_produto.php">Cadastrar Produto</a></li>
         <li class="selected"><a href="procurar_produto.html">Procurar Produto</a></li>
         <li><a href="sair.php">Sair</a></li>
       </ul>
     </div>
   </div>
   <div id="site_content">
     <div class="sidebar">
     </div>
     <div id="content">
       <form method="POST">   
       <table>
        <tr>
         <td><b>Nome</b></td>
         <td><b>Preço</b></td>
        </tr>
        </table>
        <?php
        for ($i = 0; $i < $_SESSION ['session_linhas']; $i++)
         {     
          $nome = mysql_result ($procura, $i, "nome");
          $preco = mysql_result ($procura, $i, "preco");                      
          echo $nome;
          echo $preco;            
         }
        ?>                 
         <p> </p>
         <p> </p>
         <p> </p>
         <p> </p>
         <p> </p>
         <p> </p>
         <p>    </p>
       </form>
       <p> </p>
   <div id="content_footer"></div>
   <div id="footer">
      
   </div>
<div style="text-align: center; font-size: 0.75em;"></div></body>

 

Nesta página eu deveria conseguir mostrar o resultado da busca no banco de dados, porém está dando um erro de "undefined index" na variável

$_SESSION ['session_linhas']

 

Peço perdão pelo tópico longo mas queria colocar todos os códigos para não restar dúvidas, será que alguém consegue me ajudar?

 

Desde já agradeço a atenção.

Compartilhar este post


Link para o post
Compartilhar em outros sites

simples....você nao iniciou a sessao, o $_SESSION você so usa quando você coloca session_start(); no inicio de cada arquivo onde usara $_SESSION

 

http://br.php.net/manual/pt_BR/function.session-start.php

 

aproveite que esta iniciando e adquira o habito de ler o manua, acredite, ele sera o seu melhor amigo nestas horas...

 

http://br.php.net/manual/pt_BR/reserved.variables.session.php

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá gremio10

 

Se eu colocar o session_start () antes do html ele funciona? Não precisa então estar dentro do html?

Compartilhar este post


Link para o post
Compartilhar em outros sites

gremio10

 

Eu coloquei o session_start () antes de tudo, mesmo assim continua dando o erro. De qualquer maneira, vou continuar tentando solucionar, agradeço a ajuda de vocês.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então, eu fiz algumas mudanças na função que procura no banco de dados e ficou assim:

 

$_SESSION ['session_procura'] = mysql_query ("SELECT nome, preco FROM produto WHERE categoria = '$categoria' ORDER BY nome", $conexao);

 

Aí eu coloquei

 

print_r( $_SESSION );

 

como você disse. Só que ele não está mostrando a variável:

 

$_SESSION ['session_procura']

 

Não é possível colocar uma query dentro de uma variável de SESSION?

Compartilhar este post


Link para o post
Compartilhar em outros sites

da verdade você nao colocou uma query numa sessao, você colocou um tipo resource...

 

você tem q usar assim

 

$e = mysql_query(sua sql) or die(mysql_error();
$array = mysql_fetch_array($e);

 

dae você usa o $array como sua query como você ker fazer agora..

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, o que você está tentando fazer ?

 

não, não pode... :mellow:

 

por isso o erro no session, ele não está criando.

 

o que tu pode fazer é salvar o SQL na session, não o resultado inteiro de uma Query.

 

$_SESSION[ "my_query" ] = "SELECT nome, preco FROM produto WHERE categoria = '$categoria' ORDER BY nom";

 

mas voltando ao inicio da minha resposta, qual é a razão para você tentar isso ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Igor.php

 

Eu já consegui resolver este erro (finalmente!), agora está dando problema no:

 

$nome = mysql_result ($_SESSION ['session_procura'], $i, "nome");
$preco = mysql_result ($_SESSION ['session_procura'], $i, "preco");
echo $nome;
echo $preco;   

 

Porque eu estou fazendo assim: na função que procura no banco de dados, acontece isto:

 

$_SESSION ['session_procura'] = mysql_query ("SELECT nome, preco FROM produto WHERE categoria = '$categoria' ORDER BY nome", $conexao);

 

Mas como exatamente eu devo usar a função "mysql_result", porque está dando este erro: mysql_result() expects parameter 1 to be resource, integer given

 

Cara, o que você está tentando fazer ?

 

não, não pode... :mellow:

 

por isso o erro no session, ele não está criando.

 

o que tu pode fazer é salvar o SQL na session, não o resultado inteiro de uma Query.

 

$_SESSION[ "my_query" ] = "SELECT nome, preco FROM produto WHERE categoria = '$categoria' ORDER BY nom";

 

mas voltando ao inicio da minha resposta, qual é a razão para você tentar isso ?

 

gremio10

 

É um site de vendas, o usuário vai procurar determinado produto e eu quero mostrar os produtos encontrados na página.

Compartilhar este post


Link para o post
Compartilhar em outros sites

O problema é que a pessoa só vai poder pesquisar o produto se estiver logada no site, por isso eu estou usando sessão.

Compartilhar este post


Link para o post
Compartilhar em outros sites
[...] e como estamos sem professor para a disciplina estou tendo que fazer tudo na raça

Senhor Gezuis! :mellow:

 

Você não pode guardar um resource em uma sessão.

Tente usar serialize e unserialize para fazer isso, mas não garanto que vá funcionar.

 

Enfim, eu ainda não consegui entender porque gravar a query na sessão.

Não seria mais fácil apenas verificar se o cidadão está logado?

 

Além disso,

 

Regra do Fórum: 01ª - Conteúdo fora de contexto

Não poste mensagens ou tópicos fora dos temas centrais dos fóruns tais como piadas, assuntos políticos, futebol, etc. Para estes assuntos, existe o fórum Entretenimento. Evite entitular os tópicos com palavras como: "ME AJUDE", "PELO AMOR DE DEUS", "ESTOU DESESPERADO", "URGENTE", "SOCORRO", "HELP", "PEDIDO", "IMPLORO", "PLEASE", "DÚVIDA", ou qualquer coisa similar, assim como utilizar Caixa Alta (letras todas em maiúsculas) no título ou mesmo no corpo do tópico ou post. Utilize títulos curtos e claros, que condizam com o contexto do tópico, por favor.

Vou alterar o título do seu tópico.

Compartilhar este post


Link para o post
Compartilhar em outros sites

O problema é que a pessoa só vai poder pesquisar o produto se estiver logada no site, por isso eu estou usando sessão.

 

Man pra faz eisso você tem q faze um sistema de autenticação no seu site Login-Senha .

 

Colocar restrições na sua pagina.. ai sim criar um session de autenticaçõa pro camarada logado.

 

Joga a query em uma Session num refresca nd =X

 

// parece q você quer armazena oque o cara pesquiso em uma session =X

//armazena a pesquisa no Session e depois na pagina de categoria faze outro select.

//da uma olhada sobre SQL( LIKE ),  q se for pesquisa você vai precisa

$categoria = $_SESSION['pesquisa'] // tente assim

$result = mysql_query("SELECT nome, preco FROM produto WHERE categoria = '$categoria' ORDER BY nome")....

while ($row = mysql_fetch_assoc($result)) {
   echo $row['nome'];
   echo $row['preco'];
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Meus amigos, novamente agradeço a ajuda de vocês. Vou tentar esclarecer o meu problema.

 

A pessoa se loga no site.

 

Vai até a página de procura de produtos.

 

Daí eu chamo a função que procura no banco de dados e armazeno o resultado numa variável de sessão, depois eu mando a pessoa para a página com os resultados da busca. O problema é que quando eu coloco um:

 

echo "variável que armazena o resultado da busca", ele mostra apenas o número 0.

 

E dá um erro de: mysql_result() expects parameter 1 to be resource, integer given.

 

O mais estranho é que o número de linhas da busca bateu certinho com o que tem no banco de dados.

 

Espero ter esclarecido o meu problema. Novamente agradeço a atenção.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, mais uma vez...

 

quando a pessoa digitar o produto que ela quer no formulario, lá no teu form, tu vai ter um action, esse action, tu diz para qual página, o valor digitado será enviado.

 

bom, digamos que tu fez até ai, beleza, na página que vai receber o POST, tu faz a pesquisa, arruma do melhor jeito possivel os valores, resultados e tudo mais.

Ai é só tu mostrar, nessa mesma página, o resultado, dentro de um loop.

 

acho que foi bem explicado né ? Não precisa de sessão para isso. ^_^

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.