Ir para conteúdo

POWERED BY:

Arquivado

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

diegomarangoni

O que há de errado???

Recommended Posts

O que há de errado com o codigo abaixo?, eu preencho o formulario de acordo com um registro no bd e nada aparece na tela, e se eu deixo de preencher um campo no formulario aparece o erro:Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in c:\www\go.php on line 49--------------------------------------------<?php//Recebe as informações digitadas no formulario$dia = $_POST[dia];$mes = $_POST[mes];$ano = $_POST[ano];//MySQL$m_servidor = "localhost";$m_usuario = "root";$m_senha = "";//Conecta ao MySQL$conecta = mysql_connect($m_servidor, $m_usuario, $m_senha);$bd = mysql_select_db("principal", $conecta);//Busca no BD$busca = mysql_query("SELECT * FROM dados WHERE DAY(c1_data) = $dia AND MONTH(c1_data) = $mes AND YEAR(c1_data) = $ano AND DAY(c2_data) = $dia AND MONTH(c2_data) = $mes AND YEAR(c2_data) = $ano AND DAY(c3_data) = $dia AND MONTH(c3_data) = $mes AND YEAR(c3_data) = $ano AND DAY(c4_data) = $dia AND MONTH(c3_data) = $mes AND YEAR(c4_data) = $ano AND DAY(c5_data) = $dia AND MONTH(c3_data) = $mes AND YEAR(c5_data) = $ano", $conecta);$somar = 0;//Escreve a tabelaecho '<table>';echo '<tr>';echo '<td></td>';echo '<td></td>';echo '<td></td>';echo '<td></td>';echo '<td></td>';echo '<td></td>';echo '<td></td>';echo '<td></td>';echo '<td></td>';echo '<td></td>';echo '<td></td>';echo '<td></td>';echo '<td></td>';echo '<td></td>';echo '<td></td>';echo '<td></td>';echo '<td></td>';echo '<td></td>';echo '</tr>';//Escreve os resultadoswhile($resul = mysql_fetch_array($busca)){ echo '<tr>'; echo '<td>'.$resul['codigo'].'</td>'; echo '<td>'.$resul['nome'].'</td>'; echo '<td>'.$resul['total'].'</td>'; echo '<td>'.$resul['c1_data'].'</td>'; echo '<td>'.$resul['c1_valor'].'</td>'; echo '<td>'.$resul['c1_num'].'</td>'; echo '<td>'.$resul['c2_data'].'</td>'; echo '<td>'.$resul['c2_valor'].'</td>'; echo '<td>'.$resul['c2_num'].'</td>'; echo '<td>'.$resul['c3_data'].'</td>'; echo '<td>'.$resul['c3_valor'].'</td>'; echo '<td>'.$resul['c3_num'].'</td>'; echo '<td>'.$resul['c4_data'].'</td>'; echo '<td>'.$resul['c4_valor'].'</td>'; echo '<td>'.$resul['c4_num'].'</td>'; echo '<td>'.$resul['c5_data'].'</td>'; echo '<td>'.$resul['c5_valor'].'</td>'; echo '<td>'.$resul['c5_num'].'</td>'; echo '</tr>'; //Soma os campos do BD $somar = $somar + $resul['total'];}?>--------------------------------------------

Compartilhar este post


Link para o post
Compartilhar em outros sites

busca = mysql_query("SELECT * FROM dados WHERE DAY(c1_data) = $dia AND MONTH(c1_data) = $mes AND

YEAR(c1_data) = $ano AND DAY(c2_data) = $dia AND MONTH(c2_data) = $mes AND

YEAR(c2_data) = $ano AND DAY(c3_data) = $dia AND MONTH(c3_data) = $mes AND

YEAR(c3_data) = $ano AND DAY(c4_data) = $dia AND MONTH(c3_data) = $mes AND

YEAR(c4_data) = $ano AND DAY(c5_data) = $dia AND MONTH(c3_data) = $mes AND

YEAR(c5_data) = $ano", $conecta);

 

Vendo por cima, ta faltando aspas simples nas variaveis do WHERE...

WHERE DAY(c1_data) = '$dia'
ao inves de

WHERE DAY(c1_data) = $dia  
Faca isso em todas as variaveis do WHERE... ;)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Resolveu o erro, mas continua não exibindo o resultadoPagina do formulario:----------------------------<html><title>Verificar Data</title><body bgcolor="#FFFFFF" leftmargin="100" topmargin="100"><form action="relatorio.php" method="post" name="busca"> <table width="179" border="0" cellpadding="0" cellspacing="0"> <tr> <td width="179" height="45"><font color="#000000" size="2" face="Arial">Data:<br> <select name="dia"> <option value="" selected></option> <option value="01">01</option> <option value="02">02</option> <option value="03">03</option> <option value="04">04</option> <option value="05">05</option> <option value="06">06</option> <option value="08">07</option> <option value="09">09</option> <option value="10">10</option> <option value="11">11</option> <option value="12">12</option> <option value="13">13</option> <option value="14">14</option> <option value="15">15</option> <option value="16">16</option> <option value="17">17</option> <option value="18">18</option> <option value="19">19</option> <option value="20">20</option> <option value="21">21</option> <option value="22">22</option> <option value="23">23</option> <option value="24">24</option> <option value="25">25</option> <option value="26">26</option> <option value="27">27</option> <option value="28">28</option> <option value="29">29</option> <option value="30">30</option> <option value="31">31</option> </select> <select name="mes"> <option value="" selected></option> <option value="01">01</option> <option value="02">02</option> <option value="03">03</option> <option value="04">04</option> <option value="05">05</option> <option value="06">06</option> <option value="08">07</option> <option value="09">09</option> <option value="10">10</option> <option value="11">11</option> <option value="12">12</option> </select> <select name="ano"> <option value="" selected></option> <option value="2005">2005</option> <option value="2004">2004</option> <option value="2003">2003</option> <option value="2002">2002</option> <option value="2001">2001</option> <option value="2000">2000</option> </select> </font> </td> </tr> <tr> <td><input name="enviar" type="submit" value="Pesquisar"></td> </tr> </table></form>----------------------------

