Jump to content
Fórum Script Brasil
  • 0

Como Realizar A Pesquisa..., Por Da Data E também Por Descrição?


Martinsrj
 Share

Question

Olá pessoal, beleza?

Gostaria de saber como que eu realizo a pesquisa do seguinte formulário, pois no mesmo formulário existe o botão pesquisa por descrição e também. o botão pesquisa por data.

Teria como exibir os dados no mesmo formulário???

<html>
<head>
<title>Consulta</title>
</head>

<body>
<form action="consulta_caixa.php" method="post">
<input type="hidden" name="operacao" value="incluir">
<p>
<font face="Arial, Helvetica, sans-serif" style="text-align:left">Pesquisa:<br>
<br> 
<input type="text" name="descricao" size="50">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<input type="submit" value="Pesquisa por Descri&ccedil;&atilde;o" name="enviar"></p>
<input name="data" type="text" size="10" maxlength="10">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;


<label>
<input type="radio" name="filtro" value="maior"><</label>&nbsp;&nbsp;
<label>
<input type="radio" name="filtro" value="menor">></label>&nbsp;&nbsp;
<label>
<input type="radio" name="filtro" value="igual">
=</label>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input type="submit" value="Pesquisa por Data" name="enviar">


</p>
</form>
</body>
</html>
O banco de dados está da seguinte forma:
CREATE TABLE caixa
(
codigo serial NOT NULL,
nf numeric(20) NOT NULL,
descricao character varying(100) NOT NULL,
data character varying(20) NOT NULL,
valortotal money NOT NULL,
saldo character(1) NOT NULL
)
Gostaria que os dados sejam exibidos dessa forma com titulo e subtitulo CONTROLE DE CAIXA N° Nota Fiscal | Descrição | Data | Valor | Saldo O código do formulário é:
<html>
<head>
<title>Consulta</title>
</head>

<body>
<form action="consulta_caixa.php" method="post">
<input type="hidden" name="operacao" value="incluir">
<p>
<font face="Arial, Helvetica, sans-serif" style="text-align:left">Pesquisa:<br>
<br> 
<input type="text" name="descricao" size="50">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<input type="submit" value="Pesquisa por Descri&ccedil;&atilde;o" name="enviar"></p>
<input name="data" type="text" size="10" maxlength="10">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<label>
<input type="radio" name="filtro" value="maior"><</label>&nbsp;&nbsp;
<label>
<input type="radio" name="filtro" value="menor">></label>&nbsp;&nbsp;
<label>
<input type="radio" name="filtro" value="igual">
=</label>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input type="submit" value="Pesquisa por Data" name="enviar">
</p>
</form>
</body>
</html>

Link to comment
Share on other sites

7 answers to this question

Recommended Posts

  • 0

Na parte do filtro, use o switch para montar a estrutura que será usada na query... ai na query...

"SELECT * FROM tabela WHERE descricao LIKE'".$_POST['descricao']."' AND data ".$operador .""

O único detalhe é que você usou para armazenar uma data um campo que eu acho (você não está usando o mysql, né?) que não é apropriado para isso, logo acho que a consulta não poderá ser eficaz...

O switch vai ter que ser algo assim:

case "maior":$operador = "> '".$_POST['data']."'"; break;

Link to comment
Share on other sites

  • 0
Na parte do filtro, use o switch para montar a estrutura que será usada na query... ai na query...

"SELECT * FROM tabela WHERE descricao LIKE'".$_POST['descricao']."' AND data ".$operador .""
O único detalhe é que você usou para armazenar uma data um campo que eu acho (você não está usando o mysql, né?) que não é apropriado para isso, logo acho que a consulta não poderá ser eficaz... O switch vai ter que ser algo assim: case "maior":$operador = "> '".$_POST['data']."'"; break;
Eu utilizo postgree. No consulta_caixa.html tem como eu tratar os doi botões? alguém com alguma idéia? Realizei algumas modificações, mas continua sem sucesso: consulta_caixa.html
<html>
<head>
<title>Consulta</title>
</head>

