|
|
|
| Добрый день! Пожалуйста, подскажите как вывести несколько категорий из одной таблицы, если категория выводится такими способами. Заранее спасибо за советы!
Способ 1
<?php
include ("blocks/bd.php"); /*соединяемся с базой*/
if (isset($_GET['cat'])) {$cat = $_GET['cat'];}
if (!isset($cat)) {$cat = 8;}
$result = mysql_query ("SELECT * FROM categories WHERE id='$cat'",$db);
if (!$result)
{
echo "<p>Запрос на выборку данных из базы не прошел. <br><strong>Код ошибки:</strong></p>";
exit (mysql_error());
}
if (mysql_num_rows($result) > 0)
{
$myrow = mysql_fetch_array($result);
}
else
{
echo "<p>Информация по запросу не может быть извлечена. В таблице нет записей.</p>";
exit();
}
?>
|
Способ 2
$result45 = mysql_query("SELECT * FROM books WHERE cat = 4 ORDER BY date DESC, id DESC LIMIT 3",$db);
if (!$result45)
|
| |
|
|
|
|
|
|
|
для: hitball
(16.09.2010 в 14:56)
| | уберите условие выборки из запроса и будет выводить всё, что есть в таблице | |
|
|
|
|
|
|
|
для: Slo_Nik
(16.09.2010 в 15:15)
| | мне так не нужно, мне нужно чтобы выводило, к примеру, категорию 3 и 6 или 5, 6, 3. | |
|
|
|
|
|
|
|
для: hitball
(16.09.2010 в 14:56)
| |
SELECT * FROM categories WHERE id IN (3,5,6)
|
второй запроос аналогично | |
|
|
|
|
|
|
|
для: Trianon
(16.09.2010 в 15:41)
| | Trianon, спасибо! | |
|
|
|
|
|
|
|
для: Trianon
(16.09.2010 в 15:41)
| |
if (isset($_GET['cat'])) {$cat = $_GET['cat'];}
if (!isset($cat)) {$cat = (9,60,61,62,63,64,65,66,109);}
$result = mysql_query ("SELECT * FROM categories WHERE id='$cat'",$db);
|
написала так в первом способе, но выдает синтаксическую ошибку | |
|
|
|
|
|
|
|
для: hitball
(16.09.2010 в 18:23)
| | а Вы внимательно сравтите Ваш запрос с тем запросом, что Trianon написал
да и здесь Вы намудрили
<?php
if (isset($_GET['cat'])) {$cat = $_GET['cat'];}
if (!isset($cat)) {$cat = (9,60,61,62,63,64,65,66,109);}
?>
|
| |
|
|
|
|
|
|
|
для: Slo_Nik
(16.09.2010 в 18:33)
| | сравнила и ничего не увидела(
я же говорю, что у меня 2 разных способа вывода категорий.
А Trianon только для второго написал | |
|
|
|
|
|
|
|
для: hitball
(16.09.2010 в 18:23)
| |
<?php
// Это
$cat = (9,60,61,62,63,64,65,66,109);
// На это
$cat = "(9,60,61,62,63,64,65,66,109)";
?>
|
| |
|
|
|
|
|
|
|
для: mihdan
(16.09.2010 в 18:49)
| | так тоже не работает, выдает мою ошибку Информация по запросу не может быть извлечена. В таблице нет записей.
но записи в таблице точно есть записи | |
|
|
|
|
|
|
|
для: hitball
(16.09.2010 в 18:59)
| | а вот теперь самое интересное....
воспользуйтесь функциями error_reporting(), mysql_errno() и mysql_error() , что бы выявить ошибку | |
|
|
|
|
|
|
|
для: hitball
(16.09.2010 в 18:59)
| | Это всего-навсего исправление одной из ваших ошибок. Поставьте максимальный уровень ошибок. | |
|
|
|
|
|
|
|
для: mihdan
(16.09.2010 в 18:49)
| | скажите, а вы точно уверенны что такой заменной можно вывести информацию? у меня не получается никак это сделать(
<?php
include ("blocks/bd.php"); /*соединяемся с базой*/
if (isset($_GET['cat'])) {$cat = $_GET['cat'];}
if (!isset($cat)) {$cat ="(59,60,61,62,63,64,65,66,109)";}
$result = mysql_query ("SELECT * FROM categories WHERE id='$cat'",$db);
if (!$result)
{
echo "<p>Запрос на выборку данных из базы не прошел. <br><strong>Код ошибки:</strong></p>";
exit (mysql_error());
}
if (mysql_num_rows($result) > 0)
{
$myrow = mysql_fetch_array($result);
}
else
{
echo "<p>Информация по запросу не может быть извлечена. В таблице нет записей.</p>";
exit();
}
?>
|
| |
|
|
|
|
|
|
|
для: hitball
(16.09.2010 в 19:26)
| | Выводите текст запроса перед тем, как исполнять.
Выводите и сравнивайте с моим.
Кстати, в диагностике стоит написать "В таблице нет записей удовлетворяющих условию." | |
|
|
|
|
|
|
|
для: Trianon
(16.09.2010 в 19:38)
| | сейчас снова попробовала и ничего не вышло(
помогите мне, пожалуйста! | |
|
|
|
|
|
|
|
для: hitball
(22.10.2010 в 11:21)
| | >автор: Trianon (16.09.2010 в 15:41)
>для: hitball (16.09.2010 в 14:56)
>SELECT * FROM categories WHERE id IN (3,5,6)
А у вас, что получится:
WHERE id='$cat'"
??? | |
|
|
|
|
|
|
|
для: sim5
(22.10.2010 в 11:33)
| | Здравствуйте, sim5 )))
Нет, так тоже не выходит. Это ведь два кода с одной страницы
полный вид страницы вот
<?php
include ("blocks/bd.php");
if (isset($_GET['cat'])) {$cat = $_GET['cat'];}
if (!isset($cat)) {$cat = 5;}
$result = mysql_query ("SELECT * FROM categories WHERE id='$cat'",$db);
if (!$result)
{
echo "<p>Запрос на выборку данных из базы не прошел. Напишите об этом администратору L@net <br><strong>Код ошибки:</strong></p>";
exit (mysql_error());
}
if (mysql_num_rows($result) > 0)
{
$myrow = mysql_fetch_array($result);
}
else
{
echo "<p>Информация по запросу не может быть извлечена. В таблице нет записей.</p>";
exit();
} ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<body><div id="wrapper">
<?
$result77 = mysql_query ("SELECT str FROM options",$db);
$myrow77 = mysql_fetch_array ($result77);
$num = isset($myrow77["str"]) ? $myrow77["str"] : 10;
$near = isset($myrow77["near"]) ? $myrow77["near"] : 3;
@$page = $_GET['page'];
$result00 = mysql_query("SELECT COUNT(*) FROM articles WHERE cat='$cat'");
$temp = mysql_fetch_array($result00);
$post = $temp[0];
$total = (($post - 1)/$num) + 1;
$total = intval($total);
$page = intval($page);
if(empty($page) or $page < 0) $page = 1;
if($page > $total) $page = $total;
//--- постраничка ---
$pageline = '<strong>Страницы: ';
// Проверяем нужна ли 1-я страница
$pp = $page-1;
$pn = $page+1;
if($page - $near > 1) $pageline .= " <a href= $srcfile?cat=$cat&page=1>1</a> ...";
// Находим ближайшие станицы с обоих краев, если они есть
for($i = $page-$near; $i <= $page+$near; $i++)
if($i >=1 && $i <= $total)
{
if($i == $page) $pageline .= "<b>$i</b>";
// elseif($i == $pp) $pageline .= " <a href= $srcfile?cat=$cat&page=$i > << </a> ";
// elseif($i == $pn) $pageline .= " <a href= $srcfile?cat=$cat&page=$i > >> </a> ";
else $pageline .= " <a href= $srcfile?cat=$cat&page=$i > $i </a> ";
}
// Проверяем нужна ли последняя страница
if($page + $near < $total) $pageline .= "... <a href= $srcfile?cat=$cat&page=$total >$total</a> ";
$pageline .= '</strong>';
$pageline = $total ? "<div class=\"pstrnav\">$pageline</div>" : "";
//--- Вывод постранички 1 ---
echo $pageline;
// Вычисляем начиная к какого номера
// следует выводить сообщения
$start = $page * $num - $num;
// Выбираем $num сообщений начиная с номера $start
$result = mysql_query("
SELECT
id,title,description,date,
DATE_FORMAT(date, '%d.%m.%Y') AS eurodate,
mini_img,rating,q_vote
FROM articles
WHERE cat= ". ((int)$cat) . "
ORDER BY date DESC
LIMIT " . ((int)$start) . " , ". ((int)$num) ."
",$db);
if (!$result)
{
echo "<p>Запрос на выборку данных из базы не прошел. Напишите об этом администратору L@net <br><strong>Код ошибки:</strong></p>";
exit (mysql_error());
}
while($myrow = mysql_fetch_array($result))
{
$r = $myrow["rating"]/$myrow["q_vote"];
$r = intval($r);
printf ("<div class='lesson_title2'>
<img class='mini_lenta' align='left' src='../%s'>
<a class='h4' href='view_articles.php?id=%s'>%s</a>
<p class='br_p'><span class='lesson_add'> Дата добавления: %s Рейтинг:<img src='../images/css/%s.gif'></span></p>
%s</div>", $myrow["mini_img"], $myrow["id"], $myrow["title"], $myrow["eurodate"], $r, $myrow["description"]);
}
//--- Вывод постранички 2 ---
echo $pageline;
?>
</body>
</html>
|
| |
|
|
|
|
|
|
|
для: hitball
(22.10.2010 в 11:41)
| | Зачем числовые значения в запросах вы обрамляете в кавычки?
Вот так поступать нельзя:
if (isset($_GET['cat'])) {$cat = $_GET['cat'];}
if (!isset($cat)) {$cat = 5;}
| а затем подставляя $cat параметром запроса.
<?
$cat = isset($_GET['cat']) ? inval($_GET['cat']) : 5;
|
По причине выше, по которой вам советовали IN(...) - так и не видно, где вы это применяете, и чего вам собственно тогда надо? | |
|
|
|
|
|
|
|
для: sim5
(22.10.2010 в 12:04)
| | мне нужно, чтобы выводилось несколько категорий на одной странице, а зачем же мне оставлять неработающий код на страницах?
если пишу так, то выдает синтаксическую ошибку
$cat = isset($_GET['cat']) ? inval($_GET['cat']) : 16,114;
$result = mysql_query ("SELECT * FROM categories WHERE id='$cat'",$db);
|
| |
|
|
|
|
|
|
|
для: hitball
(22.10.2010 в 12:21)
| | Значит так:
1. $cat = isset($_GET['cat']) ? inval($_GET['cat']) : 16,114; может быть только в таком виде "16,114".
2. И если не будет выполнено условие, то ваша $cat будет равна строке "16,114".
Вопрос:
Как вы думаете, в результате этого ваш запрос, который в итоге будет выглядеть как:
SELECT * FROM categories WHERE id="16,114" будет выполнен?
Вам для чего Trianon об операторе IN упоминал и приводил синтаксис его записи? А вы что вытворяете со всем этим? | |
|
|
|
|
|
|
|
для: sim5
(22.10.2010 в 12:55)
| | я не понимаю куда мне здесь деть это IN
у меня же не просто так выводится , а вот так | |
|
|
|
|
|
|
|
для: hitball
(22.10.2010 в 13:01)
| | Миледи, если ваши id в базе, это стока "3,7,8" или "9,5,6", заради бога, пишите:
WHERE id='3,5,6'
но если ваши id, это И 3 И 4 И 5 и т.п., то есть числовые одиночные значения, то уж будьте добры обращаться к ним соотвевтствующе, с уважением, либо:
только WHERE id=3, только WHERE id=4 и т.д,
либо сразу запрос нескольких:
WHERE id IN (3,5,6)
а не подсовывать числовым одниночным значениям id непонятную для них строку. | |
|
|
|
|
|
|
|
для: sim5
(22.10.2010 в 13:21)
| | да я понимаю, что нужно через IN просто не знаю как его симантически грамотно в мою строку
вставить
$cat = isset($_GET['cat']) ? inval($_GET['cat']) : "16,114";
$result = mysql_query ("SELECT * FROM categories WHERE id='$cat'",$db);
|
| |
|
|
|
|
|
|
|
для: hitball
(22.10.2010 в 13:24)
| | А не странна-ли сама запись у вас? Я так, ради интереса. Можете объяснить, почему при отсутствии запроса $_GET['cat'] надо выводить 16 и 114 категорию, почему, например, не 211, 123 и 45?
Так вы приравнивайте переменной $cat один из случаев запроса, то есть:
<?
$cat = isset($_GET['cat']) ? " id=" . inval($_GET['cat']) : " IN(16,114)";
//и подставляйте в запросе
".... WHERE" . $cat . "...."
|
| |
|
|
|
|
|
|
|
для: sim5
(22.10.2010 в 13:39)
| | затрудняюсь ответить на ваш вопрос | |
|
|
|
|
|
|
|
для: hitball
(22.10.2010 в 13:46)
| | Оригинально. А коли сами не знаете, то зачем такое пишите? Зачем тогда это нужно, да еще с проблемами? | |
|
|
|
|
|
|
|
для: sim5
(22.10.2010 в 13:51)
| | уж очень нужно вывести несколько категорий на одной странице. спасибо за то, что пытались мне помочь) | |
|
|
|
|
|
|
|
для: hitball
(22.10.2010 в 14:08)
| | Пожалуйста, выводите, но почему именно эти? Выбирайте сразу несколько любых категорий из базы и выводите. Либо зная все номера своих категорий (коли вы их пишите собственноручно), держите их как массив, и перемешивая этот массив, берите из него N номеров, через implode подставляйте параметрами для оператора IN в запросе. | |
|
|
|
|
|
|
|
для: hitball
(22.10.2010 в 13:24)
| | Вот заглянул, по ошибке, и не зря - функция написана с ошибкой, и вы, и я ее добросовестно копируем от поста к посту:)) | |
|
|
|
|
|
|
|
для: sim5
(23.10.2010 в 06:43)
| | спасибо), но мне это все равно не очень помогло | |
|
|
|
|
|
|
|
для: hitball
(22.10.2010 в 13:01)
| | SELECT * FROM categories WHERE id IN ($x) где $x = '3,5,6' | |
|
|
|
|
|
|
|
для: MakAst
(22.10.2010 в 13:27)
| |
$cat = isset($_GET['cat']) ? inval($_GET['cat']): "16,114";
$result = mysql_query ("SELECT * FROM categories WHERE id IN ('$cat')",$db);
|
так ошибку не выдает, но и категорию 114 не выводит | |
|
|
|