Compartilhar este post


Link para o post
Compartilhar em outros sites

o que eu entendi é que você quer buscar os registros cujos campos

 

c1_data

c2_data

c3_data

c4_data

c5_data

 

sejam iguais à data selecionada pelo usuário

 

a forma como você está montando a sua query sql é redundante:

 

 

SELECT * FROM dados WHERE DAY(c1_data) = $dia AND MONTH(c1_data) = $mes AND

YEAR(c1_data) = $ano AND DAY(c2_data) = $dia AND MONTH(c2_data) = $mes AND

YEAR(c2_data) = $ano AND DAY(c3_data) = $dia AND MONTH(c3_data) = $mes AND

YEAR(c3_data) = $ano AND DAY(c4_data) = $dia AND MONTH(c3_data) = $mes AND

YEAR(c4_data) = $ano AND DAY(c5_data) = $dia AND MONTH(c3_data) = $mes AND

YEAR(c5_data) = $ano

 

se os campos de data forem do tido date ou datetime

você poderá fazer dessa forma:

 

 

// ...

 

 

$data = $ano."-".$mes."-".$dia;

 

$sql = "SELECT * FROM dados";

WHERE c1_data = '".$data."'";

AND c2_data = '".$data."'";

AND c3_data = '".$data."'";

AND c4_data = '".$data."'";

AND c5_data = '".$data."'";

 

 

$busca = mysql_query($sql,$conecta);

 

 

// segue o script ...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Funcionou!!!, mas eu queria fazer o preenchimento do formulario opcional, ou seja, se o usuario selecionar somente o dia, por exemplo, o php pesquisaria nas colunas c1_data, c2_data, c3_data, c4_data, c5_data, listaria somente os registros que contenham aquele dia mas se c1_data retornase falso ele pesquisaria na c2_data e assim por diante.

Compartilhar este post


Link para o post
Compartilhar em outros sites

...mas se c1_data retornase falso ele pesquisaria na c2_data e assim por diante.

powentão você teria que usar OR ao invés de ANDvocê pode criar uma estrutura condicional que verificará que dados foram selecionados pelo usuáriose selecionar apenas o dia, por exemplo, então monte a sua query com a função DAY()se escolher a apenas o ano, use YEAR()...acho que entendeu

Compartilhar este post


Link para o post
Compartilhar em outros sites

PERFEITOOOOO!!!!!Valeu!!!!!!!

Comemorei antes da hora, :wacko: O negocio funciona assim, o cara vai entra na pagina do formulario, e escolhe o dia o mes e o ano em uma box list, quando clica em pesquisar o php procura a data em varias colunas no bdmais ou menos assim:| nome | c1_data | c2_data | fulano 2005-01-01 2005-02-01dai o php seleciona os dados de acordo com o que o cara preencheu, sendo que, se ele escolher somente o ano 2005 o php pegara tudo com o ano de 2005 e se preencher somente o mes, pegara tudo do mes selecionado, desde de c1_data ate c5_data, sendo que na tela só aparecera as colunas cX_data que o bd achou, tipo, se a data que o cara pesquisou tem somente em c1_data, somente c1_data sera escrita na tela, porem se um outro registro tiver a mesma data em c1_data e c5_data, na tela escrevera ambas, a segunda em uma nova linha como se fosse um outro registro.não to conseguindo fazer isso ai, alguem poderia ajudar?

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.