10/10/2018, 00:17
Code này sai chỗ nào vậy mấy pro
khi mình vào http://localhost/viewentry.php?id=1(hoặc 2, 3, 4...) nhưng nó vẫn load trang viewentry mà có datepost mới nhất. Mấy pro biết cách khắc phục ko (mình nghĩ cái validentry có vấn đề !?). Đoạn code ở phía dưới. Mình cảm ơn nhiều
Code:
<?php require("config.php"); if(isset($_GET['id']) == true) { if(is_numeric($_GET['id']) == false) { $error = 1; } if($error = 1) { header("Location: " . $config_basedir); } else { $validentry = $_GET['id']; } } else { $validentry = 0; } if($_POST['submit']) { $db = mysql_connect($dbhost, $dbuser, $dbpassword); mysql_select_db($dbdatabase, $db); $sql = "INSERT INTO comments(blog_id, dateposted, name, comment) VALUES(" . $validentry. ",NOW()," . $_POST['name'] . "," . $_POST['comment'] . ")"; mysql_query($sql); header("Location: http://" . $HTTP_HOST . $SCRIPT_NAME . "?id=" . $validenry); } else { } require("header.php"); if($validentry == 0) { $sql = "SELECT entries.*, categories.cat FROM entries, categories WHERE entries.cat_id = categories.id ORDER BY dateposted DESC LIMIT 1;"; } else { $sql = "SELECT entries.*, categories.cat FROM entries, categories WHERE entries.cat_id = categories.id AND entries.id = " . $validentry . " ORDER BY dateposted DESC LIMIT 1;"; } $sql_result = mysql_query($sql); $row = mysql_fetch_assoc($sql_result); echo "<h2>" . $row['subject'] . "</h2>" . $row['cat'] . " - Post on " . date("D jS F Y g:j A", strtotime($row['dateposted'])); echo "<p>" . nl2br($row['body']); echo "<p>"; $commsql = "SELECT * FROM comments WHERE blog_id = " . $validentry . " ORDER BY dateposted DESC;"; $commresult = mysql_query($commsql); $numrows_comm = mysql_num_rows($commresult); if(numrows_comm == 0) { echo "No comments"; } else { $i = 1; while($commrow = mysql_fetch_assoc($commresult)) { echo "<a name = 'comment" . $i . "'>"; echo "<h3>Comment by " . $commrow['name'] . "on " . strtotime($commrow['commresult']) . "</h3>"; echo $commrow['comment']; $i++; } } ?> <h2>Leave a comment</h2> <form action="<?php echo $SCRIPT_NAME . "?id=" . $validentry ?>" method="post"> <table border="0"> <tr> <td>Your name: </td> <td><input type="text" name="name"></td> </tr> <tr> <br> <td>Comment: </td> <td><textarea name="comment" cols="50" rows="10"></textarea></td> </tr> <tr> <br> <td></td> <td><input type="submit" name="submit" value="Add comment"></td> </tr> </table> </form> <?php require("footer.php"); ?>
Bài liên quan
Có điều thấy logic chương trình của bạn hơi yếu
Giả sử tớ gõ trực tiếp đường dẫn thế này :
http://localhost/viewentry.php
Như vậy phần if(isset($_GET['id']) == true) cho qua, chương trình đi vào khối else , --> $validentry=0 (1)
else {
$validentry = 0;
}
Vì tớ gõ đường dẫn trực tiếp nên if($_POST['submit']) cũng cho qua, chương trình rơi vào khối else :
else {
}
Tiếp đến bạn chèn header.php, không biết có gì ở đây nhưng sau đó chúng ta vẫn có 1 câu lệnh sql, vì (1).
if($validentry == 0) {
$sql = "SELECT entries.*, categories.cat FROM entries, categories
WHERE entries.cat_id = categories.id
ORDER BY dateposted DESC
LIMIT 1;";
}
$sql_result = mysql_query($sql);
$row = mysql_fetch_assoc($sql_result);
không ai viết if(isset($_GET['id']) == true)
mà chỉ cần viết if(isset($_GET['id']) là đủ rồi.
và cũng không ai viết: if(is_numeric($_GET['id']) == false) {
$error = 1;
}
mà viết
if(intval($_GET['id']) == 1) // hoặc 2, 3 gì ấy tùy bạn thôi thì làm việc gì đó, còn nếu nó không bằng 1, 2, 3 tức là nó không phải là số thì chỉ cần do nothing.
<?php
if (isset($_GET[id])){
$validentry = intval($_GET[id]);
echo $validentry;
}
?>
require("config.php");
$validentry="0"; //thêm dòng này vào
if(isset($_GET['id']) == true) {