2014-02-10 45 views
1

我想從excel文件中檢索數據並將其發送到php文件以檢查它是否存在於數據庫中,否則通知用戶數據錯誤。數據驗證php/mysql/jquery

HTML

<form name="trialInsert" id="trialInsert" action="trial_insert_excel.php" method="post"> 
<?php foreach($data as $row) { ?> 
<tr class="item-row"> 
<td><input type="text" name="acc_code[]" id="acc_code[]" class="code" onchange="validate();" value="<?php echo ($row['acc_code']); ?>"/></td> 
<td><input type="text" readonly name="int_code[]" id="int_code[]" value="<?php echo ($row['int_code']); ?>"/></td> 
<td><input type="text" readonly name="debit[]" id="debit[]" value="<?php echo ($row['debit']); ?>"/></td> 
<td><input type="text" readonly name="credit[]" id="credit[]" value="<?php echo($row['credit']); ?>"/></td> 
<td><input type="text" readonly name="debitOld[]" id="debitOld[]" value="<?php echo($row['debitOld']); ?>"/></td> 
<td><input type="text" readonly name="creditOld[]" id="creditOld[]" value="<?php echo($row['creditOld']); ?>"/></td> 
</tr> 
<?php } ?> 

jQuery的

$(document).ready(function(){ 
    var code = $('.code').val() 
    jQuery.ajax({ 
     type: 'POST', 
     source:'autocomplete.php', 
     data: 'acc_code='+ code, 
     cache: false, 
     success: function(response){ 
      if(response > 0){ 
       alert(code); 
      } else { 
       $('.code').addClass('errorClass'); 
      } 
     } 
    }); 
}); 

function validate(){ 
    var code = $('.code').val() 
    jQuery.ajax({ 
     type: 'POST', 
     url: 'autocomplete.php', 
     data: 'acc_code='+ code, 
     cache: false, 
     success: function(response){ 
      if(response > 0){ 
       alert(code); 
      } else { 
       $('.code').addClass('errorClass'); 
      } 
     } 
    }); 
} 

PHP

$q=$_GET['q']; 
$my_data=mysql_real_escape_string($q); 
$mysqli=mysqli_connect('localhost','root','03300130','mydb') or die("Database Error"); 
$sql="SELECT acc_code,acc_desc,acc_type FROM charts WHERE acc_code LIKE '%$my_data%' ORDER BY acc_code"; 
$result = mysqli_query($mysqli,$sql) or die(mysqli_error()); 
if($result) { 
    echo 1; 
} else { 
    echo 0; 
} 

它看起來像返回值是WR ong或其他東西,文本框總是變紅,就好像輸入的數據是錯誤的,即使它不是。

+0

這段時間我已經介紹過了,但在將來,請在提交之前檢查問題預覽。 – George

+0

謝謝,我在這裏新建 – Elias

回答

0

你在混合mysqli_*mysql_*命令。從mysql_real_escape_string()文檔

報價:

Returns the escaped string, or FALSE on error. 

既然你沒有mysql_connect()通話前,將最有可能返回false。你可以用var_dump($my_data);來檢查。

您可以使用mysqli_real_escape_string()代替,或者您應該查看準備好的語句。注意:mysqli_real_escape_string()也必須在撥打mysqli_connect()後致電。

+0

我用一個自動完成的例子使用相同的命令,它返回所需的值,但在這裏我不知道它爲什麼不是, – Elias

+0

$ q = $ _ GET ['q']; $ mysqli = mysqli_connect('localhost','root','03300130','mydb')或死(「數據庫錯誤」); \t $ my_data = mysqli_real_escape_string($ mysqli,$ q); \t $ sql =「SELECT acc_code,acc_desc,acc_type FROM charts WHERE acc_code LIKE'%$ my_data%'ORDER BY acc_code」; \t $ result = mysqli_query($ mysqli,$ sql)或die(mysqli_error());按照你的建議做了調整,但仍然沒有什麼,我不知道它返回的值是什麼,我試圖比較false,true,0,1,null,但沒有任何 – Elias

+0

使用'var_dump()'進行調試。 –