2014-09-30 74 views
0

如何從數據庫中發送電子郵件?但是當點擊複選框時允許用戶勾選複選框,表明發送給所有人。我怎麼會這些電子郵件存儲在複選框,如何將我把它們傳遞的郵件功能使用複選框以PHP發送電子郵件

<?php 
    $query="SELECT emails FROM users"; 
    $result=mysqli_query($db,$query); 
    while($email=mysqli_fetch_assoc($result)){ 
     $email=$email['student_email']; 
    } 
?> 
    <input type ="checkbox " name="$email[]" value="" /> 

我怎麼能使用複選框內這個$電子郵件,讓所有的電子郵件將被儲存在那裏?還是有不同的方式來做到這一點? 謝謝你們

+0

您正在混合使用PHP和HTML代碼,您應該在'<?php'和'?>'中包含您的PHP。 – aularon 2014-09-30 08:37:01

+1

不要像這樣混合使用數據庫訪問和HTML代。分開他們。諸如Symfony和Flow之類的MVC框架將爲您提供幫助。 – adhominem 2014-09-30 08:42:26

+0

首先,編寫一個代碼打印檢查郵件的電子郵件。其次,編寫代碼發送電子郵件從PHP。第三,把這兩樣東西放在一起 – 2014-09-30 08:46:29

回答

0

我只是歸你的代碼,並添加所需功能的電子郵件:

<?php 
$query = "SELECT emails FROM users"; 
$result = mysqli_query($db, $query); 

while ($email = mysqli_fetch_assoc($result)) { 
    echo '<input type="checkbox" name="mails[]" value="' . $email['student_email'] . '" />', PHP_EOL; 
} 

提交後:

<?php 
foreach ($_REQUEST['mails'] as $studentMail) { 
    echo $studentMail . '<br>', PHP_EOL; 
} 

更新:

我錯過了你的問題。

如果你想將郵件發送給所有用戶,您woulnd't放在郵件都:

<input type="checkbox" name="send-to-all" value="yes"> 

然後提交後:

<?php 
if (isset($_REQUEST['send-to-all']) && $_REQUEST['send-to-all'] == 'yes') { 
    $query = "SELECT emails FROM users"; 
    $result = mysqli_query($db,$query); 
    while ($email = mysqli_fetch_assoc($result)) { 
     // send email here or gather array to send a single mail to all 
    } 
} 

如果你想包括組,我會做這種方式:

<input type="hidden" name="groups" value="<?php echo json_encode($groups); ?>" /> 
+1

'name =「郵件[]」'如果你想要它是一個數組... – FrancescoMM 2014-09-30 08:37:45

+0

工作很好謝謝。但我只想顯示一個複選框,並在其時顯示所有電子郵件的複選框 – 2014-09-30 08:38:59

+0

@FrancescoMM應該使用數組嗎?因爲它必須發送給整個團隊,而不僅僅是一個 – 2014-09-30 08:39:52

0
while($email=mysqli_fetch_assoc($result)){ 
    $email=$email['student_email']; 
    echo '<input type ="checkbox " name="$email" />'; 
} 

,然後提交表單到foreaches崗位價值和郵件頁面中的所有

0

您可以像:

<?php 
    $result = mysqli_query($db, 'SELECT id, student_email FROM users'); 
    if(isset($_POST['submit'])){ 
     while($row = mysqli_fetch_array($result)){ 
      var_dump($_POST['email-' . $row['id']]); 
      if($_POST['email-' . $row['id']]){ 
       //Send 
      }else{ 
       //Not send 
      } 
     } 
    } 
?> 
<form method="post"> 
    <?php while($row = mysqli_fetch_array($result)):?> 
    <input type="checkbox" name="email-<?=$row['id']?>" value="" /> 
    <?php endwhile;?> 
    <input type="submit" name="submit" /> 
</form> 
+0

OP使用'mysqli_'而不是'mysql_' – 2014-09-30 08:44:01

+0

我使用PDO,這是演示 – 2014-09-30 08:45:03

+0

不要給僞代碼,它不是OP使用的API。 – 2014-09-30 08:46:15

0

正如我所看到的,您希望通過單個複選框發送電子郵件。首先,不要忘記將您的輸入包裝到<form id="..." method="..." action="...">...</form>標籤組中。您不必將返回的mysql結果作爲名稱屬性傳遞給輸入,因爲如果您選中該複選框,然後提交表單,則必須執行一件事:發送電子郵件。所以我只會將輸入的名稱設置爲「發送」。之後,你可以檢查你的php代碼:

<?php 
    //I assume, that you used post method 
    if($_POST['send']){ 
    foreach($email as $mail){ 
     mail($mail, $subject, $msg); 
    } 
    } 
?> 

我希望它可以幫助你。