Перейти к содержимому


Вывод данных из БД


Сообщений в теме: 6

#1 adelg

    Новичок

  • Пользователи
  • Pip
  • 4 сообщений

Отправлено 03 Июнь 2011 - 14:18

Здравствуйте! я только учусь, если что строго не судите.. :rolleyes:=) такого рода проблема:

$sqlQuery2="SELECT add_time FROM ".DATA_TABLE."12";
$result2 = mysql_query($sqlQuery2);
while($row_time= mysql_fetch_array($result2)){
$per[]=$row_time;
$pers=$per[0];
$smarty->assign("c",$pers);
}

$pers=$per[0] - В таблице 8 сообщений, в данном случае для примера я хочу вытащить именно первый элемент и сделать это не с помощью запроса. Я уже до этого присваивал переменной какое либо значение из массива таким образом - всё работало и выводилось на экран именно то что нужно, может при работе со Smarty есть какие то ньюнсы? подскажите плииз.

если написать просто
$per[]=$row_time;
$smarty->assign("c",$per);

выводятся все даты сообщений, ошибки в запросе значит нет, что то именно с кодом.

#2 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 759 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 03 Июнь 2011 - 15:13

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

В-третьих, даже без описания задачи уже видно кучу логических ошибок в Вашем коде.

#3 adelg

    Новичок

  • Пользователи
  • Pip
  • 4 сообщений

Отправлено 03 Июнь 2011 - 16:56

В Smarty пишу
{foreach from=$c item=item2}
{$item2.add_time}
{/foreach}

Выводит 2 2 2 2 2 2 2 2

Если поменять на {$c}

выводит Array

Хочу чтобы вывелась 1ая дата.

собственно, мне нужно сравнить 2 даты, одна будет вводится пользователем и сравниваться со второй, которая в БД, для этого нужно перевести оба числа через strtotime, а для этого нужно выдернуть все даты из БД с сообщениями, и каждую перевести в Unix для сравнения с введенной пользователем в форме.
Может есть разумнее предложения?

#4 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 759 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 03 Июнь 2011 - 17:16

Вам все сообщения нужны или какое-то конкретное - последнее например, или с определенной датой? Зачем все сообщения в массив загонять? - начнем с этого.

#5 adelg

    Новичок

  • Пользователи
  • Pip
  • 4 сообщений

Отправлено 03 Июнь 2011 - 17:28

Полная задача состоит в составлении списка пользователей, и количества сообщений которые они отправили за определенный период. С выводом пользователей и общим количеством их сообщений я разобрался, но как сравнить дату(период) которую пользователь ввел в форму и дату хранящуюся в БД? В голову лишь пришло вытащить все даты из БД, поэтому их приходится засунуть в массив, а как каждую из них нужно сравнить с введенной в форме, не пойму.

#6 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 759 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 06 Июнь 2011 - 08:53

Чтобы выполнить данную задачу достаточно одного запроса к БД, с группировкой по user_id и фильтром по периоду. Затем уже загоняете результат в массив и выводите. А вот чтобы привести дату, введенную пользователем, к ввиду, в котором она хранится в базе, удобно воспользоваться нашей функцией form_eng_time:

$date1 = form_eng_time($_REQUEST['date1']);

Соответственно полученную дату используете в условии запроса. В самом коде сравнивать даты необходимости нет.

#7 adelg

    Новичок

  • Пользователи
  • Pip
  • 4 сообщений

Отправлено 07 Июнь 2011 - 18:00

Большое спасибо!





Количество пользователей, читающих эту тему: 2

0 пользователей, 2 гостей, 0 анонимных