2012-12-13 52 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 –