0

これは単純なことかもしれませんが、なぜこれが機能しないのか理解できません..

ドロップダウンから日付範囲を選択できるphpフォームがあります。フィールド名には、日、月、年、および日 1、月 1、年 1 を指定しました。

送信をクリックすると、2 番目の php フォームが表示されます。2 番目の形式のコードは次のとおりです。

<?php

$username="***";
$password="***";
$database="****";

mysql_connect('localhost',$username,$password);
@mysql_select_db($database) or die( "Unable to select database");

$day = $_GET['day'];
$month = $_GET['month'];
$year = $_GET['year'];
$day1 = $_GET['day1'];
$month1 = $_GET['month1'];
$year1 = $_GET['year1'];

$date1 = "$year-$month-$day";
$date2 = "$year1-$month1-$day1";

$query = "SELECT * FROM main_stock WHERE curr_timestamp BETWEEN '$date1' AND '$date2'";

$result=mysql_query($query);

$num=mysql_num_rows($result); 

?>

<table border="1" cellspacing="2" cellpadding="2">
<tr>
<td><b><font face="Arial, Helvetica, sans-serif">Product Description</font></b></td>
<td><b><font face="Arial, Helvetica, sans-serif">Category</font></b></td>
<td><b><font face="Arial, Helvetica, sans-serif">Master Category</font></b></td>
<td><b><font face="Arial, Helvetica, sans-serif">Barcode</font></b></td>
<td><b><font face="Arial, Helvetica, sans-serif">Status</font></b></td>
<td><b><font face="Arial, Helvetica, sans-serif">TimeStamp</font></b></td>
<td><b><font face="Arial, Helvetica, sans-serif">New Own</font></b></td>
<td><b><font face="Arial, Helvetica, sans-serif">Serial No.</font></b></td>
</tr>

<?php
$i=0;
while ($i < $num) {

$f1=mysql_result($result,$i,"product_desc");
$f2=mysql_result($result,$i,"category");
$f3=mysql_result($result,$i,"mastercategory");
$f4=mysql_result($result,$i,"barcode");
$f5=mysql_result($result,$i,"status");
$f6=mysql_result($result,$i,"curr_timestamp");
$f7=mysql_result($result,$i,"newown");
$f8=mysql_result($result,$i,"serial");
?>

<tr>
<td><font face="Arial, Helvetica, sans-serif"><?php echo $f1; ?></font></td>
<td><font face="Arial, Helvetica, sans-serif"><?php echo $f2; ?></font></td>
<td><font face="Arial, Helvetica, sans-serif"><?php echo $f3; ?></font></td>
<td><font face="Arial, Helvetica, sans-serif"><?php echo $f4; ?></font></td>
<td><font face="Arial, Helvetica, sans-serif"><?php echo $f5; ?></font></td>
<td><font face="Arial, Helvetica, sans-serif"><?php echo $f6; ?></font></td>
<td><font face="Arial, Helvetica, sans-serif"><?php echo $f7; ?></font></td>
<td><font face="Arial, Helvetica, sans-serif"><?php echo $f8; ?></font></td>
</tr>


<?php



$i++;
}
$num_rows = mysql_num_rows($result);

echo "$num_rows Rows\n";
mysql_close();
?>

これが機能しない理由はありますか?

どこが間違っているのかわかりません。「ステータス」などの日付だけでなく別のオプションがある場合に結果を表示しますが、これが取り出され、日付範囲間のすべての結果を表示したいだけでは機能しません..

これは機能します:

<?php

$username="+++";
$password="+++";
$database="+++";

mysql_connect('localhost',$username,$password);
@mysql_select_db($database) or die( "Unable to select database");

$day = $_GET['day'];
$month = $_GET['month'];
$year = $_GET['year'];
$day1 = $_GET['day1'];
$month1 = $_GET['month1'];
$year1 = $_GET['year1'];
$status = $_GET['status'];

$date1 = "$year-$month-$day";
$date2 = "$year1-$month1-$day1";

$query = "SELECT * FROM main_stock WHERE status = '$status' AND curr_timestamp BETWEEN      '$date1' AND '$date2'";

$result=mysql_query($query);

$num=mysql_num_rows($result); 

?>

<table border="1" cellspacing="2" cellpadding="2">
<tr>
<td><b><font face="Arial, Helvetica, sans-serif">Product Description</font></b></td>
<td><b><font face="Arial, Helvetica, sans-serif">Category</font></b></td>
<td><b><font face="Arial, Helvetica, sans-serif">Master Category</font></b></td>
<td><b><font face="Arial, Helvetica, sans-serif">Barcode</font></b></td>
<td><b><font face="Arial, Helvetica, sans-serif">Status</font></b></td>
<td><b><font face="Arial, Helvetica, sans-serif">TimeStamp</font></b></td>
<td><b><font face="Arial, Helvetica, sans-serif">New Own</font></b></td>
<td><b><font face="Arial, Helvetica, sans-serif">Serial No.</font></b></td>
</tr>

<?php
$i=0;
while ($i < $num) {

$f1=mysql_result($result,$i,"product_desc");
$f2=mysql_result($result,$i,"category");
$f3=mysql_result($result,$i,"mastercategory");
$f4=mysql_result($result,$i,"barcode");
$f5=mysql_result($result,$i,"status");
$f6=mysql_result($result,$i,"curr_timestamp");
$f7=mysql_result($result,$i,"newown");
$f8=mysql_result($result,$i,"serial");
?>

<tr>
<td><font face="Arial, Helvetica, sans-serif"><?php echo $f1; ?></font></td>
<td><font face="Arial, Helvetica, sans-serif"><?php echo $f2; ?></font></td>
<td><font face="Arial, Helvetica, sans-serif"><?php echo $f3; ?></font></td>
<td><font face="Arial, Helvetica, sans-serif"><?php echo $f4; ?></font></td>
<td><font face="Arial, Helvetica, sans-serif"><?php echo $f5; ?></font></td>
<td><font face="Arial, Helvetica, sans-serif"><?php echo $f6; ?></font></td>
<td><font face="Arial, Helvetica, sans-serif"><?php echo $f7; ?></font></td>
<td><font face="Arial, Helvetica, sans-serif"><?php echo $f8; ?></font></td>
</tr>


<?php



$i++;
}
$num_rows = mysql_num_rows($result);

echo "$num_rows Rows\n";
mysql_close();
?>

しかし、「ステータス」フィールドが取り出されると(そして明らかに最初のフォームのシリアルドロップダウン)、機能しなくなります...

4

1 に答える 1

0

1) PDO または少なくとも と を使用しmysql_real_escape_string()$dateください$date1

2) フォームが 経由で送信されていることを確認しますGET。その場合は、の代わりにPOST使用する必要があります。$_POST['...']$_GET

3) 日付が正しい形式であることを確認してください。これは、sprintf を使用して行うことができます。

$date = sprintf('%04d-%02d-%02d', $year, $month, $day);
$date1 = sprintf('%04d-%02d-%02d', $year1, $month1, $day1);

curr_timestamp4)有効な日付/時刻フィールド タイプであることを確認します。

于 2012-10-12T08:47:45.277 に答える