noname346 Posted March 5, 2020 at 12:16 PM Report Share #617497 Posted March 5, 2020 at 12:16 PM (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 at 12:16 PM by noname346 Link to comment Share on other sites More sharing options...
noname346 Posted March 5, 2020 at 12:18 PM Author Report Share #617499 Posted March 5, 2020 at 12:18 PM 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 comment Share on other sites More sharing options...
Cerzedelo Posted March 5, 2020 at 01:55 PM Report Share #617500 Posted March 5, 2020 at 01:55 PM 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 comment Share on other sites More sharing options...
noname346 Posted March 5, 2020 at 02:09 PM Author Report Share #617501 Posted March 5, 2020 at 02:09 PM 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 comment Share on other sites More sharing options...
HappyHippyHippo Posted March 5, 2020 at 03:54 PM Report Share #617502 Posted March 5, 2020 at 03:54 PM 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 comment Share on other sites More sharing options...
noname346 Posted March 5, 2020 at 04:01 PM Author Report Share #617504 Posted March 5, 2020 at 04:01 PM Em 05/03/2020 às 16:54, 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. qbu9Lpg.jpeg uma imagem para entender Link to comment Share on other sites More sharing options...
HappyHippyHippo Posted March 5, 2020 at 04:03 PM Report Share #617505 Posted March 5, 2020 at 04:03 PM altera para o formato que o MySQL pretende : "Y-m-d" IRC : sim, é algo que ainda existe >> #p@p Portugol Plus Link to comment Share on other sites More sharing options...
noname346 Posted March 5, 2020 at 04:10 PM Author Report Share #617506 Posted March 5, 2020 at 04:10 PM (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 at 04:13 PM by noname346 Link to comment Share on other sites More sharing options...
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