php - 仅使用 PHP/HTML/Javascript 将 'value' 从多个单选类型选择添加到 mySQL 中的特定行/列

标签 php html mysql wordpress survey

我在 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&nbsp<input type=\"radio\" 
name=\"w". $row["id"]."\" 
value=\"1\">&nbsp&nbsp&nbsp&nbsp&nbspN&nbsp<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();

表格如下所示: wordtable

(一开始我只输入了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/

相关文章:

javascript - 通过 jQuery 查找第一个不可见 block

html - 悬停在表格分区和表格行之间时,悬停在我的表格上不起作用

javascript - 如何通过 html "JS file"调用 "button-click"并且 JS 文件正在使用 shell.js 运行 bash 脚本

php - 在 codeigniter 中将数据显示到文本框中

php - 上传一些特定的功能,但不是所有开发的功能从开发到实时服务器

php - 获取两个字符串之间的文本的正则表达式

mysql - 您可以在 SELECT 中分配一个变量,然后在同一个 SELECT 中使用它吗?

PHP + MySQL + 重复日历事件

使用魔术方法 __get 和 __set 的 PHP 可见性

php - 如果 url 包含使用 htaccess 的特定字符串,则重定向