作者tkdmaf (皮皮快跑)
看板PHP
標題Re: [請益] php 撈資料庫的問題
時間Thu Jan 28 14:24:45 2010
※ 引述《godispower (omg)》之銘言:
whquery.php
<?php
$conn = mysql_connect('localhost','root','680712');
mysql_select_db("purchaseinfo",$conn);
//插入修改的部份如下:
$result = mysql_list_fields("purchaseinfo","incoming");
$field_num = mysql_num_fields($result);
for ($i = 0;$i <$field_num;$i++){
$fieldarr[] = mysql_field_name($result,$i);
}
foreach($fieldarr as $value){
if (strlen($_POST[$value]) != 0){
$where .= "{$value}='{$_POST[$value]}' AND ";
$timer +=1;
}
}
if ($timer >= 3){
$sql = "SELECT * FROM incoming WHERE ".substr($where,0,-5);
//---------------------------------------------------------
$result = mysql_query($sql,$conn);
while($row = mysql_fetch_array($result))
{
$datatable .= function get_datatable($row["id"],$row["item"]
,$row["barcode"],$row["datearrivetom"])
}
mysql_free_result($result);
mysql_close($conn);
echo $datatable;
}else{
echo "輸入資料不足,無法查詢";
fucntion get_datatable($id,$item,$barcode,$datearrivetom){
$html = "<tr><td align='left' height='20'>$id</td>";
$html .= "<td align='left'>$item</td>";
$html .= "<td align='left'>$barcode</td>";
$html .= "<td align='left'>$dataarrivetom</td></tr>";
return $html;
}
?>
由於這個方法會把表單中全部有給予欄位name名稱的全部判斷。
所以記得用不到的表單或功能(像是submit或button)不要給予name,否則會誤判。
雖然正確的寫法上應該要再加入資料庫欄位判斷。
不過怕寫得太複雜你可能一下子會意會不過來。
僅可能的不要把html和php混在一起寫。
一開始最基礎的就是先把html另外提取出來到一個函式。
讓php程式段顯得比較容易閱讀。
記得一件事,當你的php和html混在一起時。
你的html就不再是html,對php而且,他只是一個經過echo出來的字串,僅管看起來你
並沒有對html做echo的動作。
2010/01/28 17:14修訂:
加入了資料庫欄位判斷,資料庫有存在的欄位才會進行字串處理。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.136.48.82
→ emn178:這樣寫會把submit button抓進去吧 01/28 15:40
→ tkdmaf:喔!我在改寫他的HTML時就把submit的name拿掉了。 01/28 16:19
→ tkdmaf:在補文字時忘了說明了。 01/28 16:19
→ tkdmaf:正確的做法上,其實會加入和資料庫的欄位比對。 01/28 16:20
※ 編輯: tkdmaf 來自: 220.136.48.82 (01/28 16:23)
推 mycallsoft:emn178有考慮到. 01/28 16:27
→ tkdmaf:我考慮的是………萬一表單還要增加,改程式不是正確的方法 01/28 16:29
→ tkdmaf:最終目的是希望不管表單或資料庫怎麼改,程式都不用動。 01/28 16:30
※ 編輯: tkdmaf 來自: 220.136.48.82 (01/28 17:16)