2016-02-26 40 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>"; 

此代碼是未經測試,並且只給一個想法。