Помогите изменить sql запрос

211
23 апреля 2022, 16:40

У меня на сайте(DRUPAL) есть модуль цитата дня, каждый день меняется цитата, мне надо что бы она менялась один раз в неделю, как реализовать, я что-то не пойму

function quote_of_the_day_block_info() {
  $blocks['quote'] = array(
    'info' => t('Quote of the day'),
    'cache' => DRUPAL_NO_CACHE,
    'weight'=> -99,
    'status' => TRUE,
    'region' => 'content',
    'visibility' => BLOCK_VISIBILITY_LISTED,
    'pages' => '<front>',
  );
  return $blocks;
}
// Опредиление имeни блока, и его содержания
function quote_of_the_day_block_view($delta = '') {
  $block = array();
  if ($delta == 'quote') {
    $block = array(
      'subject' => '',
      'content' => quote_of_the_day_print_term(),
    );
  };
  return $block;
}
function quote_of_the_day_print_term() {
  $date = date("Y-m-d");
  $query = db_select('quote', 'q');
  $query->fields('q', array('node_id'));
//$query->condition('q.date', $date, '='); // раз в день
  $query->condition('q.date', $date, '<', 7); //раз в 7 дней не работает
  $result = $query->execute();
  $results_id = array();
  foreach($result as $row)
    array_push($results_id, $row->node_id);
    $result = $row->node_id;
  
  $node = node_load($result);
  $output_1 = field_view_field('node', $node, 'field_quotation_text');
  $output_5 = field_view_field('node', $node, 'field_test');
  $output_3 = field_view_field('node', $node, 'field_author');
  $output_1 = render($output_1);
  $output_5 = render($output_5);
  $output_3 = render($output_3);

  $output = $output_1 . $output_5 . $output_3 ;
 
  return $output;
}
/**
 * Implements hook_node_insert().
 */
function quote_of_the_day_node_insert($node) {
  if ($node->type == 'rundom_text') {
    db_merge('quote')
      ->key(array('node_id' => $node->nid))
      ->fields(array(
        'node_id' => $node->nid,
        'worked_quote' => NULL,
        'date' => NULL,
      ))
      ->execute();
  }
}
function quote_of_the_day_node_delete($node) {
  if ($node->type == 'rundom_text') {
    db_delete('quote')
      ->condition('node_id', $node->nid)
      ->execute();
  }
}
Answer 1

Сделайте так:

function quote_of_the_day_print_term() {
  $date = date("Y-m-d", strtotime('monday this week')); // вернёт дату последнего понедельника
  $query = db_select('quote', 'q');
  $query->fields('q', array('node_id'));
  $query->condition('q.date', $date, '=');
  $result = $query->execute();
READ ALSO
mysql REGEXP выборка по слову включая один символ

mysql REGEXP выборка по слову включая один символ

Не могу составить запрос к базе mqsqlК примеру в базе есть слова:

236
Реализация вывода новых заказов

Реализация вывода новых заказов

Подскажите плзЕсть задача на php никак не могу придумать как ее реализовать: Вобщем Есть таблица с пользователями, пользователи делятся на две...

132
SQL запрос, mysql

SQL запрос, mysql

Есть база данных, две таблицы, группы и студентыНужно написать запрос , который должен вывести все группы в которых есть хотя бы 3 студента...

195