2012-05-04 2 views
0

Я получаю этот результат JSON из MySQL с помощью следующего запроса PHP:PHP группы MySQL Query по пунктам

/* grab the posts from the db */ 
$query = "SELECT * FROM ko_timetable"; 
$result = mysql_query($query,$link) or die('Errant query: '.$query); 

/* create one master array of the records */ 
$posts = array(); 

if(mysql_num_rows($result)) { 

while($post = mysql_fetch_assoc($result)) { 
     $posts[] = array('post'=>$post); 
    } 
} 

JSON Результат:

post =   { 
"CLASS_LEVEL" = "Intro/General"; 
"CLASS_TYPE" = "Muay Thai"; 
"DAY_OF_WEEK" = Sunday; 
ID = 19; 
"ORDER_BY" = 5; 
TIME = "1:00pm - 2:30pm"; 
}; 
} 
{ 
post =   { 
"CLASS_LEVEL" = "General/Intermediate/Advanced"; 
"CLASS_TYPE" = "Muay Thai Spar - Competitive"; 
"DAY_OF_WEEK" = Sunday; 
ID = 27; 
"ORDER_BY" = 5; 
TIME = "6:00pm - 9:00pm"; 
}; 
}, 
{ 
post =   { 
"CLASS_LEVEL" = "Fighters/Advanced/Intermediate"; 
"CLASS_TYPE" = "Fighters Training"; 
"DAY_OF_WEEK" = Monday; 
ID = 1; 
"ORDER_BY" = 1; 
TIME = "9:30am - 11:00pm"; 
}; 

Но как я могу изменить этот запрос для получения этой группы результатов «DAY_OF_WEEK». См пример ниже, спасибо за вашу помощь:

{ 
Sunday =   { 
"CLASS_LEVEL" = "Intro/General"; 
"CLASS_TYPE" = "Muay Thai"; 
"DAY_OF_WEEK" = Sunday; 
ID = 19; 
"ORDER_BY" = 5; 
TIME = "1:00pm - 2:30pm"; 
}; 
{ 
"CLASS_LEVEL" = "General/Intermediate/Advanced"; 
"CLASS_TYPE" = "Muay Thai Spar - Competitive"; 
"DAY_OF_WEEK" = Sunday; 
ID = 27; 
"ORDER_BY" = 5; 
TIME = "6:00pm - 9:00pm"; 
}; 
}, 
{ 
Monday =   { 
"CLASS_LEVEL" = "Fighters/Advanced/Intermediate"; 
"CLASS_TYPE" = "Fighters Training"; 
"DAY_OF_WEEK" = Monday; 
ID = 1; 
"ORDER_BY" = 1; 
TIME = "9:30am - 11:00pm"; 
}; 

Благодаря

+0

Пожалуйста, прекратите писать новый код с помощью древних 'mysql_ *' функций. Они больше не поддерживаются, и сообщество начало процесс [устаревания] (http://news.php.net/php.internals/53799). Вместо этого вы должны узнать о подготовленных операторах и использовать либо [PDO] (http://php.net/pdo), либо [MySQLi] (http://php.net/mysqli). Если вы хотите узнать, [здесь довольно хороший учебник по PDO] (http://wiki.hashphp.org/PDO_Tutorial_for_MySQL_Developers). –

+0

Кроме того, что бы это ни было, это не JSON. –

+0

@Truth, вопрос: ** Как я могу изменить этот запрос, чтобы получить эту группу результатов с помощью «DAY_OF_WEEK»? ** ... –

ответ

2

Вы можете использовать DAY_OF_WEEK в качестве индекса массива, как это,

while($post = mysql_fetch_assoc($result)) { 
     $posts[$posts["DAY_OF_WEEK"]] = array('post'=>$post); 
    } 

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

$count = 1; 
while($post = mysql_fetch_assoc($result)) { 
     $posts[$posts["DAY_OF_WEEK"].$count] = array('post'=>$post); 
     $count++; 
    } 
+0

Спасибо, отлично, как я могу пометить «DAY_OF_WEEK», чтобы он показывал DAY = Monday ({post = ..... Thanks – HernandoZ

+0

Можете ли вы показать пример того, как вы хотите, чтобы Json отображался, потому что я не получаю вашу точку. –

+0

все исправить теперь спасибо ... – HernandoZ

1

изменить это:

while($post = mysql_fetch_assoc($result)) { 
    $posts[ $post['DAY_OF_WEEK'] ] = $post; 
} 
+1

Это заменит дубликаты ключей массива DAY_OF_WEEK. Например, если он добавляет $ post в $ posts ['sunday'], а затем пытается добавить другую запись, которая также использует воскресенье, первая переписанная. Вместо этого попробуйте: '$ posts [$ post ['DAY_OF_WEEK']] [] = $ post;' –

+0

@ acido69 Cillosis - это правильно, cillosis - это вы, на ваш ответ, я отвечу, спасибо – HernandoZ

+0

@cillosis, если вы достигнете своего ответа i 'll принят, спасибо – HernandoZ

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