2012-12-13 47 views
0

我有一個php頁面,它從包含電子郵件addy的dbms中提取數據。這工作。然後它顯示電子郵件地址和其他存儲的數據數據。然後用戶可以選擇將「X」放入稱爲emailselected的php頁面中設計的字段中。這也適用。我現在想用基於存儲的電子郵件地址的新字段更新dbms,但更新語句不起作用。請幫忙。這部分的php文件在這裏。根據用戶輸入和現有的dbms數據更新dbms

include("db.php"); 
if (isset($_POST['ssubmit'])) 
    { 
    $id_save = $test['id']; 
    $emailselected_save = $_POST['emailselected']; 
    $email_save = $test['email']; 

    mysql_query("UPDATE emails SET selected='$emailselected_save' WHERE id = 'id'"); 
    echo "<input type='button' value='Email(s) sent' onclick='goBack()' />"; 
mysql_close($conn); 
    } else {echo "hello";} 
?> 
</head> 
<form method='post'> 
    <div id='headd'> 
    <br /> 
    <input type='button' value='Close this window without Sending' onclick='goBack()' /> 
    <input type='submit' name='ssubmit' id='ssubmit' value='Send Email Now!!!' /> 
    <p>Place an "X" in the emails you wish to send!!!</p> 
    </div> 
    <body> 
     <br /><br/> 

<?php 
    include("db.php"); 
    $result = mysql_query("SELECT * FROM emails WHERE unsubscribe != 'x' ORDER BY lastname ASC"); 
      while($test = mysql_fetch_array($result)) 
      { 
?> 
    <table border='1' width='78%'> 
    <tr align=\"left\"> 
     <td width='4%'><font color='black'><input type='text' size='1' id='emailselected' name='emailselected' /></font></td> 
     <td width='15%'><font color='black'><?php echo $test['lastname']?></font></td> 
     <td width='15%'><font color='black'><?php echo $test['firstname']?></font></td> 
     <td width='40%'><font color='black'><?php echo $test['email']?></font></td> 
     <td width='4%'><font color='black'><?php echo $test['id']?></font></td> 
    </tr> 
</table> 
<?php 
      } 
?> 
</form> 

表單頂部是一個包含語句。這是可行的,因爲它會提取電子郵件附件並將其顯示在php文件中。

我在做什麼錯?

+0

「阿迪」不是英文單詞。你是一個六歲的孩子嗎? :-) – paxdiablo

+0

你爲什麼這麼說?你能否幫我解決我的問題? –

+0

爲什麼,戴夫,我當然可以:-)看到我的答案。就意思而言,這不是我的意圖,幽默是澳大利亞的事情,雖然它主要是針對我們自己,但它有時也會逃到世界其他地方。 – paxdiablo

回答

0

你幾乎限於以下可能性,如果數據沒有更新:

  • 語句失敗;或
  • 該語句不影響行;或
  • 該聲明影響了錯誤的行。

要找出哪些,你應該從mysql_query檢查返回代碼,看看它是否失敗與否:

$rc = mysql_query('my hovercraft is full of eels'); 
if (!$result) { 
    die('What?: ' . mysql_error()); 
} 

如果沒有失敗,你應該再檢查它是如何影響的行數與mysql_affected_rows()

$num = mysql_affected_rows(); 
printf("Updated %d rows\n", $num); 

從返回它們的功能檢查返回值是良好的編程習慣。

輸出或記錄您在SQL語句中使用的所有變量也可能是一個好主意,以確保它們是您認爲的那些變量。

而且,儘管現在不用說了,但使用mysql_*函數的功能是discouraged,您應該使用mysqli_* (or PDO)來代替。


而我只是剛剛注意到,您的HTML元素的層次結構似乎不太正確。你有效地:

<head> 
    : 
</head> 
<form> 
    : 
    <body> 
     : 

這不會凝膠對我。我不確定form有效外部的身體。根據w3c specs,html元素必須包含:

後跟正文元素的頭元素。

+0

非常感謝您的回覆。關於這個問題,我不是很擅長查詢數據庫。如何驗證mysql_query的返回碼是否失敗?你能否更具體地說明如何做到這一點。今天早上我有點慢。 LOL –

+0

沒有probs,@Dave,看看更新。我目前的位置沒有PHP環境,但應該足夠接近你所需要的。 – paxdiablo

+0

好的,我插入了你的代碼,沒有任何東西。我在想其他的東西。我什至沒有得到「什麼?:」或printr結果。如果您在啓動更新過程的提交按鈕中查看我的原始代碼,那麼可能存在問題。我認爲它由於某種原因甚至沒有進入isset ssubmit命令。我以前嘗試插入警報聲明,無論結果如何,它也不顯示。我正在使用「ssubmit」,所以它與我將在稍後添加到表單中的另一個提交聲明發生衝突。我迷路了LOL –