не подскажите как мне вывести их по отдельности?
ну например у меня сеЙчас вот такоЙ запрос
SELECT id FROM category WHERE cat='$cat'
например когда я вожу в cat только одно значение без запетого то он мне выводит но когда с запетыми то не выводит, помогите пожалуЙста мне с этоЙ проблемоЙ.
спс за ранее
Спустя 11 минут, 45 секунд (15.03.2011 - 21:11) neadekvat написал(а):
Что-то вы намудрили с определениями.
Приведите нормально структуру и записи в ней, лучше дампом.
А также то, что надо достать.
Приведите нормально структуру и записи в ней, лучше дампом.
А также то, что надо достать.
Спустя 23 секунды (15.03.2011 - 21:12) alex12060 написал(а):
Тебе как надо?
Несколько записей вытаскивать?
Использую WHERE IN
Несколько записей вытаскивать?
Использую WHERE IN
Спустя 2 минуты, 25 секунд (15.03.2011 - 21:14) nugle написал(а):
for($i=0, $i<6, $i++)
{echo sub_str($row['cat'], 0, $i);}
{echo sub_str($row['cat'], 0, $i);}
Спустя 4 минуты, 34 секунды (15.03.2011 - 21:19) Гена написал(а):
CREATE TABLE IF NOT EXISTS `lessons` (
`id` int(4) NOT NULL AUTO_INCREMENT,
`title` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
`meta_d` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
`meta_k` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
`date` date NOT NULL,
`short_discription` text COLLATE utf8_unicode_ci NOT NULL,
`full_discription` text COLLATE utf8_unicode_ci NOT NULL,
`author` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
`cat` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
`view` int(10) NOT NULL,
`hovedside` int(1) NOT NULL,
`komment` int(1) NOT NULL,
`voit` int(1) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=53 ;
--
-- Дамп данных таблицы `lessons`
--
INSERT INTO `lessons` (`id`, `title`, `meta_d`, `meta_k`, `date`, `short_discription`, `full_discription`, `author`, `cat`, `view`, `hovedside`, `komment`, `voit`) VALUES
(1, 'Test kategori', 'zxcv', 'alle test', '0000-00-00', '<p>text text</p>', '<p>text text</p>', 'Guvas', '5 ,6 ,8 ', 0, 1, 1, 1);
если посмотреть колонку cat то увидете что там '5 ,6 ,8 ' .
мне нужно чтоб они выводились все.
вот сам код запроса.
$result = mysql_query ("SELECT id,title,short_discription,date,author,view FROM lessons WHERE cat='$cat',$db);
Спустя 1 минута, 50 секунд (15.03.2011 - 21:20) alex12060 написал(а):
$cat = isset($_GET['cat']) ? $_GET['cat'] : 1;
if (!preg_match("/[0-9,]/", $cat)) die("Please, don't change a GET string!");
$sql = mysql_query("SELECT id FROM category WHERE cat IN ('".mysql_real_escape_string($cat)."')") or die(mysql_error());
// some actions
Спустя 2 минуты, 57 секунд (15.03.2011 - 21:23) Гена написал(а):
Цитата (alex12060 @ 15.03.2011 - 18:12) |
Тебе как надо? Несколько записей вытаскивать? Использую WHERE IN |
пробывал не помогает, даже ошибку выдает((((
Спустя (15.03.2011 - 21:23) neadekvat написал(а):
Ок, но как именно они должны выводится?
Спустя 3 минуты, 20 секунд (15.03.2011 - 21:27) imbalance_hero написал(а):
alex12060
Зачем для чисел mysql_real_escape_string? Тут использовать надо int.
Что за ошибку? Может грамматическую?
Зачем для чисел mysql_real_escape_string? Тут использовать надо int.
Что за ошибку? Может грамматическую?
Спустя 6 минут, 19 секунд (15.03.2011 - 21:33) alex12060 написал(а):
imbalance_hero
Ага, конечно
Ага, конечно

Цитата |
например когда я вожу в cat только одно значение без запетого то он мне выводит но когда с запетыми то не выводит, помогите пожалуЙста мне с этоЙ проблемоЙ. |
Он текст с запятыми посчитает как string и вернет первое int значение перед string
Спустя 7 минут, 17 секунд (15.03.2011 - 21:40) neadekvat написал(а):
alex12060, насколько я помню, в IN() могут быть переданы только числовые значения через запятую.
Спустя 2 минуты, 12 секунд (15.03.2011 - 21:42) alex12060 написал(а):
neadekvat
Я знаю это, но ведь если к тебе пришла инфа по ГЕТ, а в БД, например, идет выборка по автоинкрементному ид, который сам по суте - инт, то что, всегда надо конвертировать в число? Атнюдь)
Хотя, можнт в этом случае я и заблуждаюсь, так как нет доступпной БД.
Сейчас проверю твою мысль)
Я знаю это, но ведь если к тебе пришла инфа по ГЕТ, а в БД, например, идет выборка по автоинкрементному ид, который сам по суте - инт, то что, всегда надо конвертировать в число? Атнюдь)
Хотя, можнт в этом случае я и заблуждаюсь, так как нет доступпной БД.
Сейчас проверю твою мысль)
Спустя 2 минуты, 41 секунда (15.03.2011 - 21:45) neadekvat написал(а):
Цитата (alex12060 @ 15.03.2011 - 18:42) |
если к тебе пришла инфа по ГЕТ |
Стоп, какой ГЕТ? Тут ни про какой ГЕТ и не речи не было.
К тому же, если уж что-то из ГЕТа пришло - то должно быть в числовом формате, и обработать в скрипте это надо соответствующим образом. И уж потом числа объединить в запрос.
Спустя 1 минута, 11 секунд (15.03.2011 - 21:46) m4a1fox написал(а):
Интересная у вас полемика
Но все же... Я думаю автор имеет ввиду, что у него $ cat это что то типо родительской. Ну тоесть например в одной таблице есть cat а вот эта таблица (как я бы сделал id_cat). Вот. И он хочет вытащить значения, если $cat = $id_cat? ИМХО. Скорее я не прав, но все же...

Спустя 16 секунд (15.03.2011 - 21:47) Гена написал(а):
Цитата (alex12060 @ 15.03.2011 - 18:20) |
|
не помогает, все так же.
результат должен был быть таков: у меня есть категории которые делятся по номерам, когда у меня в таблице только один номер то он выводит в правильно и в правильном месте, но когда пытаюсь поставить например тему какую нибудь сразу в двух или в трех категориях как вы видели наверное в таблице у меня, то тема вообще нигде не появляется.
Спустя 31 секунда (15.03.2011 - 21:47) m4a1fox написал(а):
neadekvat
Не обязательно GET = число, может и вместе быть...
Не обязательно GET = число, может и вместе быть...
Спустя 2 минуты, 33 секунды (15.03.2011 - 21:50) alex12060 написал(а):
Дошло, я понял)
В таком случае, надо подходить к проблеме с другой стороны)
В таком случае, надо подходить к проблеме с другой стороны)
Спустя 49 секунд (15.03.2011 - 21:50) m4a1fox написал(а):
Можно так. Создать массив со значением, и потом просто подставлять его, если хоть одна из массива совпадает тогда вынимать.
Спустя 25 секунд (15.03.2011 - 21:51) neadekvat написал(а):
В общем, насколько я понимаю, здесь ошибка в архитектуре.
Вместо двух таблиц:
cats (категоии)
lessons (уроки, видимо)
Должно быть три таблицы:
lessons (уроки, видимо)
les2cat
Вместо двух таблиц:
cats (категоии)
cat_id name
1 категория 1
2 категория 2
lessons (уроки, видимо)
les_id name cat
1 урок1 1,2
Должно быть три таблицы:
cat_id name
1 категория 1
2 категория 2
lessons (уроки, видимо)
les_id name
1 урок1
les2cat
les_id cat_id
1 1
1 2
Спустя 56 секунд (15.03.2011 - 21:52) neadekvat написал(а):
m4a1fox, я не говорю, как может быть, я говорю, как должно быть. А вообще, как выясняется, ни о каких ГЕТах речи не идет. Речь о совсем другой сущности и ее свойствах.
Спустя 19 секунд (15.03.2011 - 21:52) alex12060 написал(а):
Не, слишком сложно. Там проще поступить можно, просто вытащить из таблицы, обработать цифры и собрать в ИН.
Спустя 6 секунд (15.03.2011 - 21:52) m4a1fox написал(а):
neadekvat
Да. Точняк. Это реально легче.
Да. Точняк. Это реально легче.
Спустя 1 минута, 11 секунд (15.03.2011 - 21:53) m4a1fox написал(а):
Интересно, а где автор темы? Пропал куда-то

