我正在尝试使用复选框将用户添加到特定组,但我无法准确确定逻辑的工作原理。用户列表是从sql语句中提取的,并且是echo。我想在每个名称旁边显示一个复选框,如果选中该框,则使用implode将用户添加到列表中,这样我就可以将成员存储在一列中。
以下是显示包含用户,其位置和复选框的列表的输出。我希望能够选中该复选框,然后根据用户ID($ friendNum)将它们添加到组中。
更新:复选框正常工作并正确输入数据库,但未输入第一种形式的输入。 (标题,描述,日期,地点)
$myUsername = $_SESSION['userid'];
if(isset($myUsername)){
echo '<table><form method="post" action="event.php" name="groupInvite">
<tr><td> Event Title:</td><td> <input type="text" name="eventTitle" /></td></tr>
<tr><td>Event Description:</td><td> <textarea name="eventDescription" /></textarea></td></tr>
<tr><td>Event Date: </td><td><input type="text" name="eventDate" /></td></tr>
<tr><td>Event Location:</td><td><input type="text" name="eventLocation" /></td></tr></table>
<table><tr><td>Username </td><td> Location</td><td>Invite To Event</td></tr>';
$friends = mysql_query("SELECT userid1 as friendId FROM friends WHERE userid2 = $myUsername AND friendstatus = 1
UNION SELECT userid2 as friendId FROM friends WHERE userid1 = $myUsername AND friendstatus = 1");
while($friend = mysql_fetch_array($friends)){
$userID = $friend['friendId'];
$friendNum = mysql_query("select * from users where userid = $userID");
$friendID = mysql_fetch_array($friendNum);
$userLocation = mysql_query("select * from userinfo where userid='$userID'");
$locationResult = mysql_fetch_array($userLocation);
$locationResultArray = $locationResult['userlocation'];
$locationExplode = explode("~","$locationResultArray");
echo '<tr>
<td><a href="profile.php?userid=' . $friendID['userid'] . '">' . $friendID['username'] . '</a></td>
<td>' . $locationExplode[0] . ', ' . $locationExplode[1] . '</td>
<td><input type="checkbox" name="friendID[]" value='.$friendID['userid'].' /></td></tr>';
}
echo '<tr><td> <input type="submit" name="eventSubmit" value="Create Event" />
</td></tr>
</form></table>';
}
if(isset($_POST['eventSubmit'])){
$userList = implode("~",$_POST['friendID']);
$sql = "INSERT INTO events VALUES('$userList',...)";
$result = mysql_query($sql);
echo "Event Created"; //just used for testing purposes
}
}
答案 0 :(得分:3)
将复选框设置为数组
HTML
<input type="checkbox" value="1" name="myVariable[]" />
<input type="checkbox" value="2" name="myVariable[]" />
PHP(在检查后)
$stringToInsert = implode("~",$_POST['myVariable']);
检查两者的结果
1~2
答案 1 :(得分:3)
这有很多问题。
<form>
内。即,在开始输出复选框之前打开表单。它可能适用于某些浏览器,但不是全部。我最近遇到了这样的问题,只提交表单中的数据,但这只发生在Firefox中。[]
的文本框相同。例如,<input type="checkbox" value="428" name="friends[]" />
。这将使PHP将$_POST
数据组织到一个数组中,以便您可以轻松地遍历它。示例:
<ul>
<li><label><input type="checkbox" value="428" name="friends[]" /> John Smith</label></li>
<li><label><input type="checkbox" value="235" name="friends[]" /> Jane Doe</label></li>
</ul>
标签将使复选框更容易点击(可以点击标签上的任何位置),我相信它也使屏幕阅读器更容易。 <ul>
在语义上更合适,因为它是您尝试输出的朋友的列表。