我在 mySQL/myPHPAdmin 中创建了一个大约 100 个单词的数据库。我希望网页的用户能够对这些词进行“投票”,并持续记录票数。
mySQL 表的格式如下:
数据库名称:paulcook_wrdp2
表名称:words_initial
id | 词 | 排名 | 得分
INT | VARCHAR | INT |智力
'id'自动递增1,排名和分数初始设置为0。
我创建了一个 WordPress 页面,它使用以下 PHP 脚本来显示表格中的单词,旁边有单选按钮以及提交按钮:
<?php
//DB Config
$servername = "localhost";
$username = "xxxx";
$password = "xxxx";
$dbname = "paulcook_wrdp2";
// Create Connection
$conn = new mysqli($servername, $username, $password,
$dbname);
// Check Connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
// Table Header and Initialize Form
echo "<table><tr><th>ID</th><th>Word</th>
<th>Applicable?</th></tr><form name='selections'
method='post'>";
// Fetch Required Fields
$sql = "SELECT id, word FROM words_initial";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
// Output Data of Each Row and Radio Buttons
while($row = $result->fetch_assoc()) {
echo "<tr> <td>". $row["id"]. "</td><td>".
$row["word"] . "</td><td>Y <input type=\"radio\"
name=\"w". $row["id"]."\"
value=\"1\">     N <input
type=\"radio\" name=\"w". $row["id"]."\"
value=\"-1\"></td></tr>";
}
} else {
echo "0 results";
}
// Submit Button and Close Form and Table
echo "</table><br><input type='submit' name='submit'
value='submit' style='background:black;
cursor:pointer; border:none; display: block; margin-
left: auto; margin-right: auto;'/></form>";
$conn->close();
表格如下所示:
(一开始我只输入了10个字,实际会是100个)
一些重要的注意事项:
设置表格后,“Y”选择的“值”为“1”,“N”选择的“值”为“-1”
脚本设置为根据单词的 id 命名每对按钮。
例如,单词 #4(正式)上 Y 的单选输入定义为
<input type="radio" name="w4" value="1">
对于 N 来说是
<input type="radio" name="w4" value="-1">
(相同名称,负值)
当用户点击“提交”时,我想要(我需要什么帮助):
1) 将选定的单选输入值添加到其分数中 - 即,如果有人对单词 #4 投 Y 票,则其分数将变为“1”。如果另一个人投 Y 票,则其得分变为“2”。如果下一个人投了 N 票,则其得分将再次为 1 (2+(-1)),依此类推。
2)(这可能是一个单独的问题,所以如果这不符合犹太教规,请忽略)我还希望根据分数更新“排名”字段,并按“排名”对表格进行排序首先,然后按“单词”(按字母顺序)。例如,如果有三个单词 w1/w2/w3,各自的分数为 2/1/-1,则表格将如下所示(在本例中 ids 是任意的):
id | 词 | 排名 | 得分
5 | w1 | 1 | 2
2 | w2 | 2 | 1
8 | w3 | 3 | -1
我还不确定我们将如何处理关系,但如果有任何建议,我们将不胜感激。
该项目的下一部分是以循环方式对决单词 - 即排名 1 的单词将与排名 10 的单词对决,排名 2 的单词将与排名 9 的单词对决,依此类推。 .
理想情况下,我希望 php 能够独立包含在该脚本中,而不是调用它,但是如果 wordpress 可以将处理传递给托管在站点根目录中的另一个脚本,那就没问题了。 (我正在使用 WordPress 的插入 PHP 插件,如果这很重要的话)。
谢谢大家,我已经广泛寻找这个问题的答案,但我找不到一个考虑到我的具体情况的答案。我显然对此很陌生,所以请温柔点:)
/-----编辑-----/
这是我设置时显示的内容
<form action='/process.php' method='POST'>
process.php 是
<pre>
<?php var_dump($_POST); ?>
</pre>
显示:
array(2) {
["word"]=>
array(10) {
[2]=>
string(1) "1"
[3]=>
string(1) "1"
[4]=>
string(1) "1"
[5]=>
string(1) "1"
[6]=>
string(1) "1"
[7]=>
string(1) "1"
[8]=>
string(1) "1"
[9]=>
string(2) "-1"
[10]=>
string(2) "-1"
[11]=>
string(2) "-1"
}
["submit"]=>
string(6) "submit"
}
如何编写 process.php,以便将值添加到具有相应行 ID 的“分数”列,而不是显示上述内容?
最佳答案
你的方法有什么问题
您正在尝试在每次投票时更新数据库条目。 (这与将您的年龄存储在数据库中并每年更新相同。相反,您可以存储出生日期并在 php 脚本中计算年龄。)
更好的方法 您应该跟踪用户投票的内容(通过将其存储到数据库中)。根据投票结果,您应该计算一个词的"is"和“否”的数量。然后您可以在 php 脚本中计算分数。
关于php - 仅使用 PHP/HTML/Javascript 将 'value' 从多个单选类型选择添加到 mySQL 中的特定行/列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51448907/