添加';价值';仅使用PHP/HTML/Javascript从多个无线电类型选择到mySQL中的特定行/列
我已经用mySQL/myPHPAdmin创建了一个大约100个单词的数据库。我希望一个网页的用户能够“投票”的话,并保持一个连续的票数 mySQL表的格式如下: 数据库名称:paulcook_wrdp2 表名:words_首字母 id|word|排名|得分 INT | VARCHAR | INT | INT “id”自动递增1,等级和分数最初都设置为0 我创建了一个WordPress页面,该页面使用以下PHP脚本在表格中显示单词,旁边有单选按钮和提交按钮:添加';价值';仅使用PHP/HTML/Javascript从多个无线电类型选择到mySQL中的特定行/列,php,html,mysql,wordpress,survey,Php,Html,Mysql,Wordpress,Survey,我已经用mySQL/myPHPAdmin创建了一个大约100个单词的数据库。我希望一个网页的用户能够“投票”的话,并保持一个连续的票数 mySQL表的格式如下: 数据库名称:paulcook_wrdp2 表名:words_首字母 id|word|排名|得分 INT | VARCHAR | INT | INT “id”自动递增1,等级和分数最初都设置为0 我创建了一个WordPress页面,该页面使用以下PHP脚本在表格中显示单词,旁边有单选按钮和提交按钮: <?php //DB Conf
<?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();
<pre>
<?php var_dump($_POST); ?>
</pre>
如何编写process.php,使其不显示上述内容,而是使用相应的行ID将值添加到“score”列中?您的方法有什么问题 每次投票时,您都试图更新数据库条目。(这与将您的年龄存储在数据库中并每年更新相同。相反,您可以在php脚本中存储出生日期并计算年龄。) 更好的方法
您应该跟踪用户的投票结果(通过将其存储到数据库中)。根据投票结果,你应该计算一个词的“是”和“否”的数目。然后,您可以在php脚本中计算分数。您的方法有什么问题 每次投票时,您都试图更新数据库条目。(这与将您的年龄存储在数据库中并每年更新相同。相反,您可以在php脚本中存储出生日期并计算年龄。) 更好的方法
您应该跟踪用户的投票结果(通过将其存储到数据库中)。根据投票结果,你应该计算一个词的“是”和“否”的数目。然后,您可以在php脚本中计算分数。您在概念上提出了一个清晰的想法,但没有服务器端代码 所以我会给你一些伪代码指导 1) 在服务器上接收提交的数据
-使用数组命名输入
2) 服务器将处理
例如:
SELECT * FROM words ORDER BY score **asc/desc** ( depending on your preference )
应该可以处理你的更新
对于按顺序阅读,SQL是您的朋友
$vote = (int) $vote;
"UPDATE `votes` SET score = ( score + $value ) WHERE id = $vote"
Round Robin需要一个接口,更新和检索的逻辑基本保持不变
编辑:
添加SQL
SQL将如下所示:
注意,由于我们对$value进行了检查,它只能是1、-1或0,因此我们知道该值是一个安全值
确保$vote是安全的:在//此处检查该投票是否存在
//只需将其转换为int
我建议您对所有SQL事务使用PDO
请参见此处:您在概念上提出了一个清晰的想法,但没有服务器端代码 所以我会给你一些伪代码指导 1) 在服务器上接收提交的数据
-使用数组命名输入
2) 服务器将处理
例如:
SELECT * FROM words ORDER BY score **asc/desc** ( depending on your preference )
应该可以处理你的更新
对于按顺序阅读,SQL是您的朋友
$vote = (int) $vote;
"UPDATE `votes` SET score = ( score + $value ) WHERE id = $vote"
Round Robin需要一个接口,更新和检索的逻辑基本保持不变
编辑:
添加SQL
SQL将如下所示:
注意,由于我们对$value进行了检查,它只能是1、-1或0,因此我们知道该值是一个安全值
确保$vote是安全的:在//此处检查该投票是否存在
//只需将其转换为int
我建议您对所有SQL事务使用PDO
请参见此处:我同意@ujjwal verma的观点,即您的方法应该是存储反馈并计算总反馈感谢@ujjwal和Craig Bezuidenhout提供您的提示。用户方法可能更好,但我正试图将代码开销降至最低,因为我没有什么技能。也就是说,我不确定是否有必要——这是为了促进研讨会,与会者将被要求进入网页并立即填写调查(他们将有15分钟的时间,届时他们将被要求提交,然后我们将进入第二轮)。跟踪谁投了不重要的票。Craig,对于你的代码,这会被插入到我已经拥有的同一个PHP脚本中吗?SQL位呢?我需要手动初始化吗?在您的PHP中,它如何知道将什么投票属性指定给什么行ID?这会增加它,还是仅仅改变它的值?再次感谢!我在phpMyAdmin中看到我可以设置触发器-所以我假设我可以设置它,以便在更新之后,我可以让它按SQL命令的顺序运行。。。现在来看看我如何能真正有它的更新!我试过上面的方法,但不幸的是,它不起作用。“进程”页面只是挂起,从不加载。我所做的是用“插入PHP”插件创建一个PHP代码片段,并将其放在一个页面上(我试着简单地通过FTP上传,但上面写着“找不到页面”。然后我在表单属性中添加了“action=/inded.php/process vots”。真糟糕。我同意@ujjwal verma的观点,你的方法应该是存储反馈并计算总反馈谢谢@ujjwal和Craig Bezuidenhout的提示。用户方法可能更好,但我正在尝试由于我的技能很低,我不确定是否有必要将代码开销降至最低。这是为了促进研讨会,与会者将被要求进入网页并立即填写调查(他们将有15分钟的时间,届时他们将被要求提交,然后我们将进入第二轮).Tracking who vote what not important.Craig,对于你的代码来说,这会被插入到我已经拥有的同一个PHP脚本中吗?SQL位呢?我会手动初始化吗?在你的PHP中,我会怎么做
$votes = filter_input(INPUT_POST, 'words');
// validate $votes
if( !is_array( $votes ) ) die( 'untimely death' );
foreach( $votes as $vote => $value ){
// make sure it is a valid vote and value
// if not valid SAY ASTA LA VISTA BABY
// check here that the vote exists
$value = (int) $value;
if( $value !== 1 && $value !== -1 ){
$value = 0; // 0 will have no effect
}
// apply the value to the database, this will be a simple SQL update
}
SELECT * FROM words ORDER BY score **asc/desc** ( depending on your preference )
$vote = (int) $vote;
"UPDATE `votes` SET score = ( score + $value ) WHERE id = $vote"