首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用PHP和mysql,我希望允许用户从数组中选择结果

使用PHP和mysql,我希望允许用户从数组中选择结果
EN

Stack Overflow用户
提问于 2012-12-03 03:40:40
回答 1查看 131关注 0票数 2

我有一个学术参考数据库,这是一个共同银行的一部分,所有用户都能看到。我想让用户选择他们想要添加到自己的列表中的引用,并在单独的页面上输出。

我的目标是使用唯一的引用ID,然后将其链接到单独的用户表,当他们转到他们的个人页面时,它会输出他们选择的引用。

到目前为止,我尝试做的是在已经输出的所有引用旁边有一个按钮,该按钮链接到一个表单,然后该表单将用户带到一个新页面,该页面执行INSERT INTO语句,以将引用ID与其学生ID一起添加为组合键。

我所拥有的如下所示(为了简化,删除了一些字段):

代码语言:javascript
运行
复制
$query = mysql_query("SELECT * FROM references")or die(mysql_error()); 

echo "<table>"; 
echo "<tr>";
echo "<td>Reference ID</td>";
echo "<td>Author</td>";
echo "<td>Save</td>";
echo "</tr>";
 while($refer = mysql_fetch_array( $query )) 
 { 

 echo "<tr>"; 
 echo "<td><form name='addreference' method='post' action='saveref.php'><input type='text' name='referenceid' readonly='readonly' id='refid' value='".$refer['refid'] . "'/></td> ";
 echo "<td>".$refer['author'] . "</td> ";  
 echo "<td><center><input type='submit' name='addref' value='Add'></center></td>"; 

这个屏幕上输出的引用ID是正确的,但是当我在saveref.php上执行var_dump($_POST)时,发布的引用ID始终是数组中最后一个的引用ID,而不管引用列表上的哪个按钮被点击。实现这一目标的最佳方式是什么?

EN

Stack Overflow用户

回答已采纳

发布于 2012-12-03 03:49:59

欢迎使用StackOverflow!

正如注释中所指出的,您应该使用mysqli而不是mysql,因为mysql已被弃用。

这是对表单的重写,允许您发布对saveref.php的引用数组。我做了很多改进,包括在HTML属性上加上双引号( W3推荐),在表格中添加了a和tbody,并在底部只有一个按钮的复选框中添加了引用。

代码语言:javascript
运行
复制
<form name="addreference" method="post" action="saveref.php">
<table>
    <thead>
        <tr>
            <th>Reference ID</th>
            <th>Author</th>
            <th>Save</th>
        </tr>
   </thead>
   <tbody>
<?php
$sql = "SELECT * FROM references";
$results = mysql_query($sql)
    or die(mysql_error()); 
while ($refer = mysql_fetch_array($results)) { 
    echo <<<HTML
        <tr>
            <td>{$refer['refid']}</td>
            <td>{$refer['author']}</td>  
            <td><input type="checkbox" name="references[]" value="{$refer['refid']}"/></td>
        </tr>
HTML;
}
?>
<button type="submit" name="addref">Add Selected</button>
</form>

然后,您的saveref.php文件将如下所示:

代码语言:javascript
运行
复制
<?php
$student_id = 1; // This value would get set elsewhere, I presume?
$references = !empty($_POST['references']) ? (array) $_POST['references'] : array();
$cnt = count($references);
if ($cnt) {
    for ($i = 0; $i < $cnt; $i++) {
        $references[$i] = "(" . ((int) $student_id) . ", " . ((int) $references[$i]) . ")";
    }
    $sql = "INSERT INTO references (student_id, reference_id) VALUES ";
    $sql .= implode(", ", $references);
    mysql_query($sql);
}
票数 0
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13673016

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档