Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Boa noite Rapaziada, estou tentando fazer uma busca pela data em meu banco de dados, só que essa busca está me retornando somente o último registro do meu banco, e está ignorando o nome também. O código é este:
<?php
ini_set('display_errors','on');
error_reporting(E_ALL);
include 'mysqlcon.php';
?>
<!DOCTYPE html>
<html>
<head>
<title>Detalhes das apostas</title>
</head>
<body>
<div id="formulario_busca">
<form name="busca" action="" method="post">
<input type="text" name="pesquisar" id="pesquisar">
<label>Data Inicial</label>
<input type="text" name="data_ini" id="data_ini">
<label>Data Final</label>
<input type="text" name="data_fim" id="data_fim">
<input type="submit" value="Pesquisar" name="enviar">
</form>
</div>
<?php
if(isset($_POST['enviar']) && isset($_POST['pesquisar'])){
$busca = $_POST['pesquisar'];
$data_ini = $_POST['data_ini'];
$data_fim = $_POST['data_fim'];
//$sql = "SELECT * FROM clientes WHERE nome = '$busca' ";
$sql = "SELECT * FROM clientes WHERE data_ini ='$data_ini' BETWEEN '$data_fim' AND nome = '$busca' ";
$res = mysqli_query($conecta, $sql);
if(mysqli_num_rows($res) == 0){
echo "<strong><font color='red'>Não há resultados para exibir</font></strong>";
}$pesquisa = $result ;
}
$aposta = $pesquisa['valor_aposta'];
$percent = 6;
$retorno = (float)($percent / 100) * $aposta;
echo "
<table>
<tr>
<td><strong><font color='blue'>Nome</font></strong></td>
<td>".$pesquisa['nome']."</td>
</tr>
<tr>
<td><strong><font color='blue'>Email</font></strong></td>
<td>".$pesquisa['email']."</td>
</tr>
<tr>
<td><strong><font color='blue'>Idade</font></strong></td>
<td>".$pesquisa['idade']."</td>
</tr>
<tr>
<td><strong><font color='blue'>Aposta</font></strong></td>
<td>".$pesquisa['valor_aposta']."</td>
</tr>
<tr>
<td><strong><font color='blue'>Retorno</font></strong></td>
<td>".$retorno."</td>
</tr>
<tr>
<td></td>
</tr>
</table>
";
}
}
?>
</body>
</html>
posso digitar qualquer nome no campo, que ele me trará apenas o último registro, até se eu deixar os campos em branco ele me traz o ultimo registro, o que eu quero fazer é pegar os dados da aposta de um cliente e exibir esses dados no mês, exemplo: 01/04/2015 até 30/042015, por isso usei a cláusula between, mas não está funcionando.
>
Tem duas questões:
1 - A sintaxe do seu BETWEEN está errado;
2 - Você está montando tudo fora do laço, logo ele só exibirá o último resultado independente de quantos retornarem.
Joguei tudo dentro do laço agora, realmente ele me trás tudo, só que, quero trazer só o que eu pesquisar, com relação ao between como devo usar ? pesquisei alguns tutoriais, exemplos e eu só vi nesse modelo, também tentei direto no banco e realmente não funcionou como eu queria, que é buscando um intervala de data. Deixei o código assim:
<code>
<?php
ini_set('display_errors','on');
error_reporting(E_ALL);
include 'mysqlcon.php';
?>
<!DOCTYPE html>
<html>
<head>
<title>Detalhes das apostas</title>
</head>
<body>
<div id="formulario_busca">
<form name="busca" action="" method="post">
<input type="text" name="pesquisar" id="pesquisar">
<label>Data Inicial</label>
<input type="text" name="data_ini" id="data_ini">
<label>Data Final</label>
<input type="text" name="data_fim" id="data_fim">
<input type="submit" value="Pesquisar" name="enviar">
</form>
</div>
<?php
if(isset($_POST['enviar']) && isset($_POST['pesquisar'])){
$busca = $_POST['pesquisar'];
$data_ini = $_POST['data_ini'];
$data_fim = $_POST['data_fim'];
//$sql = "SELECT * FROM clientes WHERE nome = '$busca' ";
$sql = "SELECT * FROM clientes WHERE data_ini ='$data_ini' BETWEEN '$data_fim' AND nome = '$busca' ";
$res = mysqli_query($conecta, $sql);
if(mysqli_num_rows($res) == 0){
echo "<strong><font color='red'>Não há resultados para exibir</font></strong>";
}$pesquisa = $result ;
$aposta = $pesquisa['valor_aposta'];
$percent = 6;
$retorno = (float)($percent / 100) * $aposta;
echo "
<table>
<tr>
<td><strong><font color='blue'>Nome</font></strong></td>
<td>".$pesquisa['nome']."</td>
</tr>
<tr>
<td><strong><font color='blue'>Email</font></strong></td>
<td>".$pesquisa['email']."</td>
</tr>
<tr>
<td><strong><font color='blue'>Idade</font></strong></td>
<td>".$pesquisa['idade']."</td>
</tr>
<tr>
<td><strong><font color='blue'>Aposta</font></strong></td>
<td>".$pesquisa['valor_aposta']."</td>
</tr>
<tr>
<td><strong><font color='blue'>Retorno</font></strong></td>
<td>".$retorno."</td>
</tr>
<tr>
<td></td>
</tr>
</table>
";
}
}
}
?>
</body>
</html>
</code>$sql = "SELECT * FROM clientes WHERE (data_ini BETWEEN '$data_ini' AND '$data_fim') AND nome = '$busca' ";
>
$sql = "SELECT * FROM clientes WHERE (data_ini BETWEEN '$data_ini' AND '$data_fim') AND nome = '$busca' ";
Muito obrigado ESerra, essa sua query funcionou. Como disse vi muitos exemplos sem êxito, nem tudo na net é o correto ou presta.
Tem duas questões:
1 - A sintaxe do seu BETWEEN está errado;
2 - Você está montando tudo fora do laço, logo ele só exibirá o último resultado independente de quantos retornarem.