我有一种用来发送邮件给用户的表格。
<form method="post" action="/functions/mails/mailstomysql.php">
<?php
$sql="SELECT UserId, FatherName, FirstName FROM profiles";
echo "<div class='FieldTitle' style='display:none;'>To</div>";
echo "
<div class='ui segment'>
<div class='ui fluid multiple search selection dropdown'>
<input type='hidden' multiple name='ReceiverId[]' required>
<i class='dropdown icon'></i>
<input class='search' tabindex='0'>
<div class='default text'>To</div>
<div class='menu' tabindex='-1'>
"; // list box select command
foreach ($conn->query($sql) as $row){//Array or records stored in $row
echo "
<option class='item' data-value='".$row['UserId']."' value='".$row['UserId']."'>$row[FirstName] s/o $row[FatherName]</option>";
}
echo "
</div>
</div>
</div>
?>
<input type="text" name="MailSubject">
<textarea type="text" name="MailContent"></textarea>
<input id="btnAddRecord" name="submit" type="submit" value="Send">
</form>
这是用于检索上述形式的数据的SQL语句:
$sql="SELECT UserId, FirstName FROM profiles";
这是mailtomysql.php
将数据插入MySQL数据库的文件。
$ReceiverId=$_POST['ReceiverId'];
$MailSubject=$_POST['MailSubject'];
$MailContent=$_POST['MailContent'];
$sql = "INSERT INTO mails (
`ReceiverId`, `MailSubject`, `MailContent`, `MailRead`, `MailDate`
)
VALUES (
'$ReceiverId', '$MailSubject', '$MailContent', '1', CURRENT_TIMESTAMP()
)";
if ($conn->query($sql) === TRUE) {
echo "Mail sent!";
} else {
echo "Error: " . $sql . "<br>" . $conn->error;
上面的代码很棒而完美。
我的问题
上面的mailtomysql.php
文件从中插入选定的用户,Multiple Selection Box
并将选定的用户ID发布到ReceiverId
我不希望的列,而是我希望每个选定的用户都有行。
喜欢:
现在
ReceverId
114、265、112
我想要的是
ReceverId
114
256
112
为什么
如果用户要删除邮件,则它将删除该邮件,并且该邮件中的其他用户也不会看到该邮件,因为该邮件已被用户删除。
因此,我的问题又是如何使mailtomysql.php
每个选定用户的文件排成一行,而不是让选定用户的ID排成一行。
编辑:我使用Semantic-Ui从下拉列表中选择选项,但是它不起作用。
在表单方面:
<form method="post" action="/functions/mails/mailstomysql.php">
<select multiple name='ReceiverId[]'>
<?php foreach ($conn->query($sql) as $row){
echo "<option class='item' data-value='".$row['UserId']."' value='".$row['UserId']."'>". $row['FirstName'] . "</option>";
} ?>
</select>
<input type="text" name="MailSubject">
<textarea type="text" name="MailContent"></textarea>
<input id="btnAddRecord" name="submit" type="submit" value="Send">
确保在选项中设置了值,并且选择的名称为ReceiverId []。
在接收端,这只会导致一个查询...
$ReceiverIds = $_POST['ReceiverId'];
$values = "";
foreach($ReceiverIds as $receiver){
//don't forget some validation here...
//this is potentially unsafe too since the values are not properly escaped. Perform proper escaping here...
$values .= "('$receiver', '$MailSubject', '$MailContent', '1', CURRENT_TIMESTAMP()
),\n";
}
$values = rtrim($values, ",\n");
$sql = "INSERT INTO mails (
`ReceiverId`, `MailSubject`, `MailContent`, `MailRead`, `MailDate`
)
VALUES
$values";
$success = $conn->query($sql)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句