[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Вывод данных из БД
fortuna
Есть БД ,
id | text | date
1___вася__2012-05-24
2___коля__2012-05-24

Как вывести данные чтобы дата которая повоторяеться выветси один раз ?
чтобы вот так бло.
2012-05-24
вася
коля

А то получаеться
2012-05-24
вася
2012-05-24
коля

Накидал вот такой кодик , но не могу понять как сделать внутири вайлпа проверку .. на дату
while ($rows = mysql_fetch_array ($result)){ 
$timers = $rows ['date'];
echo $timers;
if ($rows ['date'] == $timers ){
echo $timers ;
}
echo $rows['text'];
}




Спустя 14 минут, 13 секунд (23.05.2012 - 13:37) T1grOK написал(а):
Правильно составить запрос - GROUP BY в помощь.

Спустя 2 минуты, 4 секунды (23.05.2012 - 13:39) inpost написал(а):
GROUP_CONCAT
+
GROUP BY

Спустя 5 минут, 47 секунд (23.05.2012 - 13:45) fortuna написал(а):
Я может не правильно выразился , мне нужо что дата не выводилась если она повторяеться . чтобы вот так .
2012-05-24
вася
коля

А выводит он сейчас вот так .
2012-05-24
вася
2012-05-24
коля

Восути снова дата , а мне это не нужно .



Спустя 1 час, 8 минут, 30 секунд (23.05.2012 - 14:53) inpost написал(а):
fortuna
И чем тебе мой ответ не подошел?
Показывай запрос, как ты используешь указанные в связке их

Спустя 21 минута, 2 секунды (23.05.2012 - 15:14) fortuna написал(а):
inpost
Извините , я просто не понял что за GROUP_CONCAT , ща почитал пробую сделать запрос .. чуть пойже выложу .

Спустя 3 минуты, 56 секунд (23.05.2012 - 15:18) inpost написал(а):
fortuna
Если не знаешь, то вбиваешь в гугл и читаешь мануал smile.gif Кроме этого в сети тысячи примеров.

Спустя 3 минуты, 50 секунд (23.05.2012 - 15:22) SlavaFr написал(а):
делаеш ORDER BY `date `
при выводе :

$timers="";
while ($rows = mysql_fetch_array ($result)){

if ($rows ['date'] != $timers ){
$timers = $rows ['date'];
echo $timers .'<br />';
}
echo $rows['text'];
}

Спустя 2 минуты, 26 секунд (23.05.2012 - 15:24) fortuna написал(а):
Сделал вот так .. но не алё ..
   $result =mysql_query ("SELECT date , GROUP_CONCAT (text) as text FROM news ORDER BY date ");

if (!$result)
die (mysql_error());


while ($rows = mysql_fetch_array ($result)){
echo $rows ['date'];
echo $rows ['text'];
echo "<br>";
}


Спустя 2 минуты, 57 секунд (23.05.2012 - 15:27) inpost написал(а):
fortuna
Я не вижу в запросе у тебя GROUP BY smile.gif
И ссылку примера покажи, чтобы вот там было прям так, как ты показываешь без GROUP BY

Спустя 2 минуты, 2 секунды (23.05.2012 - 15:29) fortuna написал(а):
inpost
Ссылку ? это куда ? у меня денвер .

Спустя 1 минута, 17 секунд (23.05.2012 - 15:31) inpost написал(а):
fortuna
Вбей в гугл: GROUP_CONCAT , и почитай примеры!!!

Спустя 59 секунд (23.05.2012 - 15:32) Игорь_Vasinsky написал(а):
не по теме.
Цитата
while ($rows = mysql_fetch_array ($result)){

семён семёныч...

Спустя 12 секунд (23.05.2012 - 15:32) fortuna написал(а):
Да уже вбил , посмотрел примеры но не могу вкурить что да как .. по примерам как раз мне то что нужно надо .

Спустя 37 секунд (23.05.2012 - 15:32) fortuna написал(а):
Цитата (Игорь_Vasinsky @ 23.05.2012 - 12:32)
не по теме.
Цитата
while ($rows = mysql_fetch_array ($result)){

семён семёныч...

Что не так ?

Спустя 8 минут, 17 секунд (23.05.2012 - 15:41) fortuna написал(а):
Набросал вот такой код , но выводит ошибку .
$result =mysql_query ("SELECT date , GROUP_CONCAT (text) FROM news GROUP BY date ");

Спустя 14 минут, 17 секунд (23.05.2012 - 15:55) inpost написал(а):
А ошибку показать не надо? Или я должен сам догадаться?

mysql_query("запрос") or die(mysql_error());

Спустя 1 минута, 13 секунд (23.05.2012 - 15:56) inpost написал(а):
имена ячеек и таблиц надо брать в кавычки (обратные апострофы):
`news` , `date` и т.д.

Спустя 9 минут, 21 секунда (23.05.2012 - 16:06) fortuna написал(а):
FUNCTION Ttest .GROUP_CONCAT does not exist. Check the 'Function Name Parsing and Resolution' section in the Reference Manual

Спустя 11 минут, 47 секунд (23.05.2012 - 16:17) inpost написал(а):
Ещё раз скопируй запрос с исправлениями, что я выше написал.

Спустя 5 минут, 2 секунды (23.05.2012 - 16:22) fortuna написал(а):
$result =mysql_query ("SELECT `date` , GROUP_CONCAT (`text`) FROM news GROUP BY date ")  or die(mysql_error());;

if (!$result)
die (mysql_error());


while ($rows = mysql_fetch_array ($result)){
echo $rows ['date'];
echo $rows ['text'];
echo "<br>";
}

Спустя 59 секунд (23.05.2012 - 16:23) razoramus написал(а):

Спустя 24 секунды (23.05.2012 - 16:24) inpost написал(а):
fortuna
имена ЯЧЕЕК и ТАБЛИЦ. Не всё взял.
И ещё, пробел после GROUP_CONCAT убери.
Если до сих пор ошибка, выстави код и я у себя гляну.

Спустя 5 минут, 3 секунды (23.05.2012 - 16:29) fortuna написал(а):
Цитата (inpost @ 23.05.2012 - 13:24)
fortuna
имена ЯЧЕЕК и ТАБЛИЦ. Не всё взял.
И ещё, пробел после GROUP_CONCAT убери.
Если до сих пор ошибка, выстави код и я у себя гляну.

Всё дата вылезла ошибка не выводиться , убрал пробелы всё заработало .. вот только тект не вывелся .. странно .

Спустя 3 минуты, 32 секунды (23.05.2012 - 16:32) fortuna написал(а):
Всё сделал нормально сработало ..
$result =mysql_query ("SELECT `date`,GROUP_CONCAT(`text`) as `text` FROM news GROUP BY date ")  or die(mysql_error());;

if (!$result)
die (mysql_error());


while ($rows = mysql_fetch_array ($result)){
echo $rows ['date'];
echo $rows ['text'];
echo "<br>";
}

Спустя 2 минуты, 6 секунд (23.05.2012 - 16:35) fortuna написал(а):
inpost
Спасибо вам за помощь !!! и за GROUP_CONCAT , так как раньше я данный вопрос решал .. но потом всё слитело месяц назад .. и снова понадобился код .. помню где читал про GROUP_CONCAT но не придал значение и всё сделал через IF ... но сегодня решил покрутить с этим GROUP_CONCAT ... и получилось гуд !

Спустя 2 минуты, 14 секунд (23.05.2012 - 16:37) inpost написал(а):
FROM `news` GROUP BY `date `

Ставить надо везде!

Спустя 5 минут, 39 секунд (23.05.2012 - 16:42) fortuna написал(а):
inpost
Тут небольшая проблемка возникла .. как сделать текст с новой строки ?
Вывел вот так .
2012-05-24
текст 1,текст 2
а нужно вот так .
2012-05-24
текст 1
текст 2

Спустя 13 минут, 34 секунды (23.05.2012 - 16:56) ИНСИ написал(а):
SlavaFr Написал вам решение вашей задачи, присмотритесь к нему.

Добавьте запрос и вывод, который предложил SlavaFr
SELECT * FROM `news` GROUP BY `date`

Спустя 2 минуты, 23 секунды (23.05.2012 - 16:58) fortuna написал(а):
Цитата (ИНСИ @ 23.05.2012 - 13:56)
SlavaFr Написал вам решение вашей задачи, присмотритесь к нему.

Добавьте запрос и вывод, который предложил SlavaFr
SELECT * FROM `news` GROUP BY `date`

Я присмотрелся , у меня раньше данный запрос был .. если не получиться с тем что я сделал то придёться вернуться к моему старому коду .

Спустя 2 минуты, 30 секунд (23.05.2012 - 17:01) inpost написал(а):
fortuna
У тебя есть разделение запятой. Далее делай со строкой что хочешь.
Можешь заменить запятую переносом: str_replace(',','<br />',$text);
Можешь разбить на массив: $text = explode(',',$text), а далее вывести через foreach:
foreach($text as $v) {
echo '<div>'.$v.'</div>';
}

Спустя 1 минута, 16 секунд (23.05.2012 - 17:02) inpost написал(а):
Ах и ещё одно, у GROUP_CONCAT есть второй параметр как сепаратор, там ты указываешь знак разделения(!):
Вторая ссылка в гугле: http://webi.ru/webi_articles/8_14_f.html
Поставь свою, к примеру перенос: <br />

Спустя 6 минут, 37 секунд (23.05.2012 - 17:09) fortuna написал(а):
Нашёл своё ответ , спасибо еще раз всем ... что оперативно помогли ...
$result = mysql_query ("SELECT `date`,GROUP_CONCAT(`text`SEPARATOR '<br>') as `text` FROM `news` GROUP BY `date` ")  or die(mysql_error());

SEPARATOR - в помошь мне ... user posted image

Спустя 5 минут, 59 секунд (23.05.2012 - 17:15) fortuna написал(а):
Только что на вывод данных чёт было написано .. ну да ладно все что нужно сделал ..

Спустя 8 минут, 42 секунды (23.05.2012 - 17:23) SlavaFr написал(а):
group_concat вообще не нужен здесь и не только из за того, что он может при большом Оутпуте привести к ошибке.
просто зделать, как я написал с обычным ORDER BY `date` и так как я уже описал.

Спустя 2 минуты, 15 секунд (23.05.2012 - 17:26) inpost написал(а):
SlavaFr
и писать fetch_array smile.gif Точно! smile.gif
Пруф насчёт ошибок...

Спустя 7 минут, 38 секунд (23.05.2012 - 17:33) SlavaFr написал(а):
Цитата (inpost @ 23.05.2012 - 14:26)
SlavaFr
и писать fetch_array smile.gif Точно! smile.gif
Пруф насчёт ошибок...

непонял?

Спустя 2 минуты, 39 секунд (23.05.2012 - 17:36) inpost написал(а):
Ну про ошибки слышу впервые, использовал на 50 000 записей. Может ты что-то не так делал?

Спустя 7 минут, 31 секунда (23.05.2012 - 17:43) ИНСИ написал(а):
inpost Тут ты не прав. Зачем программирование php отдавать в mysql? Выборку пусть делает запрос, а остальные действия - надо в php, иначе смысл теряется.
Цитата
и писать fetch_array  Точно!

Ну, тут у каждого свой выбор. Кто-то использует assoc, а кто-то array. Просто такие моменты надо объяснять - а не говорить загадками.

Спустя 6 минут, 54 секунды (23.05.2012 - 17:50) SlavaFr написал(а):
Цитата (inpost @ 23.05.2012 - 14:36)
Ну про ошибки слышу впервые, использовал на 50 000 записей. Может ты что-то не так делал?

я не виноват, что ты об этом ни чего не слышал smile.gif
это функция пытается все засунуть в одну строчку, а у строчки в отличии от "многих строчек" ограничен output.
поищи в интернете "mysql max output size by group_concat"

Спустя 35 минут, 45 секунд (23.05.2012 - 18:26) inpost написал(а):
ИНСИ
Сам посуди, люди сделали возможность не ради фана. Когда станет вопрос оптимизации - ты всё равно запихнёшь результат в кеш, и тут уже без разницы, на уровне PHP или на уровне MySQL.
Насчёт реализации на ПХП - с тобой согласен, но суть не в этом, а в этой теме я пытался научить человека знать больше существующих функций на уровне PHP и MYSQL, что куда полезнее, чем копи-паст готового кода.

SlavaFr
Именно поэтому я и попросил пруф. ссылку, чтобы знать.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.