JQuery массив JSON от PHP - PullRequest
       13

JQuery массив JSON от PHP

1 голос
/ 29 марта 2011

Я пытаюсь воспроизвести следующее, но я использую строки из базы данных

var allCustomers = [

    { name: 'Customer1', contacts: [
                { name: 'Bob', id: ['1'] },
                { name: 'Sue', id: ['2'] },
                { name: 'John', id: ['3'] }
        ]},

    { name: 'Customer2', contacts: [
                { name: 'Max', id: ['4'] },
                { name: 'Ross', id: ['5'] },
                { name: 'Sally', id: ['6'] }
        ]}
];

В PHP я извлекаю строки из базы данных, у каждого клиента есть несколько контактов, с которыми я борюсь. В настоящее время я использую метод ниже:

<script type="text/javascript">
var allCustomers = [
<?php
include('connection.php');
$stmt = $db->prepare("SELECT customer.customerID, customerName, contactID, contactName  FROM customer INNER JOIN customerContact ON customer.customerID = customerContact.customerID");
if ($stmt->execute()) 
{
    while ($row = $stmt->fetch(PDO::FETCH_OBJ)) 
    {
            echo "{ name: '".$row->customerName."', contacts: [
                { name: '".$row->contactName."', id: ['".$row->contactID."'] }                
        ]},";
        }           
}       
?>    
];

Но, очевидно, это не очень аккуратный способ сделать это, и он работает, только если у клиента есть только один контакт, в противном случае он воспроизводит клиента и контакт снова.

Что бы вы предложили, чтобы это исправить, могу ли я использовать функцию php decode json или что-то подобное?

Спасибо за любые предложения:).

Я пытаюсь создать что-то похожее на эту запись, но мне нужен идентификатор контакта для отправки обратно на сервер.

Ответы [ 3 ]

2 голосов
/ 29 марта 2011

Примерно так:

$data = array(
  array("name" => "Customer1", "contacts" => array(
    array("name" => "Bob", "id" => 1),
    array("name" => "Sue", "id" => 2),
    array("name" => "John", "id" => 3)
  )),
  array("name" => "Customer1", "contacts" => array(
    array("name" => "Max", "id" => 4),
    array("name" => "Ross", "id" => 5),
    array("name" => "Sally", "id" => 6)
  ))
);

echo json_encode($data);

В ответ на комментарий автора:

$stmt = $db->prepare("SELECT customer.customerID, customerName, contactID, contactName  FROM customer INNER JOIN customerContact ON customer.customerID = customerContact.customerID");

$data = array();

if ($stmt->execute()) 
{
    while ($row = $stmt->fetch(PDO::FETCH_OBJ)) 
    {
        if (!isset($data[$row->customerId])
        {
            $data[$row->customerId] = array('name' => $row->customerName, 'contacts' => array());
        }

        $data[$row->customerId]['contacts'][] = array('name' => $row->contactName, 'id' => $row->contactId);
    }           
}   

echo json_encode(array_values($data));
0 голосов
/ 29 марта 2011

делает все:

echo json_encode($array);
0 голосов
/ 29 марта 2011

Для создания JSON с PHP вы можете увидеть этот урок: http://www.sencha.com/learn/Tutorial:Creating_JSON_Data_in_PHP

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...