Спустя 1 минута, 18 секунд (15.03.2011 - 21:55) m4a1fox написал(а):
alex12060
Ну прикиним. Вот Вы вытащили цифры, засунули их в массив, но ведь потом перебирать все равно на предмет совпадения?
Ну прикиним. Вот Вы вытащили цифры, засунули их в массив, но ведь потом перебирать все равно на предмет совпадения?
Спустя 51 секунда (15.03.2011 - 21:56) neadekvat написал(а):
alex12060, нет, не проще. Проще именно так, как показал я, потому что так надо делать в подавляющем большинстве случаев. Не я это придумал, кстати :)
Посмотрите, какие тут с вашим "проще" предлагают идеи. И это называется "проще"?
Посмотрите, какие тут с вашим "проще" предлагают идеи. И это называется "проще"?
Спустя 4 минуты, 59 секунд (15.03.2011 - 22:01) Гена написал(а):
Цитата (neadekvat @ 15.03.2011 - 18:51) |
В общем, насколько я понимаю, здесь ошибка в архитектуре. Вместо двух таблиц: cats (категоии)
lessons (уроки, видимо)
Должно быть три таблицы:
lessons (уроки, видимо)
les2cat les_id cat_id |
спасибо огромное за расклад, тока вот мне придется все заново переписывать.
Спустя 1 минута, 8 секунд (15.03.2011 - 22:02) Гена написал(а):
Цитата (m4a1fox @ 15.03.2011 - 18:50) |
Можно так. Создать массив со значением, и потом просто подставлять его, если хоть одна из массива совпадает тогда вынимать. |
не могли бы вы показать в коде как это сделать?
Спустя 10 секунд (15.03.2011 - 22:02) alex12060 написал(а):
Ну ТС придется прееделать все)
Хотя, посмотрим)
Я набросал конкретно по вопросу)
Криво правда, но посомтрим)
З.Ы не нападайте на субстр, я не хочу сейчас думать, как другим путем обкарнать последние точку с запятой)
Хотя, посмотрим)
Я набросал конкретно по вопросу)
Криво правда, но посомтрим)
$cat = '1, 3, 5';
if (!preg_match("/[0-9,]/", $cat)) die("Please, don't change a string!");
$g = explode(", ", $cat);
foreach($g as $num) $where .= (int)$num.', ';
$sql = mysql_query("SELECT title FROM test WHERE id IN (".substr($where, 0, strlen($where) - 2).")") or die(mysql_error());
if (mysql_num_rows($sql) == 0) die('We have 0 results!');
while($z = mysql_fetch_array($sql, MYSQL_NUM)) echo $z[0]."<br />\n\r";
З.Ы не нападайте на субстр, я не хочу сейчас думать, как другим путем обкарнать последние точку с запятой)
Спустя 1 минута, 26 секунд (15.03.2011 - 22:03) neadekvat написал(а):
Цитата (Гена @ 15.03.2011 - 19:01) |
тока вот мне придется все заново переписывать. |
Представьте, что вы начали строить трехэтажный коттедж. Поставили вы уже целый этаж. И тут вы узнаете, что фундамент должен быть из бетона, а не из дерева.
У вас есть выбор - развалить первый этаж, залить нормальный фундмаент и строиться, либо достроить коттедж, а потом в скором времени ломать его и все равно начинать заного.
Вот только наверное уж один этаж сломать проще и дешевле, чем три? Хотя, дело ваше.
Спустя 1 минута, 55 секунд (15.03.2011 - 22:05) neadekvat написал(а):
alex12060, что вы делаете? Вы проверяли код?
Спустя 2 минуты, 8 секунд (15.03.2011 - 22:07) alex12060 написал(а):
Проверял.
Спустя 5 минут, 11 секунд (15.03.2011 - 22:12) neadekvat написал(а):
Цитата (alex12060 @ 15.03.2011 - 19:07) |
Проверял. |
Как же это вы так проверяли? Ваша регулярка, например ("/[0-9,]/"), пропустит любой набор символов, лишь бы там хотя бы раз встречалась цифра или запятая.
Цикл можно заменить на array_map, к тому же в итоге у вас получится следующая картина:
$where = '1, 2, 3, ';
Что там в запросе - жесткий костыль..
В итоге код начального уровня. Без обид, но рекомендовать такой код я бы не решился.
Спустя 3 минуты, 44 секунды (15.03.2011 - 22:16) alex12060 написал(а):
Да, ты прав)
В топку, спать пошел я лучше)
В топку, спать пошел я лучше)
Спустя 2 минуты, 34 секунды (15.03.2011 - 22:19) Гена написал(а):
у меня голова кругом пошла((((
не знаю даже с чего начать и что менять((((
кто сможет разобраться и обьяснить как и что мне нужно тут исправить?
не знаю даже с чего начать и что менять((((
кто сможет разобраться и обьяснить как и что мне нужно тут исправить?
<?php
session_start();
include("blocks/db.php");
if(isset($_GET['cat'])){$cat = $_GET['cat'];}
include("blocks/check.php");
$resultes = mysql_query("SELECT * FROM options",$db);
$myrowes = mysql_fetch_array($resultes);
$result = mysql_query ("SELECT * FROM categories WHERE id='$cat'",$db);
$myrow = mysql_fetch_array($result);
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<!-- Template Design by TheWebhub.com | http://www.thewebhub.com | Released for free under a Creative Commons Attribution-Share Alike 3.0 Philippines -->
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<title><?php echo $myrow['title'];?></title>
<meta name="keywords" content="<?php echo $myrow['meta_k'];?>" />
<meta name="description" content="<?php echo $myrow['meta_d'];?>" />
<link href="style.css" rel="stylesheet" type="text/css" media="screen" />
<script type="text/javascript" src="js/tilt-1.0.min.js"></script>
<script>
$(function() {
$('#div1').tilt();
});
</script>
<script type="text/javascript" src="js/jquery.min.js"></script>
</head>
<body>
<?php include("blocks/kategories.php");
$result77 = mysql_query("SELECT pages FROM options", $db);
$myrow77 = mysql_fetch_array($result77);
$num = $myrow77["pages"];
@$page = $_GET['page'];
$result00 = mysql_query("SELECT COUNT(*) FROM lessons WHERE cat='$cat'");
$temp = mysql_fetch_array($result00);
$posts = $temp[0];
$total = (($posts - 1) / $num) + 1;
$total = intval($total);
$page = intval($page);
if(empty($page) or $page < 0) $page = 1;
if($page > $total) $page = $total;
$start = $page * $num - $num;
?>
<div id="content">
<div id="content-wrapper-top">
<div id="content-wrapper-btm">
<div id="left">
<table width="246%" border="0" valing="top">
<tr>
<td width="73%" valign="top"><a href="index.php"><img src="images/logo.png" width="750" border="0"></a><table width="100%" height="41" border="0">
<tr>
<td valign="top"><table width="100%" border="0" align="center">
<tr>
<td valign="top"><div id="content">
<div id="content-wrapper-top">
<div id="content-wrapper-btm">
<div id="left">
</td>
</tr>
<tr>
<td valign="top">
<div id="div1">
<?php
if($myrowes['sort_nyheter'] == 0){
$result = mysql_query ("SELECT id,title,short_discription,date,author,view FROM lessons WHERE cat='$cat' ORDER BY id LIMIT $start, $num",$db);
$myrow = mysql_fetch_array($result);
}
if($myrowes['sort_nyheter'] == 1){
$result = mysql_query ("SELECT id,title,short_discription,date,author,view FROM lessons WHERE cat='$cat' ORDER BY id DESC, date DESC LIMIT $start, $num",$db);
$myrow = mysql_fetch_array($result);
}
do{
printf("<div id='right'>
<div class='post_titel'>
<div class='postlis'><a href='view_post.php?id=%s'>%s</a></div>
<p>%s</p><br><br>
<div class='boardlists'>
Dato: <b>%s</b> Visning: <b>%s</b> Autor: <b>%s</b></div>
</div>
</div>",$myrow["id"],$myrow["title"],$myrow["short_discription"],$myrow["date"],$myrow["view"],$myrow["author"]);
}
while($myrow = mysql_fetch_array($result));
?>
</div>
<center><?php include("blocks/page_navigator.php"); ?></center>
</td>
</tr>
</table></td>
</tr>
</table></td>
</tr>
</table>
</div>
<div style="clear: both;"> </div>
</div>
</div>
</div>
<?php include("blocks/footer.php"); ?>
</body>
</html>
Спустя 4 минуты, 16 секунд (15.03.2011 - 22:23) neadekvat написал(а):
Вы сами все это писали или взяли чей-то код?
Спустя 2 минуты, 10 секунд (15.03.2011 - 22:25) Гена написал(а):
сам писал, только по учебнику, и методом тыканя, только строго не судите моЙ код))) я только не давно начал)))
Спустя 4 минуты, 2 секунды (15.03.2011 - 22:29) neadekvat написал(а):
Гена, не ломитесь вперед. Чтобы продолжать путь, надо быть уверенным, что на текущий момент усвоено все.
Сделайте бекап текущей структуры и копию имеющегося кода.
Затем внесите изменения в базу данных (я надеюсь, вы поняли, что я там показал?), а затем, исходя из этой структуры, начините писать код и запросы.
Сделайте бекап текущей структуры и копию имеющегося кода.
Затем внесите изменения в базу данных (я надеюсь, вы поняли, что я там показал?), а затем, исходя из этой структуры, начините писать код и запросы.
Спустя 2 часа, 15 минут, 20 секунд (16.03.2011 - 00:45) imbalance_hero написал(а):
Гена
Неправильная постановка сразу идёт, поэтому и калабурда.
Есть у тебя строка в базе такого вида для новостей:
1) 1
2) 1,2
3) 2,3,4
4) 1,5,6
то для запроса надо использовать LIKE %$var%, то есть поиск по полю.
А в целом такую связь необходимо организовывать через связующую таблицу, итого 3 таблицы: КАТЕГОРИЯ, СТАТЬЯ, СВЯЗУЮЩАЯ
В связующей: id,id_cat,id_lesson , тогда можно несколькими записями обозначить, что одна статья держится на нескольких категориях, это и есть внешние ключи в таблицах.
Неправильная постановка сразу идёт, поэтому и калабурда.
Есть у тебя строка в базе такого вида для новостей:
1) 1
2) 1,2
3) 2,3,4
4) 1,5,6
то для запроса надо использовать LIKE %$var%, то есть поиск по полю.
А в целом такую связь необходимо организовывать через связующую таблицу, итого 3 таблицы: КАТЕГОРИЯ, СТАТЬЯ, СВЯЗУЮЩАЯ
В связующей: id,id_cat,id_lesson , тогда можно несколькими записями обозначить, что одна статья держится на нескольких категориях, это и есть внешние ключи в таблицах.
Спустя 12 часов, 22 минуты, 56 секунд (16.03.2011 - 13:08) Лена написал(а):
Только первую страницу почитала. А тут уже оказывается, целых три. Удалите пост.