iT邦幫忙

0

想用PHP寫個多條件查詢資料庫的網頁 並顯示出來

php

各位大大 小弟是剛學PHP的新手 想用PHP寫個多條件查詢資料庫的網頁
有三個條件 日期與日期之間 品牌 商品 然後把包含這些條件的相關資料全部顯示出來
但是怎麼都抓不出來 程式碼如下
wwwwww.php

<?php 
header("Content-Type: text/html; charset=utf-8");
$db_host = "localhost";
$db_table = "www";
$db_username = "root";
$db_password = "";
if (!@mysql_connect($db_host, $db_username, $db_password)) die("資料連結失敗!");
if (!@mysql_select_db($db_table)) die("資料庫選擇失敗!");
mysql_query("SET NAMES 'utf8'");
$date = $_GET['GET_date'];
$date1 = $_GET['GET_date1'];  
$sql ="select * from yy where date,CU,CC;
$result = mysql_query($sql) or die('MySQL query error');
?>
<html>
<head>
<form action="wwwwww.php" method="GET">
<font color="green" size="5">查詢系統</font><br></br>
進貨日:
    <input type="date" name="date" value="<?= $date ?>" 
    min="<?php echo date ("Y-m-d",strtotime("-1 years")); ?>" 
    max="<?php echo date ("Y-m-d",strtotime("now")); ?>">
出貨日:
    <input type="date" name="date1"  value="<?= $date1 ?>" 
    min="<?php echo date ("Y-m-d",strtotime("-1 years")); ?>" 
    max="<?php echo date ("Y-m-d",strtotime("now")); ?>">
品牌:<select name="CU" id="CU">
	<option value="*">不拘</option>
	<option value="00">品牌1</option>
	<option value="01">品牌2</option>
	<option value="011">品牌3</option>
	<option value="01A">品牌4</option>
	<option value="02D">品牌5</option>
	<option value="01O">品牌6</option>
</select>
商品:<select name="CC" id="CC">
	<option value="*">不拘</option>
	<option value="A">商品1</option>
	<option value="A1">商品2</option>
	<option value="A2">商品3</option>
	<option value="AB">商品4</option>
	<option value="B">商品5</option>
	<option value="B1">商品6</option>
	<option value="BA">商品7</option>
	<option value="BB">商品8</option>
</select>
<input name="submit" type="submit" value="開始查詢"><br>
</form>
<? echo $row[date];   ?>
<? echo $row[CU];   ?>
<? echo $row[CC];   ?>
<? echo $row[name];   ?>
<? echo $row[number];   ?>
</head>
</html> 

想知道問題在哪 謝謝
前幾天有試著做只有日期的 但也是在SELECT這邊出錯
input.php

 <html><head>
 <title>輸入日期查詢資料</title>
 </head><body>
 <form action="test.php" method="Post">
進貨日:
    <input type="date" name="date" value="<?= $date ?>" 
    min="<?php echo date ("Y-m-d",strtotime("-1 years")); ?>" 
    max="<?php echo date ("Y-m-d",strtotime("now")); ?>">
出貨日:
    <input type="date" name="date1"  value="<?= $date1 ?>" 
    min="<?php echo date ("Y-m-d",strtotime("-1 years")); ?>" 
    max="<?php echo date ("Y-m-d",strtotime("now")); ?>">
<input name="submit" type="submit" value="開始查詢"><br>
 </form>
 </body></html> 

test.php

<html><head>
<title>查詢結果</title>
</head><body>
<?
$date=$_REQUEST["date"];
?>

</body></html>

<?php   
$db_host = "localhost";
$db_table = "www";
$db_username = "root";
$db_password = "";   
$conn = mysql_connect($db_host, $db_username, $db_password) or die('Error with MySQL connection');
mysql_query("SET NAMES 'utf8'");
mysql_select_db($db_table);   
$date = $_POST['POST_date'];
$date1 = $_POST['POST_date1'];  
SELECT * FROM yy WHERE date BETWEEN '$date' AND '$date1';
$result = mysql_query($sql) or die('MySQL query error');
  
