对你们来说,这可能很容易。我试图对表单发送的$ _POST变量进行排序,并在mysql中更新排序结果。我不知道该怎么做,并感谢任何人都可以帮助我。
我的main.php
//I have a loop here. (omitted)
//$k will be increased by 1 every time the loop starts, so I will know the total times of the loops
//the form will be submitted to update.php
echo "<input type='hidden' name='pickTotal' value='".$k."' />";
echo "<input type='hidden' id='point' name='earnedPoint".$k."' value='".$point."' />";
echo "<input type='hidden' id='users' name='userName".$k."' value='".$userPick['user']."' />";
//loop ends
我的update.php
if(isset($_POST['submit'])){
$pickTotal=$_POST['pickTotal']; //get the total loop
for ($p=0;$p<=$pickTotal;$p++){
$userToBeUpdated=$_POST['userName'.$p];
$userPoint=$_POST['earnedPoint'.$p];
//sort the $userPoint here.
//I need to find out who got the most points
//and list user's place. 1st, 2nd, 3rd...etc.
//update my mysql
}
感谢您的帮助。
答案 0 :(得分:4)
我会建议一些与马里奥建议非常相似的东西,但方式略有不同:
echo "<input type='hidden' id='point' name='user[$k][points]' value='".$point."' />";
echo "<input type='hidden' id='users' name='user[$k][name]' value='".$userPick['user']."' />";
当你回到$_POST
时,你会得到一个这样的数组:
$_POST['user'] = array(
0 => array(
points => 15,
name => joe
),
1 => array(
points => 21,
name => john
)
);
从那里你可以使用usort
来提出自定义排序功能:
$data = $_POST['user'];
usort($data, 'usortPost');
function usortPost($a, $b) {
if ($a['points'] == $b['points']) return 0;
return $a['points'] < $b['points'] ? 1 : -1;
}
答案 1 :(得分:3)
不应该计算$ k和$ p,而应使用PHP特殊的表单名称语法:
<input name="earnedPoint[]" value="...">
<input name="userName[]" value="...">
这样你就可以收到两个参数列表,$ _POST [“earnPoint”] [0]直到$ _POST [“earnPoint”] [99]对应$ _POST [“userName”] [0] .. [99 ]
然后只映射两个数组:
$sort_us = array_combine($keys=$_POST["userName"], $values=$_POST["eP"]);
arsort($sort_us);
这应该是你的第一个。
答案 2 :(得分:1)
您必须有排序标准。
无论如何,sort功能可以帮助你。
答案 3 :(得分:1)
如前所述,您可以使用PHP提供的语法糖:
echo "<input type='hidden' id='point' name='earnedPoint[{$userPick['user']}]' value='".$point."' />";
你可以在后端处理这个:
foreach ($_POST['earnedPoint'] as $user => $points) {
// update your SQL table
}
asort($_POST['earnedPoint']); // sort array in ascending order, maintain index assoc
// save your data somehow