отображение точных результатов

Я создаю каталог веб-сайта для своего мобильного сайта ( НАЙДЕНО ЗДЕСЬ )

Я выяснил, как отображать списки из моей таблицы mysql на моей домашней странице из моих таблиц promo_cat.

Дело в том, что у меня проблемы:

однажды нажав на одну из каталогов, он приведет меня на мою страницу list.php.

Как получить эту страницу для отображения результатов, связанных с нажатой кнопкой, а не с другими?

Например: при нажатии на «БЕСПЛАТНО» открывается эта страница: http://www.xclo.mobi/xclo2/list.php?id=FREE . Который отображает все результаты. он должен показывать только результаты, которые имеют поле promo_cat как «БЕСПЛАТНО», и не должны показывать никаких других результатов, как в настоящее время.

Мой список.php:

<?php include_once('include/connection.php'); include_once('include/article.php'); $article = new article; $articles = $article->fetch_all(); ?> <html> <head> <title>xclo mobi</title> <link rel="stylesheet" href="other.css" /> </head> <body> <?php include_once('header.html'); ?> <div class="container"> <a href="index.php" id="logo">Category = ???</a> <ol> <?php foreach ($articles as $article) { ?> <div class="border"> <a href="single.php?id=<?php echo $article['promo_title']; ?>" style="text-decoration: none"> <img src="<?php echo $article['promo_image']; ?>" border="0" class="img" align="left"><br /> <a href="<?php echo $data['promo_link']; ?>" target="_blank"><img alt="" title="" src="GO.png" height="50" width="50" align="right" /></a> <font class="title"><em><center><?php echo $article['promo_title']; ?></center></em></font> <br /><br /> <font class="content"><em><center><?php echo $article['promo_content']; ?></center></em></font> </div><br/><br /> </a> <?php } ?> </ol> </div> </body> </html> 

/include/article.php

 <?php class article { public function fetch_all(){ global $pdo; $query = $pdo->prepare("SELECT * FROM mobi"); $query->execute(); return $query->fetchAll(); } public function fetch_data($promo_title) { global $pdo; $query = $pdo->prepare("SELECT * FROM mobi WHERE promo_title = ?"); $query->bindValue(1, $promo_title); $query->execute(); return $query->fetch(); } } ?> 

Solutions Collecting From Web of "отображение точных результатов"

На основе кода, который вы предоставили, попробуйте следующее:

 <?php foreach ($articles as $article) { if ($article['promo_cat'] === 'FREE') { ?> // Keep the rest of the code //instead of <?php } ?> - put... <?php } } ?> 

Имейте в виду, это грязно. Но заявление foreach (я полагаю) используется для распечатки всех сообщений. Итак, прежде чем распечатывать сообщение, вы просто проверяете, БЕСПЛАТНО, ПОДАРОК ​​promo_title, ПОДАРОК ​​и т. Д. Если это не так, то он не печатает этот элемент.

Вы можете сделать это более динамичным, передав переменную $ _GET (которую вы, по-видимому, делаете, но код никогда не использует эту переменную) с текущим названием промо и изменением условной строки, чтобы сказать

if ($article['promo_cat'] === $_GET['id'])

Надеюсь, это поможет!

Вам нужно внести изменения в код для list.php на основе ввода, который он получает через параметр GET. что-то вроде:

 if ($_GET['id'] == 'FREE'){ // do something like display FREE items } elseif($_GET['id'] == 'GIFT') { // display GIFT items } else { // perform some default action } 

Это должно сделать его еще более управляемым базой данных (полезно, когда есть много категорий):

 $sql = "select * from categories where id = '".$_GET['id']."'"; if (mysql_results($sql)){ // do something } else { // show error } 

Обратите внимание, что это только для демонстрации, и в вашем коде вы должны использовать PDO / MySQLI и подготовленные операторы, а не функцию mysql_results.

В свете большей информации, предоставленной OP: измените это

 $articles = $article->fetch_all(); 

в

 $articles = $article->fetch_data($_GET['id']); 

в list.php и посмотреть, получите ли вы правильные результаты.