while($row = mysql_fetch_array($result))
{
echo $row['numble']." ";
echo $row['name']."<br>";   
}
?> 
看更多先前的討論...收起先前的討論...
louischou iT邦新手 4 級 ‧ 2017-01-25 11:07:46 檢舉
這該怎麼說呢......請問相關資料你要顯示在哪個位置?
我也很好奇他是要顯示在那………
現在有加上顯示了 只是還一直跑出錯誤就是了
你的$row從那來的?
louischou iT邦新手 4 級 ‧ 2017-01-25 16:16:13 檢舉
阿,嗯.....我比較在意那個$sql.......
剛才還在改 是從這來的$sql ="select * from yy where date,CU,CC = ".$CU,.$CC,.$date AND $date1;
$result = mysql_query($sql) or die('MySQL query error');
不。是說。為什麼AND會在「字串」外????
因為我要搜尋日期之間的資料 所以想用'$date' AND '$date1'來找date 但不知道該怎麼放就是了
不不不!你有聽懂我說的「字串外」的意思嗎?
樓上是說這個嗎??SELECT * FROM yy WHERE date BETWEEN '$date' AND '$date1'
louischou iT邦新手 4 級 ‧ 2017-01-25 16:43:47 檢舉
我覺得啦......請提問者先去下載 codelobster
之後將程式碼放上該編輯器後一個一個看完錯誤提示後再說吧.....
已無力吐槽orz
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 個回答

1
海綿寶寶
iT邦大神 1 級 ‧ 2017-01-25 11:27:42

問題在於你沒有按部就班的學習

先把這篇仔細看懂
再拿去改成你要的
過程碰到問題再上來問
邦友們可以從你的問題中判斷
你是認真在學習或者只是玩票性質

另外
我要向討厭SQL-injection的邦友說聲抱歉
對還沒確定是工作上需要或是交作業的初心者
我實在沒有意願管他什麼injection
/images/emoticon/emoticon10.gif

看更多先前的回應...收起先前的回應...

其實倒不先說sql injection啦!
但是應該要請他直上PDO的。

看看他之後的回應再說吧
如果有的話...

那篇之前有看過呢 不過還是一直跑出錯誤 這次有加上顯示

你如果有看懂的話
是不會寫出下面這列程式碼的

SELECT * FROM yy WHERE date BETWEEN '$date' AND '$date1';

To:Samと可樂快跑
看了他的回應
你覺得還需要講 PDO 嗎?

還是要啊!不論何時何地都要PDO喔!
雖然換了PDO他的問題還是一樣就是了。

不過我想他最需要的果然還是能夠基礎告知語法錯誤的ide吧……
不然怎麼會貼一run就絕對error的code上來。

tzuchin iT邦新手 5 級 ‧ 2017-01-27 12:15:44 檢舉

我個人覺得...
還是先扎扎實實的把最基礎的寫法都了解之後再請他了解PDO,
PDO是要會沒錯,但是應該不是現在,一步一步來,
現在這些問題如果搞不定,也不用說到什麼PDO了吧0.0"
以目前來說,"直上"PDO,我覺得不適當XD

直上PDO已經是基礎課題了。
怎麼會不適當?
如果裝的是php7的情況下基本上連mysql()指令集都完全不能使用。
那初學不學PDO……學mysqli?
說真的學mysqli還是不如直上PDO吧!
把PDO視為「基礎課程」就不會再有適不適當的問題了。
明明就已經是被官方拋棄的作法除了維護舊系統外沒有使用必要性的東西。
何以還要繼續學習或使用?
難不成真要等到那一天連官方都把mysqli給廢掉了。
才來跟初學者說:你只有PDO這條路?
不要再推廣舊的不合時宜的被廢棄的函式集了。

echo "I Have a Pen";
echo "I Have a Durian";
echo "Oh~~!";
echo "PDO";

/images/emoticon/emoticon05.gif

0
炎之虛空
iT邦高手 3 級 ‧ 2017-01-25 23:47:43
<html><head>
<title>查詢結果</title>
</head><body>
<?
$date=$_REQUEST["date"];
?>

</body></html>

<?php   
$db_host = "localhost";
$db_table = "www";
$db_username = "root";
$db_password = "";   
$conn = mysql_connect($db_host, $db_username, $db_password) or die('Error with MySQL connection');
mysql_query("SET NAMES 'utf8'");
mysql_select_db($db_table);   
$date = $_POST['POST_date'];
$date1 = $_POST['POST_date1'];  
$sql = 'SELECT * FROM yy WHERE date BETWEEN '.$date.' AND '.$date1;
$result = mysql_query($sql) or die('MySQL query error');
  
while($row = mysql_fetch_array($result))
{
echo $row['numble']." ";
echo $row['name']."<br>";   
}
?> 

用了這程式碼還是有錯誤
$date = $_POST['POST_date']; $date1 = $_POST['POST_date1'];
這兩行 找不到原因

louischou iT邦新手 4 級 ‧ 2017-01-26 11:22:38 檢舉

因為你的 input.php 傳遞的參數叫做「date」「date1」
然後 test.php 接收的是「POST_date」「POST_date1」
結果當然是空的

這邊依舊建議:乖乖從頭學,先把範例裡面的各個參數做什麼用的搞清楚先

我要發表回答

立即登入回答