2017-10-28 79 views
1

我在while循环中有一个联系表单,它将向while循环中显示的用户发送电子邮件。但是,通过这种结构,我会发送一封电子邮件给循环中的所有对象。在这种情况下,我不知道如何逃避while循环。在循环中单独与一个对象交互

... while($row = $sql->fetchObject()){ 
    ... echo $row->userMail; 
     echo '<form ...><input name="contactMail"><...submit></form>'; 
     if(isset($_POST['visitorMail']{ 
      mail($toUserMail,$subject,$body_containsVisitorMail,$headers); 
       //this will send an email to all "objects" displayed in within the while loop -> problem 

    } 
} 
+0

不要把目标地址的形式。它将被用作垃圾邮件网关。此外,您似乎将表单本身与处理其内容的代码混合在一起,没有多大意义。 – Synchro

回答

1

,我想你需要与当前检查的$_POST['contactMail']值迭代之一:

while($row = $sql->fetchObject()){ 
    echo $row->mail; 
    echo '<form ...><input name="contactMail" value="' . $row->mail . '"><...submit> 
    <input type="hidden" name="itemId" value="' . $row->id . '"></form>'; 
    if(isset($_POST['contactMail']) && $_POST['itemId'] == $row->id) { 
     mail($toRowMail,$subject,$body,$headers); 
    } 
} 
+0

谢谢,但输入字段实际上是让访问者输入他们的电子邮件地址。所以'contactMail'和'$ row-> mail'是两个不同的地址。 contactMail仅用于$ body。 – JayPac

+0

那么你为什么在一个while循环中发送电子邮件?在while循环后检查if($ _POST [''])'。 –

+0

以及我应该如何知道发送邮件的对象。假设我有几个使用while循环显示的对象。对于每个对象都有一个额外的表单来发送电子邮件。我需要一种方法来检查用户提交的表单。 – JayPac