2013-08-20 45 views
-1

我試圖使用下拉列表在「實時」表中進行更新。我只會在內部使用這個網頁。JavaScript只獲取第一行的變量

我真的不知道很多的JavaScript,所以我需要一些幫助。

我寫只得到第一行的值,所以並沒有真正的作品腳本...

這裏有兩個頁面代碼: HTML

<html> 
<head>  
<script> 
function UpdateUser(str) 

{ 
if (str=="") 
    { 
    document.getElementById("txtHint").innerHTML=""; 
    return; 
    } 
if (window.XMLHttpRequest) 
    {// code for IE7+, Firefox, Chrome, Opera, Safari 
    xmlhttp=new XMLHttpRequest(); 
    } 
else 
    {// code for IE6, IE5 
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
    } 
xmlhttp.onreadystatechange=function() 
    { 
    if (xmlhttp.readyState==4 && xmlhttp.status==200) 
    { 
    document.getElementById("txtHint").innerHTML=xmlhttp.responseText; 
    } 

    } 
    var lastname = document.getElementById('lastname').innerHTML;  
    var firstname = document.getElementById('firstname').innerHTML;     
    var state = document.getElementById('state').innerHTML;    

    xmlhttp.open("GET","updateuser3.php?q="+str+"&lastname="+lastname+"&firstname="+firstname+"&state="+state,true); 
    xmlhttp.send(); 
} 


</script> 
</head> 
<body> 
<?php 

$con = mysql_connect('localhost','root',''); 
if (!$con) 
    { 
    die('Could not connect: ' . mysql_error($con)); 
    } 


mysql_select_db("test"); 
$sql="SELECT lastname, firstname, state FROM author"; 

$result = mysql_query($sql); 

echo $sql; 
echo "<br />"; 


echo "<table border='1'> 
<tr> 
<th>lastname</th> 
<th>firstname</th> 
<th>State</th> 
</tr>"; 

while($row = mysql_fetch_array($result)) 
    { 
    echo "<tr>"; 
    echo "<td name='lastname' id='lastname'>" . $row['lastname'] . "</td>"; 
    echo "<td name='firstname' id='firstname'>" . $row['firstname'] . "</td>"; 

    echo "<td><select onchange='UpdateUser(this.value)'><option name='state' id='state' value='".$row['state']."'>".$row['state']."</option>"; 

         if ($row['state']==='CA') 
          { 
          echo '<option value="OR">OR</option>'; 
          echo '<option value="UT">UT</option>'; 
          echo '<option value="MI">MI</option>'; 
          echo '</select></td>';           
          } 
          else if ($row['state']==='OR') 
          {      
          echo '<option value="CA">CA</option>'; 
          echo '<option value="UT">UT</option>'; 
          echo '<option value="MI">MI</option>'; 
          echo '</select></td>'; 
          } 
          else 
          { 
          echo '<option value="CA">CA</option>'; 
          echo '<option value="UT">UT</option>'; 
          echo '<option value="MI">MI</option>'; 
          echo '<option value="OR">OR</option>'; 
          echo '</select></td>';         
          }     

    echo "</tr>"; 
    } 
echo "</table>"; 

mysql_close($con); 
?> 
<br> 
<div id="txtHint"><b>State info will be listed here.</b></div> 

</body> 
</html> 

PHP

<?php 
$q=$_GET["q"]; 
$w=$_GET["lastname"]; 
$e=$_GET["firstname"]; 
$r=$_GET["state"]; 

echo "<br /> New State: "; 
echo $q; 
echo "<br /> Last Name: "; 
echo $w; 
echo "<br /> First Name: "; 
echo $e; 
echo "<br /> Old State: "; 
echo $r; 
echo "<br />"; 

$con = mysql_connect('localhost','root',''); 
if (!$con) 
    { 
    die('Could not connect: ' . mysql_error($con)); 
    } 


mysql_select_db("test"); 


$sql = "UPDATE author SET state = '$q' WHERE lastname = '$w' AND firstname = '$e' AND state = '$r'"; 

echo $sql; 
echo "<br />"; 

mysql_close($con); 
?> 

有人可以幫忙嗎? Ty

+2

第一課:'Java!= JavaScript'(sorry jlordo) –

+1

第二課:整個ENTIRE文檔中'id'必須是唯一的。由於DOM規範明確指出它必須是唯一的,所以'getElementById()'不會** **返回多個匹配元素。您正在輸出具有相同ID的MULTIPLE元素,對於從數據庫中獲取的每一行數據都會有一個元素。 –

+2

對於SQL注入,你是**開放的**,如果你還沒有,你將被黑客攻擊**。使用準備/參數化查詢完全避免此問題。 – Brad

回答

0

我會排查查詢開始以查看您的查詢是否返回多個結果。

在MySQL中運行SELECT lastname, firstname, state FROM author查詢。

如果此查詢返回多個結果,那麼您知道它是您的代碼是問題所在。

我使用phpMySQL來調試我的SQL。

相關問題