<body>
<form action="consulta_caixa.php" method="post">
<input type="hidden" name="operacao" value="incluir">
<p>
<font face="Arial, Helvetica, sans-serif" style="text-align:left">Pesquisa:<br>
  <br> 
  <input type="text" name="descricao" size="50">
  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  <input type="submit" value="Pesquisa por Descri&ccedil;&atilde;o" name="enviar"></p>
  <input name="data" type="text" size="10" maxlength="10">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

  
    <label>
      <input type="radio" name="filtro" value="maior"><</label>&nbsp;&nbsp;
    <label>
      <input type="radio" name="filtro" value="menor">></label>&nbsp;&nbsp;
    <label>
      <input type="radio" name="filtro" value="igual">
      =</label>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input type="submit" value="Pesquisa por Data" name="enviar">

    
  </p>
</form>
</body>
</html>
consulta_caixa.php
<?php
$descricao = $_POST["descricao"];
$data = $_POST["data"];
$valor = $_POST["valortotal"];
$saldo = $_POST["saldo"];
include "conecta_pg.php";

$str_order_by = "descricao";
if(isset($_POST['str_order_by']) && !empty($_POST['str_order_by']))
{
$str_order_by = $_POST['str_order_by'];
}

$str_select = "SELECT * FROM caixa ORDER BY " . $str_order_by;
$query = pg_query ($str_select);
$array = pg_fetch_array ($query);
    echo "<tr>";
    echo "<td> ($array ['nf'])</td>";
    echo "<td> ($array ['descricao'])</td>";
    echo "<td> ($array ['valor'])</td>";
    echo "<td> ($array ['saldo'])</td>";
    echo "</tr>";
?>

Porem quando digito no campo pesquisa por descrição e clico

no botão pesquisa por descrição na pagina consulta_caixa.php aparece

o seguinte resultado:

(Array ['nf']) (Array ['descricao']) (Array ['valor']) (Array ['saldo'])

Link to comment
Share on other sites

  • 0

Estou perdidinho... rsrsrs

alguém pode me uma direção?

Realizei algumas modificações no código, mas ainda não está do jeito que eu quero:

<?php
$descricao = $_POST["descricao"];
$data = $_POST["data"];
$valor = $_POST["valortotal"];
$saldo = $_POST["saldo"];
include "conecta_pg.php";

$str_order_by = "descricao";
if(isset($_POST['str_order_by']) && !empty($_POST['str_order_by']))
{
$str_order_by = $_POST['str_order_by'];
}

// $str_select = "SELECT * FROM caixa ORDER BY " . $str_order_by;
$str_select = "select * from caixa where descricao like '%$descricao%'";
$query = pg_query ($str_select);
// $num = pg_num_rows($str_select);
$resultado = pg_fetch_array ($query);
echo "<tr>";
echo "<td> (".$resultado ['nf'].")</td>";
echo "<td> (".$resultado ['descricao'].")</td>";
echo "<td> (".$resultado ['valor'].")</td>";
echo "<td> (".$resultado ['saldo'].")</td>";
echo "</tr>"; 
?>

Só aparece isso no resultado:

(1) (restaurante) () ©

Gostaria que quando a pessoa digitar no campo pesquisa a letra R ou colocando a data venha exibir na tela tudo que está registrado no banco de dados e o saldo que há no Caixa.

A exibição seria dessa forma:

N° da Nota Fiscal | Descrição | Data | Valor | Saldo

1 Restaurante 18/07/2007 R$ 20,00 D

14247 Rádio 15/07/2007 R$ 150,00 D

E no final da tabela o saldo que há no caixa >>> R$ 20,00

Link to comment
Share on other sites

  • 0

O problema é que só está exibindo um resultado? Pois então faça isso ...

<?php
...
$num = pg_num_rows($str_select);
for($i=0;$i<$num;$i++)
{
     $nf = pg_result($str_select,$i,"nf");
     $descricao = pg_result($str_select,$i,"descricao");
     $valor = pg_result($str_select,$i,"valor");
     $saldo = pg_result($str_select,$i,"saldo");

     echo "<tr>";
     echo "<td> (".$nf.")</td>";
     echo "<td> (".$descricao.")</td>";
     echo "<td> (".$valor.")</td>";
     echo "<td> (".$saldo.")</td>";
     echo "</tr>"; 
}
?>

Link to comment
Share on other sites

  • 0

Olá pessoal, olha eu aqui de novo.

Realizei algumas modificações no código da pagina consulta_pagina.php

Código abaixo:

<?php
$descricao = $_POST["descricao"];
$data = $_POST["data"];
$valor = $_POST["valortotal"];
$saldo = $_POST["saldo"];
include "conecta_pg.php";

