Почему не работает этот код для вывода на страницу отдельной статьи. <?php //singlepost.php $conn = mysqli_connect("localhost", "root", "", "blog") or die(mysqli_connect_error()); $query = "SELECT * FROM articles WHERE article_id = 'row['id'] ; $res = mysqli_query($conn, $query) or die(mysqli_error()); ?> <?php while($row = mysqli_fetch_assoc($res)) { ?> <section class = "container"> <div class="mainarticle"> <h1><?php echo $row['article_title']; ?> </h1> <?php $img = $row['img_url']; ?> <img src="<?php echo $img ?>" alt="Картинка"> <p> <?php $text = substr($row['article_text'], 0, 1000); echo $text; ?> </p> </div> <?php } ?>
Во первых их у тебя не хватает. На каждую открывающуюся должна быть закрывающаяся. Во вторых у тебя намечается что то вроди 'row['id']' = 'row[' + id + ']'
Посмотрите вот этот код пожалуйста <?php $conn = mysqli_connect("localhost", "root", "", "blog") or die(mysqli_connect_error()); $id = $_GET['article_id']; $query = "SELECT * FROM articles WHERE article_id = '$id'"; $res = mysqli_query($conn, $query) or die(mysqli_error()); ?> <?php while($row = mysqli_fetch_assoc($res)) { ?> <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title></title> </head> <body> <section class = "container"> <div class="mainarticle"> <h1><?php echo $row['article_title']; ?> </h1> <?php $img = $row['img_url']; ?> <img src="<?php echo $img ?>" alt="Картинка"> <p> <?php $text = $row['article_text']; echo $text; ?> </p> </div> </section> </body> </html> <?php } ?> --- Добавлено --- вот код Index.php <?php $conn = mysqli_connect("localhost", "root", "", "blog") or die(mysqli_connect_error()); $query = "SELECT * FROM articles ORDER BY article_id DESC LIMIT 1"; $res = mysqli_query($conn, $query) or die(mysqli_error()); ?> <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Таджикский блог</title> <link rel="stylesheet" href="style.css"> </head> <body> <header class = "container"> <div class="logo"> <h1> TajBlog</h1> </div> <div class="menu"> <a href="#">Меню</a> <a href="№">Новости</a> </div> <div class="login"> <a href="auth.php">Войти</a> </div> </header> <?php while($row = mysqli_fetch_assoc($res)) { ?> <section class = "container"> <div class="mainarticle"> <h1><?php echo $row['article_title']; ?> </h1> <?php $img = $row['img_url']; ?> <img src="<?php echo $img ?>" alt="Картинка"> <p> <?php $text = substr($row['article_text'], 0, 1000); echo $text; ?> ... </p> <?php if(strlen($row['article_text']) >= 1000){ ?> <div> <a href="singlepost.php">Далее</a> </div> <?php } ?> </div> <?php } ?> <h1>Топ статьи</h1> <div class="sidebar"> <div class="toparticles"> <img src="img/imgarticle.jpg" alt=""> <div class="articletext"> <h1>Загаловок</h1> <p>Lorem ipsum dolor sits ametasd, conset asdfsdf dolor sits ametasd, conset asdfsdf sadf sadf </p> </div> </div> <div class="toparticles"> <img src="img/imgarticle.jpg" alt=""> <div class="articletext"> <h1>Загаловок</h1> <p>Lorem ipsum dolor sits ametasd, conset asdfsdf dolor sits ametasd, conset asdfsdf sadf sadf </p> </div> </div> <div class="toparticles"> <img src="img/imgarticle.jpg" alt=""> <div class="articletext"> <h1>Загаловок</h1> <p>Lorem ipsum dolor sits ametasd, conset asdfsdf dolor sits ametasd, conset asdfsdf sadf sadf </p> </div> </div> </div> </section> </body> </html>
Посмотрел и чЁ? На осн. ошибку вам указали на киберфоруме. Походу у вас while – универ. решение на все случаи жизни. Про while в списке, когда списка по сути нет, уже написали. А во это что за хрень: PHP: <?php while($row = mysqli_fetch_assoc($res)) { ?> <!DOCTYPE html> Нужно как-то так, если использовать ваш любимый or die: PHP: $row = mysqli_fetch_assoc($res) or die(); Или так, если все-таки использовать алг. конструкции, а за одно и норм. статус выдавать: PHP: if (!($row = mysqli_fetch_assoc($res))) { error(404); //exit; } Писать else для страницы ошибки после основного шаблона как-то совсем напряжно. Хотя если запихнете основной шаблон в отдельный файл, то будет выглядеть немного повменяемее: PHP: if ($row = mysqli_fetch_assoc($res)) include(PATH.'template/singlepost.php'); else error(404);