0

だから私は異なる基準を持つ3つのドロップダウンリストを持つフォームを持っています.1つは月(mes)、年(ano)、タイプ(tipo_id)を検索することです。

私がやりたいことは、ここでの多くの質問のおかげで、この場所に進むことができました.2または1の3つのドロップダウンから何かを選択すると、それに関する情報を参照する表が表示されます.それですが、tipo_id については、コードで使用している方法で MONTHNAME と YEAR を使用することに問題があると思います。これを機能させる方法を知りたいと思っていました。事前に感謝します

 // Connect to server and select database.
mysql_connect("$host", "$username", "$password")or die("cannot connect"); 
mysql_select_db("$db_name")or die("cannot select DB");

$mes = mysql_real_escape_string($_POST['mes']);
$ano = mysql_real_escape_string($_POST['ano']);
$tipo = mysql_real_escape_string($_POST['tipo_id']);


$meses = array( 
  Janeiro => 'January', 
  Fevereiro =>'February', 
  Março =>'March', 
  Abril =>'April', 
  Maio =>'May', 
  Junho =>'June', 
  Julho => 'July', 
  Agosto =>'August', 
  Setembro =>'September', 
  Outubro =>'October', 
  Novembro =>'November', 
  Dezembro =>'December' 
); 


$sql4 = "SELECT * FROM fluxo ";
$searches = array();
if ($mes  != '') $searches[] = " OR MONTHNAME(data) = '".$meses[$mes]."'";
if ($ano  != '') $searches[] = " OR YEAR(data) = '".$ano."'";
if ($tipo != '') $searches[] = " OR tipo = '".$tipo."'";
if (count($searches) > 0) {
   $sql4 .= " WHERE 1 " . implode(" AND ", $searches);

echo "sql4=$sql4\n";



//$sql4 = "SELECT tipo, movimento, valor, data FROM fluxo WHERE tipo = '".$tipo."' AND MONTHNAME(data) = '".$meses[$mes]."' AND YEAR(data) = '".$ano."' ";
//$result4=mysql_query($sql4); 

$result5 = mysql_query('SELECT SUM(valor) AS value_sum FROM fluxo GROUP BY tipo having count(tipo)>1'); 
$row5 = mysql_fetch_assoc($result5); 
$sum5 = $row5['value_sum'];

$n=1; 

echo "<p>Os seus resultados:<p>";

echo "<table border=0>";
echo "<tr bgcolor='#CCFFCC'>";
echo "<td style='width: 100px;'>Tipo</td>";
echo "<td style='width: 100px;'>Movimento</td>";
echo "<td style='width: 100px;'>Valor</td>";
echo "<td style='width: 100px;'>Data</td>";
echo "</tr>";

while($row = mysql_fetch_array($result4)){ 
    echo "<tr bgcolor='#CCCCCC'>";
    echo "<td style='width: 100px;'>".$row['tipo']."</td>";
    echo "<td style='width: 100px;'>".$row['movimento']."</td>";
    echo "<td style='width: 100px;'>".$row['valor']."</td>";
    echo "<td style='width: 100px;'>".$row['data']."</td>";
    echo "</tr>";

}

echo "</table>";
4

2 に答える 2

0

これはうまくいくはずです:

$sql4 = "SELECT * FROM fluxo ";
$searches = array();
if ($mes  != '') $searches[] = " MONTHNAME(data) = '".$meses[$mes]."'";
if ($ano  != '') $searches[] = " YEAR(data) = '".$ano."'";
if ($tipo != '') $searches[] = " tipo = '".$tipo."'";
if (count($searches) > 0) {
   $sql4 .= " WHERE 1 " . implode(" AND ", $searches);
}
于 2012-07-25T11:33:51.460 に答える
0

内破した後$searches、最大 3 つのWHEREキーワードを含むクエリになります。最初の 2 つの s を削除するWHEREとうまくいくはずです。

于 2012-07-25T11:37:45.607 に答える