php - 使用 PHP 和 mysql 我想允许用户从数组中选择结果

标签 php mysql

我有一个学术引用数据库,它是所有用户都可以看到的公共(public)银行的一部分。我想让用户选择他们想要将哪一个引用添加到自己的列表并在单独的页面上输出。

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

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

我的内容如下(删除了一些字段以简化):

$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,无论在引用列表中单击哪个按钮。解决这个问题的最佳方法是什么?

最佳答案

欢迎使用 StackOverflow!

如评论中所述,您应该使用 mysqli 而不是 mysql,因为 mysql 已被弃用。

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

<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 文件将如下所示:

<?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);
}

关于php - 使用 PHP 和 mysql 我想允许用户从数组中选择结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13673016/

相关文章:

php - 缩放时间轴的最佳 javascript 图形..

mysql - 联合表,其中列与定义的 varchar 匹配

mysql - 使用 mysql 的 GROUP BY 自定义奇数列的输出

java - 如何显示发布到我的论坛中的答案数量?

mysql - 面向位置的文本和图像保存在 Django/mysql 中

php - 如何打印一个名为 *(星号)的对象?

php - 如何使 recaptcha 图像更小(一个词)

php - mysql子查询还是php处理?

PHP cli session 警告

mysql - 功能:表作为返回值