noname346 0 Posted March 5, 2020 Report Share Posted March 5, 2020 (edited) Eu estou a fazer um estágio e propuseram um software web-based de facturação de salão de beleza e com isso como trabalho de estágio e com isso estou a fazer e fiquei impedido num filtro que me pediram para fazer num dos menus e o filtro é de data inicio e data fim. Código: <?php $sql = 'SELECT * FROM custos'; $resultado = mysqli_query($ligacao,$sql) or die("Não tem dados para apresentar !"); ?> Data Inicial <input id="datainicial" name="datainicial" type = 'date'> Data Final <input id="datafinal" name="datafinal" type = 'date'> <input type="submit" class="button3" value = "Buscar"> <p></p> <table style="width: 50%;" border='0' id="table" name="table"> <thead> <tr> <th width="10%" align='center' bgcolor='#baba84'>Data</th> <th width="25%" align='center' bgcolor='#baba84'>Nome do custo</th> <th width="8%" align='center' bgcolor='#baba84'>Valor</th> </tr> </thead> <tbody> <?php $total_valor = 0; while($registo = mysqli_fetch_assoc($resultado)){ $valor=number_format($registo['valor'], 2, ',', ' ')."€"; echo '<tr>'; echo'<td align="left" bgcolor="white">'.date('d/m/Y', strtotime($registo['data'])).'</td>'; echo'<td bgcolor="white">'.$registo['nome_custo'].'</td>'; echo "<td align='left' bgcolor='white'>".$valor."</td>"; print ("<td bgcolor='white' width='1%'><a href='alterar_custos.php?num={$registo['num']}&data={$registo['data']}&nome={$registo['nome_custo']}&valor={$registo['valor']}' class='button2'><i class='fa fa-edit'></i></</a></td>"); print ("<td bgcolor='white' width='1%'><a href='eliminar_custos.php?num={$registo['num']}' class='button2'><i class='fa fa-trash'></i></</a></td>"); echo'</tr>'; $total_valor += $registo['valor']; } ?> </tbody> <tfoot> <tr> <td align='left' colspan='2' bgcolor='#baba84'><b>Valor Total</b></td> <td align='left' bgcolor='white'><?php echo number_format($total_valor, 2, ',', ' ')."€"; ?></td> </tr> </tfoot><!----> </table> <?php mysqli_close($ligacao); ?> Edited March 5, 2020 by noname346 Link to post Share on other sites
noname346 0 Posted March 5, 2020 Author Report Share Posted March 5, 2020 1 minuto atrás, noname346 disse: Eu estou a fazer um estágio e propuseram um software web-based de facturação de salão de beleza e com isso como trabalho de estágio e com isso estou a fazer e fiquei impedido num filtro que me pediram para fazer num dos menus e o filtro é de data inicio e data fim. Código: <?php $sql = 'SELECT * FROM custos'; $resultado = mysqli_query($ligacao,$sql) or die("Não tem dados para apresentar !"); ?> Data Inicial <input id="datainicial" name="datainicial" type = 'date'> Data Final <input id="datafinal" name="datafinal" type = 'date'> <input type="submit" class="button3" value = "Buscar"> <p></p> <table style="width: 50%;" border='0' id="table" name="table"> <thead> <tr> <th width="10%" align='center' bgcolor='#baba84'>Data</th> <th width="25%" align='center' bgcolor='#baba84'>Nome do custo</th> <th width="8%" align='center' bgcolor='#baba84'>Valor</th> </tr> </thead> <tbody> <?php $total_valor = 0; while($registo = mysqli_fetch_assoc($resultado)){ $valor=number_format($registo['valor'], 2, ',', ' ')."€"; echo '<tr>'; echo'<td align="left" bgcolor="white">'.date('d/m/Y', strtotime($registo['data'])).'</td>'; echo'<td bgcolor="white">'.$registo['nome_custo'].'</td>'; echo "<td align='left' bgcolor='white'>".$valor."</td>"; print ("<td bgcolor='white' width='1%'><a href='alterar_custos.php?num={$registo['num']}&data={$registo['data']}&nome={$registo['nome_custo']}&valor={$registo['valor']}' class='button2'><i class='fa fa-edit'></i></</a></td>"); print ("<td bgcolor='white' width='1%'><a href='eliminar_custos.php?num={$registo['num']}' class='button2'><i class='fa fa-trash'></i></</a></td>"); echo'</tr>'; $total_valor += $registo['valor']; } ?> </tbody> <tfoot> <tr> <td align='left' colspan='2' bgcolor='#baba84'><b>Valor Total</b></td> <td align='left' bgcolor='white'><?php echo number_format($total_valor, 2, ',', ' ')."€"; ?></td> </tr> </tfoot><!----> </table> <?php mysqli_close($ligacao); ?> Esqueci me de dizer que eu quero. O que queria era que desse o filtro e mais uma pequena coisa, para aparecer a tabela tenho de usar o filtro Link to post Share on other sites
Cerzedelo 41 Posted March 5, 2020 Report Share Posted March 5, 2020 1 hora atrás, noname346 disse: Esqueci me de dizer que eu quero. O que queria era que desse o filtro e mais uma pequena coisa, para aparecer a tabela tenho de usar o filtro Para ter um filtro entre as datas de inicio e fim só tem de alterar a instrução sql de forma a postar os valores entre essas datas. SELECT * FROM tabela WHERE (data>$datainicio AND data<$datafim). Pode ainda utilizar o operador BETWEEN. SELECT * FROM tabela WHERE data BETWEEN $datainicio AND $datafim Link to post Share on other sites
noname346 0 Posted March 5, 2020 Author Report Share Posted March 5, 2020 13 minutos atrás, Cerzedelo disse: Para ter um filtro entre as datas de inicio e fim só tem de alterar a instrução sql de forma a postar os valores entre essas datas. SELECT * FROM tabela WHERE (data>$datainicio AND data<$datafim). Pode ainda utilizar o operador BETWEEN. SELECT * FROM tabela WHERE data BETWEEN $datainicio AND $datafim Eu fiz assim e não está aparecer nada na tabela. <form method="POST"> Data Inicial <input name="datainicio" type = 'date'> Data Final <input name="datafim" type = 'date'> <input type="submit" class="button3" value="Buscar"> </form> <?php if(isset($_POST['datainicio']) && isset($_POST['datafim'])){ $datainicio=$_POST['datainicio']; $datafim=$_POST['datafim']; $query="SELECT * FROM custos WHERE data BETWEEN $datainicio AND $datafim"; $res=mysqli_query($ligacao,$query) or die(mysqli_error($ligacao)); ?> <p></p> <table style="width: 100%;" border='0' id="table" name="table"> <thead> <tr> <th width="2%" align='center' bgcolor='#baba84'>Data</th> <th width="5%" align='center' bgcolor='#baba84'>Nome do custo</th> <th width="1%" align='center' bgcolor='#baba84'>Valor</th> </tr> </thead> <tbody> <?php $total_valor = 0; while($registo = mysqli_fetch_assoc($res)){ $valor=number_format($registo['valor'], 2, ',', ' ')."€"; echo '<tr>'; echo'<td align="center" bgcolor="white">'.$registo['data'].'</td>'; echo'<td bgcolor="white">'.$registo['nome_custo'].'</td>'; echo "<td bgcolor='white'>".$valor."</td>"; print ("<td bgcolor='white' width='1%'><a href='alterar_custos.php?num={$registo['num']}&data={$registo['data']}&nome={$registo['nome_custo']}&valor={$registo['valor']}' class='button2'><i class='fa fa-edit'></i></</a></td>"); print ("<td bgcolor='white' width='1%'><a href='eliminar_custos.php?num={$registo['num']}' class='button2'><i class='fa fa-trash'></i></</a></td>"); echo'</tr>'; $total_valor += $registo['valor']; } ?> </tbody> <tfoot> <tr> <td align='left' colspan='2' bgcolor='#baba84'><b>Valor Total</b></td> <td align='left' bgcolor='white'><?php echo number_format($total_valor, 2, ',', ' ')."€";?></td> </tr> </tfoot><!----> </table> <?php mysqli_close($ligacao); } ?> Link to post Share on other sites
HappyHippyHippo 1,162 Posted March 5, 2020 Report Share Posted March 5, 2020 sem entrar pelos meandros de várias situações que não deveriam ser feitas no código apresentado, vamos nos centrar naquilo que faz com que não apareça a informação. datas devem ser tratadas como strings, e como tal, necessitam de ser ladeadas pelo caracter '. por outras palavras, terás de colocar esses caracteres, antes e depois de $datainicio e $datafim dentro da tua instrução de SQL IRC : sim, é algo que ainda existe >> #p@p Portugol Plus Link to post Share on other sites
noname346 0 Posted March 5, 2020 Author Report Share Posted March 5, 2020 (edited) 9 minutos atrás, HappyHippyHippo disse: sem entrar pelos meandros de várias situações que não deveriam ser feitas no código apresentado, vamos nos centrar naquilo que faz com que não apareça a informação. datas devem ser tratadas como strings, e como tal, necessitam de ser ladeadas pelo caracter '. por outras palavras, terás de colocar esses caracteres, antes e depois de $datainicio e $datafim dentro da tua instrução de SQL Já aparece. Usei o date(), ficou assim $datainicio=date("d/m/Y", strtotime($_POST['datainicio'])); $datafim= date("d/m/Y", strtotime($_POST['datafim'])); , mas ele só pesquisa o dia e quero que pesquise dia/mes/ano não só um. https://imgur.com/a/fsWKdpA uma imagem para enteder Edited March 5, 2020 by noname346 faltava uma imagem Link to post Share on other sites
HappyHippyHippo 1,162 Posted March 5, 2020 Report Share Posted March 5, 2020 altera para o formato que o MySQL pretende : "Y-m-d" IRC : sim, é algo que ainda existe >> #p@p Portugol Plus Link to post Share on other sites
noname346 0 Posted March 5, 2020 Author Report Share Posted March 5, 2020 (edited) 9 minutos atrás, HappyHippyHippo disse: altera para o formato que o MySQL pretende : "Y-m-d" Já está a dar, eu agr quando adicionar vai ser como - em vez / e mudei no mysql de / para - o que tinha inserido Obrigado pela a ajuda Edited March 5, 2020 by noname346 Link to post Share on other sites
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now