2015-03-08 2 views
1

У меня есть следующий код, который запрашивает несколько таблиц для получения информации о действиях. Я хотел бы преобразовать результат запроса в массив и вызвать его при необходимости. Мой вопрос: может ли этот запрос быть преобразован в массив?Преобразование результата запроса php в json

<?php 
function view_full_activity($activity_field){ 
      global $connection; 

     $contact_id = $_REQUEST['contact_id']; 
     $activity_id = $_REQUEST['activity_id']; 
     $get = "SELECT * FROM activity_base WHERE activity_id = '$activity_id' " 
            or die("Error: ".mysqli_error($connection)); 
     $query = mysqli_query($connection, $get); 
    //Get activity base information 
     while ($activity = mysqli_fetch_array($query)){ 
      $activity_related_to_id = $activity ['activity_related_to_id']; 
      $activity_id = $activity['activity_id']; 
      $activity_type_id = $activity['activity_type_id']; 
     $activity_entity_type_id = $activity['activity_entity_type_id']; 
      $activity_title = $activity['activity_title']; 
      $activity_due_date = $activity['activity_due_date']; 
      $activity_created_by = $activity['activity_created_by']; 
      $activity_created_on = $activity['activity_created_on']; 
      $activity_status_code_id = $activity['activity_status_code_id']; 
      $activity_type_icon; 
      $activity_due_date = $activity['activity_due_date']; 
     $activity_create_date = date("m-d-Y", strtotime($activity['activity_created_on'])); 

     //Reverse Date 
     $activity_due_date = date("m-d-Y ", strtotime($activity_due_date)); 

      if ($activity_type_id == "1"){ 
       $activity_type_icon = "fa fa-envelope"; 
      }else if ($activity_type_id == "3"){ 
       $activity_type_icon = "fa fa-suitcase"; 
      }else if ($activity_type_id == "2"){ 
       $activity_type_icon = "fa fa-phone"; 
      } 

     if ($activity_entity_type_id == "1") { 
     $acitvity_url = "acct_id"; 
     $acitivty_is_for ="accounts_base"; 
     $page_url = "account-profile.php"; 
     }else if ($activity_entity_type_id == "2") { 
     $acitvity_url = "contact_id"; 
     $acitivty_is_for ="contacts"; 
     $page_url = "contact-profile.php"; 
     }else if ($activity_entity_type_id == "3") { 
     $acitvity_url = "contact_id"; 
     $acitivty_is_for ="contacts"; 
     $page_url = "contact-profile.php"; 
     } 
      //Get detailed activity information 
     //If activity is Email 
    if ($activity_type_id == "1") { 
     $email_details = email_activity_details($activity_id); 
     while ($email = mysqli_fetch_assoc($email_details)) { 
      $activity_details = nl2br($email['email_message']); 

     } 
    }else if ($activity_type_id == "2") { 
     $call_details = call_activity_details($activity_id); 
     while ($call = mysqli_fetch_assoc($call_details)) { 
      $activity_details = $call['call_details']; 
      } 
     }else if ($activity_type_id == "3") { 
     $meeting_details = meeting_activity_details($activity_id); 
     while ($meeting = mysqli_fetch_assoc($meeting_details)) { 
      $activity_details = $meeting['meeting_details']; 
      } 
     } 
     //Get creator user info 
      $user_query = get_user_info($activity_created_by); 
      while ($user = mysqli_fetch_array($user_query)) { 
      $activity_created_by = $user['user_full_name']; 
      } 
    } 

    }  



      ?> 
+0

Запрос не может быть преобразован, но его результат может быть определен. – arkascha

+0

В этом коде есть некоторые проблемы с синтаксисом. Например, возьмите строку '$ activity_type_icon;' Что это значит? Кроме того, почему так сложно? Результат уже _is_ массив. Почему бы вам просто не преобразовать определенные значения _inside_ в массив? Или, что еще лучше, сделайте преобразования даты внутри оператора sql? – arkascha

+0

@arkascha Это объявление для переменной, которая позволит мне изменить значок на основе типа активности. – EDarrien

ответ

0

Sure:

Создайте переменную с именем $activity_store и использовать время цикла, чтобы установить данные во многом таким же образом, что выходит из базы данных.

//Get activity base information 
$activity_store = array(); 
while ($activity = mysqli_fetch_array($query)){ 
    $activity_store['activity_related_to_id'] = $activity['activity_related_to_id']; 

Если вам нужно хранить информацию о каждой операции вытащил из базы данных отдельно можно добавить индекс и увеличения его

//Get activity base information 
$activity_store = array(); 
$i = 0; 
while ($activity = mysqli_fetch_array($query)){ 
    $activity_store[$i]['activity_related_to_id'] = $activity['activity_related_to_id']; 
    ... 
    $i++; //increments $i by 1 
} 

Просто надо знать, что в коде, когда вы обратитесь к $activity_type_id вы будете теперь нужно ссылаться на „$ активности [“ '] activity_type_id `

с точки зрения возвращения JSON в PHP вы можете использовать json_encode для кодирования переменной в формате JSON:

$json_array = json_encode($variable); 
+0

Я попробовал первый вариант, но массив вернулся пустым. – EDarrien

+0

Ничего, смог исправить. Спасибо за помощь. – EDarrien

Смежные вопросы