These are chat archives for DrupalRu/chat

5th
Sep 2017
Alexey
@alexsco74
Sep 05 2017 04:06
Всем доброго утра :)
Tahtabaev Ildar
@Tahtabaev
Sep 05 2017 05:44
привет всем
что за хрень7(
Notice: Trying to get property of non-object в функции test_record() (строка 776 в файле
function test_record($id_node, $user_id) {
  $node = db_select('protokol', 'n')
    ->fields('n', array('id_node'))
    //->condition('n.id_node' == $id_node)
    ->condition('n.id_user', $user_id)
    ->execute()
    ->fetchObject();

  if($node->id_node == $id_node){
    $result = true;
  }else{
    $result = false;
  }
  return $result;
}
на эту строку ругается if($node->id_node == $id_node){
Alexey
@alexsco74
Sep 05 2017 05:45
Не объект пишет
Tahtabaev Ildar
@Tahtabaev
Sep 05 2017 05:45
не может получить id_node?
Alexey
@alexsco74
Sep 05 2017 05:46
```
if(!empty($node->id_node)) ...
Свойство может отсутствовать- надо проверить прежде чем использовать?!
Tahtabaev Ildar
@Tahtabaev
Sep 05 2017 05:47
  if(!empty($node->id_node)) {
    if($node->id_node == $id_node){
      $result = true;
    }else{
      $result = false;
    }
  }else{

  }
Alexey
@alexsco74
Sep 05 2017 05:47
if(!empty($node->id_node) && $node->id_node == $id_node)
Tahtabaev Ildar
@Tahtabaev
Sep 05 2017 05:47
если не пусто то пойдет ниже условия?
о
так можно?
Alexey
@alexsco74
Sep 05 2017 05:48
нужно :)
Tahtabaev Ildar
@Tahtabaev
Sep 05 2017 05:48
``
function test_record($id_node, $user_id) {
  $node = db_select('protokol', 'n')
    ->fields('n', array('id_node'))
    //->condition('n.id_node' == $id_node)
    ->condition('n.id_user', $user_id)
    ->execute()
    ->fetchObject();

  if(!empty($node->id_node) && $node->id_node == $id_node){
    $result = true;
  }else{
    $result = false;
  }
  return $result;
}
получается если пусто, то скрипт не удасться ?
Alexey
@alexsco74
Sep 05 2017 05:49
Еще короче если используешь fetchField
см например comment
тогд апроверка на объект не потребуется
Tahtabaev Ildar
@Tahtabaev
Sep 05 2017 05:50
модуль команет?
Alexey
@alexsco74
Sep 05 2017 05:50
ТОлько ->range понадобится 0,1
Ну да каманет
... $comments = (bool) db_query_range('SELECT 1 FROM {comment}', 0, 1)->fetchField();
Tahtabaev Ildar
@Tahtabaev
Sep 05 2017 05:52

щас логика такая

  if(!empty($node->id_node) && $node->id_node == $id_node){
    $result = true;
  }else{
    $result = false;
  }

если запись не пустая и равняется ноде ид, то тру?

    if(test_record($id_node, $user_id)){
      //echo "все ок";
    } else {
      quiz_delete_result($user_id);
      //echo "записи нету, удаляем";
    }
тут функция используется, вот ошибку не даст, если нет записи в принципе?
Alexey
@alexsco74
Sep 05 2017 05:55

Запусти и узнаешь

Запусти и узнаешь

Tahtabaev Ildar
@Tahtabaev
Sep 05 2017 05:56
ща нельзя, заказчик онлайн)))
он еще не в курсе ошибок)
PDOException: SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'quiz_awarded' cannot be null: INSERT INTO {protokol} (id_user, id_node, title_node, quiz_awarded, quiz_correct) VALUES (:db_insert_placeholder_0, :db_insert_placeholder_1, :db_insert_placeholder_2, :db_insert_placeholder_3, :db_insert_placeholder_4); Array ( [:db_insert_placeholder_0] => 27600 [:db_insert_placeholder_1] => 14 [:db_insert_placeholder_2] => Правила безопасности нефтяной и газовой промышленности [:db_insert_placeholder_3] => [:db_insert_placeholder_4] => 0 ) в функции protokol_update()
это из-за того, что нет результатов в таблице, откуда беру результаты?
  $quiz_awarded = $quiz_result[0]->quiz_node_results_answers_quiz_node_results_points_awarded;
  $quiz_correct = $quiz_result[0]->quiz_node_results_answers_quiz_node_results_is_correct;

    db_merge('protokol')
      ->key(array('id_user' => $user_id))
      ->insertFields(array(
        'id_user' => $user_id,
        'id_node' => $node_id,
        'title_node' => $node_title,
        'quiz_awarded' => $quiz_awarded,
        'quiz_correct' => $quiz_correct,
      ))
      ->updateFields(array(
        //'id_user' => $user_id,
        'id_node' => $node_id,
        'title_node' => $node_title,
        'quiz_awarded' => $quiz_awarded,
        'quiz_correct' => $quiz_correct,
      ))
     ->execute();
Tahtabaev Ildar
@Tahtabaev
Sep 05 2017 06:01
вот так спасет от этого ?
 $quiz_awarded = $quiz_result[0]->quiz_node_results_answers_quiz_node_results_points_awarded;
  $quiz_correct = $quiz_result[0]->quiz_node_results_answers_quiz_node_results_is_correct;

  if(!empty($quiz_awarded)){
    $quiz_awarded = 0;
  }
  if(!empty($quiz_correct)){
    $quiz_correct = 0;
  }

    db_merge('protokol')
      ->key(array('id_user' => $user_id))
      ->insertFields(array(
        'id_user' => $user_id,
        'id_node' => $node_id,
        'title_node' => $node_title,
        'quiz_awarded' => $quiz_awarded,
        'quiz_correct' => $quiz_correct,
      ))
      ->updateFields(array(
        //'id_user' => $user_id,
        'id_node' => $node_id,
        'title_node' => $node_title,
        'quiz_awarded' => $quiz_awarded,
        'quiz_correct' => $quiz_correct,
      ))
     ->execute();
вероятно, в Украине проведут DrupalCon