2010-11-07 48 views
0

我無法從我的代碼生成正確的輸出,從MySQL數據庫動態列出記錄時遇到問題。 這是形式:使用ajax從mysql數據庫中列出記錄

<form action="lister.php" method="get" id="info" name="weboptions" class="lesser"> 
    <h2>List Products</h2> 
    <input type="radio" name="xo" value="n" class="styled">Name<br/> 
    <input type="radio" name="xo" value="c" class="styled">Category<br/> 
    <input type="radio" name="xo" value="d" class="styled">Description 
     <div id="dta-wrap" class="slider"> 
     <input type="text" id="neym" name="neym" onKeyUp="bypname(this.value)" class="DEPENDS ON xo BEING n AND CONFLICTS WITH XO BEING d OR XO BEING c"/></span> 
     </div><!--/#dta-wrap--> 
    <div id="dta2-wrap" class="slider"> 
     <input type="text" id="c" name="c" onKeyUp="bycat(this.value)" class="DEPENDS ON xo BEING c AND CONFLICTS WITH XO BEING d OR XO BEING n"/></span> 
    </div><!--/#dta-wrap--> 

    <div id="dta3-wrap" class="slider"> 
     <input type="text" id="dta3" name="dta3" onKeyUp="bydesc(this.value)" class="DEPENDS ON xo BEING d AND CONFLICTS WITH XO BEING n OR XO BEING c"/></span> 
    </div> 
<a href="adminpage.php"><input type="button" id="btn" name="back" value="back"></a> 
</form> 
<div id="resultcat"></div> 

這是JavaScript文件,該文件調用PHP文件,其中查詢所在位置:

function bydesc(str) 
{ 
if (str=="") 
    { 
    document.getElementById("resultcat").innerHTML=""; 
    return; 
    } 
if (window.XMLHttpRequest) 
    { 
    xmlhttp=new XMLHttpRequest(); 
    } 
else 
    { 
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
    } 
xmlhttp.onreadystatechange=function() 
    { 
    if (xmlhttp.readyState==4 && xmlhttp.status==200) 
    { 
    document.getElementById("resultcat").innerHTML=xmlhttp.responseText; 
    } 
    } 
xmlhttp.open("GET","listerdesc.php?dta3="+str,true); 
xmlhttp.send(); 
} 

function bypname(str) 
{ 
if (str=="") 
    { 
    document.getElementById("resultcat").innerHTML=""; 
    return; 
    } 
if (window.XMLHttpRequest) 
    { 
    xmlhttp=new XMLHttpRequest(); 
    } 
else 
    { 
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
    } 
xmlhttp.onreadystatechange=function() 
    { 
    if (xmlhttp.readyState==4 && xmlhttp.status==200) 
    { 
    document.getElementById("resultcat").innerHTML=xmlhttp.responseText; 
    } 
    } 
xmlhttp.open("GET","listerpname.php?dta="+str,true); 
xmlhttp.send(); 
} 

function bycat(str) 
{ 
if (str=="") 
    { 
    document.getElementById("resultcat").innerHTML=""; 
    return; 
    } 
if (window.XMLHttpRequest) 
    { 
    xmlhttp=new XMLHttpRequest(); 
    } 
else 
    { 
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
    } 
xmlhttp.onreadystatechange=function() 
    { 
    if (xmlhttp.readyState==4 && xmlhttp.status==200) 
    { 
    document.getElementById("resultcat").innerHTML=xmlhttp.responseText; 
    } 
    } 
xmlhttp.open("GET","listercat.php?dta2="+str,true); 
xmlhttp.send(); 
} 

而這正是該查詢(listerpname.php):

<?php 
if(!empty($_GET['dta'])){ 
$pname=$_GET['dta']; 
$result1=query_database("SELECT * FROM prod_table WHERE PRODUCT LIKE'%$pname%'", "onstor", $link); 
?> 

<?php 
if(mysql_fetch_assoc($result1)==0){ 
    echo "<center><h3 id='wyt'>Your query produced no results..</h3></center>"; 
}else{ 
?>   

<center>   
<table border="1"> 
<thead> 
    <tr> 
    <th>PID</th> 
    <th>PRODUCT</th> 
    <th>CATEGORY</th> 
    <th>DESCRIPTION</th> 

    <th>QTY_ON_HAND</th> 
    <th>REORDER_QTY</th> 
<th>DEALER PRICE</th> 
    <th>SELL PRICE</th> 
    </tr> 
</thead> 

<?php 
while($row=mysql_fetch_assoc($result1)) { 

?> 
    <tbody> 
      <tr> 
     <td><a href="delprod.php?prodid=<?php echo $row['PID']; ?>"><?php echo $row['PID']; ?></td> 
     <td><a href="updateprod.php?prodname=<?php echo $row['PRODUCT']; ?>" class="plain"><?php echo $row['PRODUCT']; ?></a></td> 

     <td><?php echo $row['CATEGORY']; ?></td> 
     <td><?php echo $row['P_DESC']; ?></td> 

     <td><?php echo $row['QTYHAND']; ?></td> 
     <td><?php echo $row['REORDER_LVL']; ?></td> 
     <td><?php echo $row['B_PRICE']; ?></td> 
     <td><?php echo $row['S_PRICE']; ?></td> 
      </tr> 
     </tbody> 

<?php } ?> 
<?php } ?> 
<?php } ?> 

的問題是,如果我在3字母詞(「甲苯磺酰」)類型的輸出只有一個記錄。它應該輸出2條記錄。因爲在我的數據庫中有2個以'tos'開頭的記錄。它只輸出我添加的最新記錄。 當我這樣做:

SELECT * FROM prod_table WHERE PRODUCT LIKE'$pname%' 

它使情況惡化。請幫忙。

+0

這就是你的'SELECT'查詢真的被調用了嗎('LIKE'和'$ pname'之間沒有空格)?或者在粘貼問題時出現錯字? – 2010-11-07 03:03:59

回答

4

它看起來像問題是,當你在下面一行檢查結果,要移動光標1和ResultSet中被丟棄的第一個記錄:

if(mysql_fetch_assoc($result1)==0){ 

您可能需要使用代替mysql_num_rows函數,以避免丟失結果集中的第一條記錄。

if(mysql_num_rows($result1)==0){ 
+0

我剛剛做出同樣的評論,但你已經擁有了它:)小小的增加:你也可以先將數據提取到'$ row'中,如果包含錯誤,則停止。如果不是,則輸入已經填充了「$ row」的while循環,並在循環結尾處填充$ row。保存你對'mysql_num_rows()'的調用。呃,好吧。 – thomaspaulb 2010-11-07 04:44:08

相關問題