2012-12-20 1 views
0

Une question un peu stupide, j'en suis sûr, j'ai besoin d'une réponse.Comment dois-je structurer ma base de données mysql pour permettre une sortie JSON bidimensionnelle?

Je fais ce projet d'apprentissage court où je dois obtenir une base de données pour produire du JSON. Je sais comment structurer les tables, mais en raison de mon histoire très courte avec elles, je n'ai pas compris comment traiter un tableau d'objets dans une table (dans cet exemple, les pointsOfInterest et les événements). Est-ce que je devrais faire des tables séparées pour eux et laisser en quelque sorte une référence aux tables séparées pour chacun? Et comment puis-je traiter avec eux en php?

TL: DR; Comment dois-je structurer ma base de données pour permettre JSON comme ceci ?:

{id: 'oyafestivalen', 
displayName: 'Øyafestivalen 2011', 
description: 'Music festival in Middelalderparken, Oslo', 
pointsOfInterest: [ 
    {id: 'sjosiden', 
    displayName: 'Sjøsiden', 
    lat: 59.904453, 
    lng: 10.762905}, 
    {id: 'vika', 
    displayName: 'Vika', 
    lat: 59.906086, 
    lng: 10.763276}, 
    {type: 'wc',  // type is optional, defaults to 'venue' 
    // displayName optional, not specified here 
    lat: 59.903625, 
    lng: 10.763276}, 
    {type: 'firstaid', 
    lat: 59.903625, 
    lng: 10.763276}, 
    {type: 'entrance', 
    lat: 59.903625, 
    lng: 10.763276}, 
    {type: 'exit', 
    lat: 59.903625, 
    lng: 10.763276}, 
    {type: 'camping', 
    lat: 59.903625, 
    lng: 10.763276}, 
    {type: 'food', 
    displayName: 'Random restaurant name', 
    description: 'They serve good food. Vegetarian-friendly', 
    lat: 59.903625, 
    lng: 10.763276}, 
    {type: 'drinks', 
    displayName: 'Random bar name', 
    lat: 59.903625, 
    lng: 10.763029} 
], 
events: [ 
    {displayName: 'Kyuss Lives!', 
    venue: 'sjosiden', 
    startDateTime: '2011-08-13T19:30', 
    endDateTime: '2011-08-13T21:00', 
    tags: ['rock', 'stoner']}, 
    {displayName: 'Givers', 
    description: 'Givers are an indie pop group from Lafayette, Louisiana. The band is made up  of...', 
    venue: 'vika', 
    // Default one hour duration if no endTime 
    startDateTime: '2011-08-13T18:05', 
    tags: ['pop', 'indie']} 
] 

Répondre

0

Je ne peux pas vous dire la structure de vos tables et je ne peux vous dire les requêtes exactes que vous devez exécuter pour obtenir ce sortie, mais je peux vous dire ceci:

Vous ne pouvez pas éventuellement produire une telle sortie à partir d'une requête SQL. Cependant, vous pouvez construire une telle sortie avec plusieurs requêtes et manipuler leur sortie avec PHP pour construire votre tableau multidimensionnel. Par exemple, le contenu de pointsOfInterest doit être une requête distincte. Pour vous aider à obtenir la sortie désirée, utilisez print_r() en PHP pour vérifier le fonctionnement de votre tableau. Une fois que vous obtenez ce que vous voulez, utilisez json_encode() pour convertir le tableau en une chaîne JSON en PHP.

+0

"Cependant, vous pouvez construire une telle sortie avec plusieurs requêtes et manipuler leur sortie avec PHP pour construire votre tableau multidimensionnel." était tout ce que j'avais besoin d'entendre. Merci! –

+0

Vous pouvez produire cette sortie avec une procédure stockée. Je dis juste. –

Questions connexes