$str_order_by = "descricao";
if(isset($_POST['str_order_by']) && !empty($_POST['str_order_by']))
{
$str_order_by = $_POST['str_order_by'];
}

// $str_select = "SELECT * FROM caixa ORDER BY " . $str_order_by;
$str_select = "select * from caixa where descricao like '%$descricao%'";
$query = pg_query ($str_select);
// $num = pg_num_rows($str_select);
$resultado = pg_fetch_array ($query);

/* echo "<tr>";
echo "<td> (".$resultado ['nf'].")</td>";
echo "<td> (".$resultado ['descricao'].")</td>";
echo "<td> (".$resultado ['valor'].")</td>";
echo "<td> (".$resultado ['saldo'].")</td>";
echo "</tr>"; */

$total = 0; //inicializa o contador zerado. não obrigatorio.

while ($resultado = pg_fetch_array ($query)){
echo "<tr>";
echo "<td> (".$resultado ['nf'].")</td>";
echo "<td> (".$resultado ['descricao'].")</td>";
echo "<td> (".$resultado ['valor'].")</td>";

// $total = $total + $resultado ['valor'];
$total = $total + $resultado ['saldo'];  
// tem de ser float, se tiver como string corrige ai. separação decimal "." (ponto) e não "," //(vírgula).

echo "<td> (".$resultado ['saldo'].")</td>";
echo "</tr>";
} 
//fim do loop

echo "Total no Caixa: $total";
?>
Porem exibe assim na tela: (20) (Pizzaria) () © (150) (Teste) () (D) (120) (Sabonete) () (D)Total no Caixa: 0 Mas no banco de dados existe os seguintes dados no link abaixo: http://br.geocities.com/infolinho/
O problema é que só está exibindo um resultado? Pois então faça isso ...
<?php
...
$num = pg_num_rows($str_select);
for($i=0;$i<$num;$i++)
{
     $nf = pg_result($str_select,$i,"nf");
     $descricao = pg_result($str_select,$i,"descricao");
     $valor = pg_result($str_select,$i,"valor");
     $saldo = pg_result($str_select,$i,"saldo");

     echo "<tr>";
     echo "<td> (".$nf.")</td>";
     echo "<td> (".$descricao.")</td>";
     echo "<td> (".$valor.")</td>";
     echo "<td> (".$saldo.")</td>";
     echo "</tr>"; 
}
?>
Colocando o seu código ele dá o seguinte erro: Warning: pg_num_rows(): supplied argument is not a valid PostgreSQL result resource in C:\Arquivos de programas\Apache Software Foundation\Apache2.2\htdocs\estudo\consulta_caixa.php on line 46 Renato, abaixo está o código com as modificações como você sugeriu:
<?php
$descricao = $_POST["descricao"];
$data = $_POST["data"];
$valor = $_POST["valortotal"];
$saldo = $_POST["saldo"];
include "conecta_pg.php";

$str_order_by = "descricao";
if(isset($_POST['str_order_by']) && !empty($_POST['str_order_by']))
{
$str_order_by = $_POST['str_order_by'];
}

// $str_select = "SELECT * FROM caixa ORDER BY " . $str_order_by;
$str_select = "select * from caixa where descricao like '%$descricao%'";
$query = pg_query ($str_select);
// $num = pg_num_rows($str_select);
$resultado = pg_fetch_array ($query);

/* echo "<tr>";
echo "<td> (".$resultado ['nf'].")</td>";
echo "<td> (".$resultado ['descricao'].")</td>";
echo "<td> (".$resultado ['valor'].")</td>";
echo "<td> (".$resultado ['saldo'].")</td>";
echo "</tr>"; */
/*
$total = 0; //inicializa o contador zerado. não obrigatorio.

 while ($resultado = pg_fetch_array ($query)){
echo "<tr>";
echo "<td> (".$resultado ['nf'].")</td>";
echo "<td> (".$resultado ['descricao'].")</td>";
echo "<td> (".$resultado ['valor'].")</td>";

// $total = $total + $resultado ['valor'];
$total = $total + $resultado ['saldo'];  
// tem de ser float, se tiver como string corrige ai. separação decimal "." (ponto) e não "," //(vírgula).

echo "<td> (".$resultado ['saldo'].")</td>";
echo "</tr>"; 
} 
42   //fim do loop
43
44   echo "Total no Caixa: $total"; */
45
46  $num = pg_num_rows($str_select);
47  for($i=0;$i<$num;$i++)
48  {
49     $nf = pg_result($str_select,$i,"nf");
50     $descricao = pg_result($str_select,$i,"descricao");
     $valor = pg_result($str_select,$i,"valor");
     $saldo = pg_result($str_select,$i,"saldo");

     echo "<tr>";
     echo "<td> (".$nf.")</td>";
     echo "<td> (".$descricao.")</td>";
     echo "<td> (".$valor.")</td>";
     echo "<td> (".$saldo.")</td>";
     echo "</tr>"; 
}
?>

