[英]I have spent weeks trying to fix my PHP code. I need some guidance
我的代碼假設要顯示多部電影。 但是,它僅顯示一部電影。 我知道我想告訴你我嘗試過的事情。 我已經移動了代碼,檢查了數據庫,但是什么都沒有改變。 該代碼曾經可以工作,但是我添加了一些新代碼,現在這些代碼不起作用。 然后,我刪除了新代碼,但問題仍然存在。 我有很多代碼,並且意識到這個問題將被刪除。 這就是我要問的全部:如果您看到奇怪的東西,請對此發表評論。
注意:我保證數據庫信息沒有背景,並且數據庫中有多行信息。 謝謝!
電影.php
<?php
error_reporting(0);
require "start.php";
require "dropbox_auth.php";
session_start();
if(!$_SESSION["id"]) {
header("location: index.php");
}
$id2 = $_SESSION["id"];
$name = $_GET["name"];
$name2 = $_GET["name2"];
$db2 = new mysqli("127.0.0.1", "root", "", "crave crap");
$one2 = $db2->query("SELECT * FROM users WHERE id='$id2'");
$two2 = $one2->fetch_object();
$three2 = $two2->username;
$four2 = $two2->premium;
if(isset($name)) {
$findName = $db2->query("SELECT * FROM movies WHERE id='$name'");
$fetchName = $findName->fetch_object();
$real_title = $fetchName->title;
echo "<div id='notVerifiedDiv'> <span id='notVerifiedText'> <strong> $real_title </strong> added to liked movies </span> </div> </div>";
$page = $_GET["page"];
$sorting = $_GET["sorting"];
header("Refresh:1; url=http://localhost/Drop%20Box/movies.php?page=".$page."&sorting=".$sorting);
}
if(isset($name2)) {
$findName2 = $db2->query("SELECT * FROM movies WHERE id='$name2'");
$fetchName2 = $findName2->fetch_object();
$real_title2 = $fetchName2->title;
echo "<div id='notVerifiedDiv'> <span id='notVerifiedText'> <strong> $real_title2 </strong> removed from liked movies </span> </div> </div>";
$page = $_GET["page"];
$sorting = $_GET["sorting"];
header("Refresh:1; url=http://localhost/Drop%20Box/movies.php?page=".$page."&sorting=".$sorting);
}
if(!$four2) {
// They are not premium
header("location: premium.php");
}
?>
<!DOCTYPE html>
<html>
<head>
<title> Movies </title>
<link rel="stylesheet" href="http://fontawesome.io/assets/font-awesome/css/font-awesome.css">
<link rel='stylesheet' href='main.css'>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script>
<script src='main.js'></script>
</head>
<body>
<!-- Navigation -->
<div id='nav'>
<!-- Profile Wrapper -->
<ul class="profile-wrapper">
<li>
<!-- user profile -->
<div class="profile">
<img src="avatars/default.png" />
<a href="#" class="name"> <?php echo $three2; ?> <i class="fa fa-caret-down" id="caret-down"></i></a>
<!-- more menu -->
<ul class="menu">
<a href="#"><li>Sign Out</li></a>
<a href="#"><li>Sign Out</li></a>
<a href="logout.php"><li>Sign Out</li></a>
</ul>
</div>
</li>
</ul>
<!-- End of Profile Wrapper -->
</div>
<!-- End of Navigation -->
<!-- Movie Content -->
<div id='movie_content2'>
<div id='movie_line'>
<div id='movie_line2'></div>
<!-- Dropdown Selection -->
<?php
$sorting = $_GET["sorting"];
$page = $_GET["page"];
if($sorting == "") {
header("location: http://localhost/Drop%20Box/movies.php?page=1&sorting=recent");
}
if($sorting == "recent" || $sorting !== "popular" && $sorting !== "history" && $sorting !== "likes") {
echo '<nav>
<ul id="dropdown_selection">
<li><a href="#">Most Recent</a>
<ul>
<li><a href="http://localhost/Drop%20Box/movies.php?page=1&sorting=popular"> Most Liked </a></li>
<li><a href="http://localhost/Drop%20Box/movies.php?page=1&sorting=history"> My History </a></li>
<li><a href="http://localhost/Drop%20Box/movies.php?page=1&sorting=likes"> My Likes </a></li>
</ul>
</li>
</ul>
</nav>';
}
if($sorting == "popular") {
echo '<nav>
<ul id="dropdown_selection">
<li><a href="#">Most Liked</a>
<ul>
<li><a href="http://localhost/Drop%20Box/movies.php?page=1&sorting=recent"> Most Recent </a></li>
<li><a href="http://localhost/Drop%20Box/movies.php?page=1&sorting=history"> My History </a></li>
<li><a href="http://localhost/Drop%20Box/movies.php?page=1&sorting=likes"> My Likes </a></li>
</ul>
</li>
</ul>
</nav>';
}
if($sorting == "history") {
echo '<nav>
<ul id="dropdown_selection">
<li><a href="#">My History</a>
<ul>
<li><a href="http://localhost/Drop%20Box/movies.php?page=1&sorting=recent"> Most Recent </a></li>
<li><a href="http://localhost/Drop%20Box/movies.php?page=1&sorting=popular"> Most Liked </a></li>
<li><a href="http://localhost/Drop%20Box/movies.php?page=1&sorting=likes"> My Likes </a></li>
</ul>
</li>
</ul>
</nav>';
}
if($sorting == "likes") {
echo '<nav>
<ul id="dropdown_selection">
<li><a href="#">My Likes</a>
<ul>
<li><a href="http://localhost/Drop%20Box/movies.php?page=1&sorting=recent"> Most Recent </a></li>
<li><a href="http://localhost/Drop%20Box/movies.php?page=1&sorting=popular"> Most Liked </a></li>
<li><a href="http://localhost/Drop%20Box/movies.php?page=1&sorting=history"> My History </a></li>
</ul>
</li>
</ul>
</nav>';
}
?>
<!-- End of Dropdown Selection -->
<?php
// Pagination
$per_page = 10;
$count_total = $db2->query("SELECT * FROM movies");
$pages = $count_total->num_rows;
$total_pages = ceil($pages / $per_page);
if(!isset($_GET["page"])) {
header("location: movies.php?page=1");
} else {
$page = $_GET["page"];
}
$start = (($page - 1) * $per_page);
$sorting = $_GET["sorting"];
if($sorting == "recent" || $sorting !== "popular" && $sorting !== "history" && $sorting !== "likes") {
$movie = $db2->query("SELECT * FROM movies LIMIT $start, $per_page");
}
if($sorting == "popular") {
$movie = $db2->query("SELECT * FROM movies ORDER BY likes DESC LIMIT $start, $per_page");
}
session_start();
$id3 = $_SESSION["id"];
if($sorting == "history") {
$movie = $db2->query("SELECT m.id AS mid,m.photo AS pho, m.destination AS des,m.length AS len,m.length_content AS lenc,m.description AS desa,m.rating AS rat FROM movies m INNER JOIN history h ON h.movie_id = m.id WHERE h.user_id = $id3 ORDER BY h.id LIMIT $start, $per_page");
}
if($sorting == "likes") {
$movie = $db2->query("SELECT * FROM movies m INNER JOIN likes h ON h.number_likes = m.id WHERE h.user = $id3 ORDER BY h.id LIMIT $start, $per_page");
}
$number = 0;
$fetch_movie = $movie->num_rows;
if($fetch_movie > 0) {
while($movie3 = mysqli_fetch_array($movie)) {
$number++;
if($sorting !== "history") {
$id2 = $movie3["id"];
$photo = $movie3["photo"];
$rating = $movie3["rating"];
$destination = $movie3["destination"];
$length = $movie3["length"];
$length_content = $movie3["length_content"];
$description = $movie3["description"];
} else {
$id2 = $movie3["mid"];
$photo = $movie3["pho"];
$destination = $movie3["des"];
$length = $movie3["len"];
$length_content = $movie3["lenc"];
$description = $movie3["desa"];
$rating = $movie3["rat"];
}
$sorting = $_GET["sorting"];
$findLike = $db2->query("SELECT * FROM likes WHERE number_likes='$id2'");
$numLike = $findLike->num_rows;
echo "<div id='descriptive_div' number='$number'> <i class='fa fa-caret-left' id='descriptive_caret' number='$number'></i> <a href='like.php?number=$id2&page=$page'>";
$sorting = $_GET["sorting"];
if($sorting !== "likes") {
if($numLike == 0) {
// Not Liked
echo "<a href='like.php?number=$id2&page=$page&code=1&sorting=$sorting'> <div class='like_button' number='$number'> Like </div> </a>";
} else {
echo "<a href='like.php?number=$id2&page=$page&sorting=$sorting'> <div class='liked_button' number='$number'> Like </div> </a>";
}
} else if($sorting == "likes") {
echo "<a href='like.php?number=$id2&page=$page&sorting=$sorting'> <div class='liked_button' number='$number'> Like </div> </a>";
}
echo "</a> <span id='descriptive_div_text'> $description </span> </div>";
if($length_content) {
// hr & min
echo "<a href='open.php?destination=$destination'> <div class='movie_length' number='$number'> <div id='movie_length_text' number='$number'> $length </div> </div> </a>";
} else {
// min
echo "<a href='open.php?destination=$destination'> <div class='movie_length2' number='$number'> <span id='movie_length_text' number='$number'> $length </span> </div> </a>";
}
$sorting = $_GET["sorting"];
if($rating == "PG-13") {
if($sorting !== "likes") {
if($numLike == 0) {
// Not Liked
echo "<a href='open.php?destination=$destination'> <div class='movie_rating' number='$number'> <span id='movie_rating_text' number='$number'> $rating </span> </div> </a>";
} else {
// Liked
echo "<a href='open.php?destination=$destination'> <div class='movie_rating4' number='$number'> <span id='movie_rating_text' number='$number'> $rating </span> </div> </a>";
}
} else if($sorting == "likes") {
// Liked
echo "<a href='open.php?destination=$destination'> <div class='movie_rating4' number='$number'> <span id='movie_rating_text' number='$number'> $rating </span> </div> </a>";
}
}
if($rating == "PG") {
if($sorting !== "likes") {
if($numLike == 0) {
// Not Liked
echo "<a href='open.php?destination=$destination'> <div class='movie_rating2' number='$number'> <span id='movie_rating_text' number='$number'> $rating </span> </div> </a>";
} else {
// Liked
echo "<a href='open.php?destination=$destination'> <div class='movie_rating5' number='$number'> <span id='movie_rating_text' number='$number'> $rating </span> </div> </a>";
}
} else if($sorting == "likes") {
// Liked
echo "<a href='open.php?destination=$destination'> <div class='movie_rating5' number='$number'> <span id='movie_rating_text' number='$number'> $rating </span> </div> </a>";
}
}
if($rating == "G" || $rating == "R") {
if($sorting !== "likes") {
if($numLike == 0) {
// Not Liked
echo "<a href='open.php?destination=$destination'> <div class='movie_rating3' number='$number'> <span id='movie_rating_text' number='$number'> $rating </span> </div> </a>";
} else {
// Liked
echo "<a href='open.php?destination=$destination'> <div class='movie_rating6' number='$number'> <span id='movie_rating_text' number='$number'> $rating </span> </div> </a>";
}
} else if($sorting == "likes") {
// Liked
echo "<a href='open.php?destination=$destination'> <div class='movie_rating6' number='$number'> <span id='movie_rating_text' number='$number'> $rating </span> </div> </a>";
}
}
}
if($numLike) {
// Liked
echo "<a href='open.php?destination=$destination'> <img src='$photo' class='movie_size3' number='$number'> </a>";
} else {
// Not Liked
echo "<a href='open.php?destination=$destination'> <img src='$photo' class='movie_size' number='$number'> </a>";
}
} else {
echo "No Movies to Display";
}
if($fetch_movie !== 0) {
echo "<br>";
for($number=1;$number<=$total_pages;$number++) {
if($page == $number) {
echo '<div class="complete_page">'.$number.'</div>';
} else {
$sorting = $_GET["sorting"];
echo '<a href="?page='.$number.'&sorting='.$sorting.'"> <div class="number_page">'.$number.'</div></a>';
}
}
}
?>
</div>
</div>
<!-- End of Movie Content -->
</body>
</html>
更新
要注意的一件事是,一部電影是來自數據庫中LAST行的結果,而不是數據庫中FIRST行的結果。 通常,僅在while循環出現問題時,信息才來自FIRST數據庫。 如果一個電影是來自數據庫的最后一行,那意味着什么? 我正在嘗試提供更多信息,以便用戶可以更好地了解如何解決此問題...
我提供了我的項目的圖片:
這些是需要改進的地方
始終將session_start()作為代碼中的第一件事,其中包括以后可能會使用會話,並且您的代碼將失敗– Muhammed M.現在編輯
$name = $_GET["name"]; $name2 = $_GET["name2"];
確保已設置它們,像這樣替換: $name=isset($_GET['name'])? $_GET['name']:'';
$name=isset($_GET['name'])? $_GET['name']:'';
如果設置了$ _GET ['name'],則它將包含在$ name中,否則$ name將為空字符串”。 對所有$ _GET,$ _ POST或您只是假設它存在的其他變量執行此操作,而實際上可能不存在。
嘗試更嚴格地將HTML與PHP分開。 至少您可以做的是,將所有與PHP相關的代碼放在最上面,即使它的foreach可以構造表,將其分配給變量並包含在html中。 最好有兩個文件: main.php
, main_html.php
,就像這樣。
在echo()之后有header(),它將無法工作,並且會出錯。 必須在任何輸出之前調用header()
。 將所有if(..) { header()}
移到頁面頂部。 重定向邏輯應該是代碼中的第一個。
還有其他事情,但是我覺得這些對於您而言是最關鍵的。
還有一件事-請查看其他人的代碼,學習如何正確編寫代碼,您將因此而喜歡PHP。 不要看一些垃圾代碼,不要怪PHP。 例如下載著名的PHP框架,深入了解PSR-0,PSR-1等。 這些都將幫助您成為更好的編碼器。 是的-不要放棄! 多年以來我一直在使用PHP,但是我仍然每天都在學習))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.