2016-02-26 39 views
0

,所以我想有一个表显示什么山头已经被车友缠身(准备为MS150)。我的问题是,当一个人点击该按钮,说他们已经骑山...它是唯一的工作一些时间。当他们说他们已经完成了一个小山时,该按钮将被禁用,并且不允许再次按下按钮。但是,有些记录没有正确显示。这里是我的代码:PHP的MySQL不拉数据正确

HTML:

$get_hills = "SELECT * FROM hills ORDER BY hill_region ASC, hill_id ASC"; 
$run_hills = mysqli_query($con, $get_hills); 
while($row_hills = mysqli_fetch_array($run_hills)) { 

$hill_id = $row_hills['hill_id']; 

$get_user = "SELECT * FROM users WHERE user_id = '".$_SESSION['user_id']."'"; 
$run_user = mysqli_query($con, $get_user); 
$row_user = mysqli_fetch_array($run_user); 

$get_ridden = "SELECT * FROM hills_ridden WHERE hill_id = '".$hill_id."'"; 
$run_ridden = mysqli_query($con, $get_ridden); 
$row_ridden = mysqli_fetch_array($run_ridden); 
echo " 
<tr> 
<td>".$row_hills['hill_name']."</td> 
<td>".$row_hills['hill_region']."</td> 
<td>".$row_hills['hill_rise']."</td> 
<td>".$row_hills['hill_length']."</td> 
<td>".$row_hills['hill_avg_grade']."</td> 
<td>".$row_hills['hill_total_points']."</td> 
<td><a href='".$row_hills['hill_link']."' target='_blank'><button class='btn btn-inverse btn-xs'>Link</button></a></td> 
<td>"; 
if($row_user['user_id'] == $row_ridden['user_id']) { 
echo "<button class='btn btn-default btn-xs' disabled>You Rode This</button>"; 
} else { 
echo" 
<form method='post' action=''> 
<input type='hidden' name='hill_id' value='".$row_hills['hill_id']."'> 
<input type='hidden' name='points_gained' value='".$row_hills['hill_total_points']."'> 
<input type='hidden' name='user_id' value='".$row_user['user_id']."'> 
<button type='submit' name='hill_sub' class='btn btn-inverse btn-xs'>I Rode This</button> 
</form>"; 
} echo"</td> 
</tr>"; 
} 

PHP:

if(isset($_POST['hill_sub'])) { 

$get_user = "SELECT * FROM users WHERE user_id = '".$_SESSION['user_id']."'"; 
$run_user = mysqli_query($con, $get_user); 
$row_user = mysqli_fetch_array($run_user); 

$insert_points = "INSERT INTO points (user_id, hill_id, points_gained, points_date) VALUES ('".$row_user['user_id']."', '".$_POST['hill_id']."', '".$_POST['points_gained']."', now())"; 

$insert_activity = "INSERT INTO activity (user_id, hill_id, activity_date) VALUES ('".$row_user['user_id']."', '".$_POST['hill_id']."', now())"; 

$insert_hill = "INSERT INTO hills_ridden (user_id, hill_id) VALUES ('".$row_user['user_id']."', '".$_POST['hill_id']."')"; 

$run_points = mysqli_query($con, $insert_points); 
$run_activity = mysqli_query($con, $insert_activity); 
$run_hills = mysqli_query($con, $insert_hill); 

if($run_hills) { 
    echo "<script>window.open('record-hill.php?user_id=".$row_user['user_id']."', '_self')</script>"; 
} else { 
    echo $run_hills->error; 
} 
} 

和这里的SQL数据库文件:

-- Table structure for table `hills_ridden` 
-- 

CREATE TABLE IF NOT EXISTS `hills_ridden` (
`ridden_id` int(11) NOT NULL AUTO_INCREMENT, 
`user_id` varchar(5) NOT NULL, 
`hill_id` varchar(5) NOT NULL, 
PRIMARY KEY (`ridden_id`) 
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=33 ; 

任何帮助,将不胜感激...我有一直在尝试不同的查询以使其工作,但在过去的2天内未能成功:/请!

回答

0

@maarten,感谢您的想法...我试图/与它修修补补,这是给我的,我需要的东西一点点......但意识到,最好的计划是最简单的,因此,我得到这个:

$get_ridden = "SELECT * FROM hills_ridden WHERE hill_id = '".$hill_id."' AND user_id = '".$row_user['user_id']."'"; 
$run_ridden = mysqli_query($con, $get_ridden); 
$row_ridden = mysqli_fetch_array($run_ridden); 
$num_ridden = mysqli_num_rows($run_ridden); 

if($num_ridden >= 1) { 
echo "<button class='btn btn-default btn-xs' disabled>You Rode This</button>"; 
} else { 

这给了我我正在寻找的东西......需要稍微离开它一会儿,然后用新鲜的眼睛看看它!

0

首先一个建议:既然你的user_id是在会议上,就没有必要让它的输入字段。在后一种情况下,可以更改表单user_id的值,为不同的用户创建条目。而是在插入数据的代码中,从$ _SESSION中取出user_id而不是$ _POST

(编辑:我现在看到您从$ _SESSION中获取的值,在处理,插入的代码中,不需要因为你只使用该表中的user_id)

然后,您可以尝试使一个查询而不是三个,作为整体跳过用户表,因为user_id位于会议:

SELECT 
    hills.*, 
    CASE hills_ridden.hill_id WHEN NULL THEN 0 ELSE 1 AS hill_ridden 
FROM hills 
LEFT JOIN hills_ridden 
    ON hills_ridden.hill_id = hills.hill_id 
    AND hills_ridden.user_id = '".$_SESSION['user_id']."' 
ORDER BY hill_region ASC, hill_id ASC; 

和你的按钮<td>可能会成为类似:

if($row_hill['hill_ridden'] == 1) { 
echo "<button class='btn btn-default btn-xs' disabled>You Rode This</button>"; 
} else { 
echo" 
<form method='post' action=''> 
<input type='hidden' name='hill_id' value='".$row_hills['hill_id']."'> 
<input type='hidden' name='points_gained' value='".$row_hills['hill_total_points']."'> 
<input type='hidden' name='user_id' value='".$row_user['user_id']."'> 
<button type='submit' name='hill_sub' class='btn btn-inverse btn-xs'>I Rode This</button> 
</form>"; 
} echo"</td> 
</tr>"; 

此代码是未经测试,并且只给一个想法。