Link to comment
Share on other sites

  • 0

Ok. O problema deve estar no $str_select. porque a variável $descricao ainda não deve estar definida. Faça oseguinte ...

<?php
if($_SERVER['REQUEST_METHOD']=="POST")
{
$descricao = $_POST["descricao"];
$data = $_POST["data"];
$valor = $_POST["valortotal"];
$saldo = $_POST["saldo"];
include "conecta_pg.php";

$str_order_by = "descricao";
if(isset($_POST['str_order_by']) && !empty($_POST['str_order_by']))
{
$str_order_by = $_POST['str_order_by'];
}

// $str_select = "SELECT * FROM caixa ORDER BY " . $str_order_by;
$str_select = "select * from caixa where descricao like '%$descricao%'";
$query = pg_query ($str_select);
// $num = pg_num_rows($str_select);
$resultado = pg_fetch_array ($query);

/* echo "<tr>";
echo "<td> (".$resultado ['nf'].")</td>";
echo "<td> (".$resultado ['descricao'].")</td>";
echo "<td> (".$resultado ['valor'].")</td>";
echo "<td> (".$resultado ['saldo'].")</td>";
echo "</tr>"; */
/*
$total = 0; //inicializa o contador zerado. não obrigatorio.

while ($resultado = pg_fetch_array ($query)){
echo "<tr>";
echo "<td> (".$resultado ['nf'].")</td>";
echo "<td> (".$resultado ['descricao'].")</td>";
echo "<td> (".$resultado ['valor'].")</td>";

// $total = $total + $resultado ['valor'];
$total = $total + $resultado ['saldo'];  
// tem de ser float, se tiver como string corrige ai. separação decimal "." (ponto) e não "," //(vírgula).

echo "<td> (".$resultado ['saldo'].")</td>";
echo "</tr>"; 
} 
42   //fim do loop
43
44   echo "Total no Caixa: $total"; */
45
46  $num = pg_num_rows($str_select);
47  for($i=0;$i<$num;$i++)
48  {
49     $nf = pg_result($str_select,$i,"nf");
50     $descricao = pg_result($str_select,$i,"descricao");
     $valor = pg_result($str_select,$i,"valor");
     $saldo = pg_result($str_select,$i,"saldo");

     echo "<tr>";
     echo "<td> (".$nf.")</td>";
     echo "<td> (".$descricao.")</td>";
     echo "<td> (".$valor.")</td>";
     echo "<td> (".$saldo.")</td>";
     echo "</tr>"; 
}
}
?>

Link to comment
Share on other sites

  • 0

Renato continua dando erro:

Warning: pg_num_rows(): supplied argument is not a valid PostgreSQL result resource in C:\Arquivos de programas\Apache Software Foundation\Apache2.2\htdocs\estudo\consulta_caixa.php on line 48

Segue abaixo o código da pagina consulta_caixa.html:

<html>
<head>
<title>Consulta</title>
</head>

<body>
<form action="consulta_caixa.php" method="post">
<input type="hidden" name="operacao" value="incluir">
<p>
<font face="Arial, Helvetica, sans-serif" style="text-align:left">Pesquisa:<br>
  <br> 
  <input type="text" name="descricao" size="50">
  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  <input type="submit" value="Pesquisa por Descri&ccedil;&atilde;o" name="enviar"></p>
  <input name="data" type="text" size="10" maxlength="10">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

  
    <label>
      <input type="radio" name="filtro" value="maior"><</label>&nbsp;&nbsp;
    <label>
      <input type="radio" name="filtro" value="menor">></label>&nbsp;&nbsp;
    <label>
      <input type="radio" name="filtro" value="igual">
      =</label>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input type="submit" value="Pesquisa por Data" name="enviar">

    
  </p>
</form>
</body>
</html>

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

  • Forum Statistics

    • Total Topics
      149.8k
    • Total Posts
      646.6k
×
×
  • Create New...