2013-06-03 5 views
1

У меня есть json, который я обновляю вручную, но поскольку данные отправляются мне по электронной почте, чем больше данных поступает, тем больше времени я провожу письмом jsonОбновить JSON через форму?

Есть ли способ построить форма, которая будет принимать некоторые данные (текст & загружает), и записывать/выводить JSON в файл или базу данных? - Я пытался исследовать с Ajax, PHP, MySQL и других не повезло, пожалуйста посоветуйте (указать меня в правильном направлении)

Моя структура:

{ 
    "FirstName": "John", 
    "LastName": "Doe", 
    "Photo": "http://ImageURL", 
    "PhoneNumber": [ 
     { 
      "MobilePhone": "555-555-5555", 
      "Provider": "Verizon" 
     }, 
     { 
      "HomePhone": "555-555-5555", 
      "Provider": "AT&T" 
     }, 
     { 
      "WorkPhone": "555-555-5555", 
      "Provider": "SBC" 
     } 
    ] 
} 

Форма нужна

имя: (ввод текста)

Фамилия: (ввод текста)

Фото: (загрузка файла)

(Вложенные в разделе "Номер телефона")

Мобильный телефон: (Ввод текста)

Поставщик: (Ввод текста)

Домашний тел .: (Текстовый ввод)

Поставщик: (Ввод текста)

Рабочий телефон: (Ввод текста)

Поставщик: (Ввод текста)

примечание: это фиктивные данные, фактический JSON Словарь используется для музыкальных альбомов, а адрес файла - http://www.godsgypsychristianchurch.net/music.json

+1

Если у вас есть база данных, зачем ее сохранять в формате JSON?Сохраните каждое поле формы в соответствующем столбце базы данных. Но если вы сохраняете плоский файл, просто напишите все данные формы в массив и напишите 'json_encode()' в файл. – Barmar

+0

Вы предоставили почти все поля, необходимые для создания таблицы в базе данных. Для постоянного обновления/увеличения данных база данных всегда лучше. Сохранение значений в JSON или XML лучше всего хранить для статических данных, которые не сильно меняются. –

+0

@ francisco.preller Как создать форму для ввода данных в базу данных, и мне нужен JSON для вывода из этой базы данных, потому что мой сайт и мобильное приложение, над которым я работаю, зависят от этих данных (JSON). – Michael

ответ

2

Попробуйте следующее:

<?php 
if ($_SERVER['REQUEST_METHOD'] === 'POST') { 

    move_uploaded_file($_FILES["Photo"]["tmp_name"],"images/".$_POST['Photo']); 

    $filters=array(
     "FirstName", 
     "LastName", 
     "Photo", 
     "MobilePhone", 
     "MobilePhoneProvider", 
     "HomePhone", 
     "HomePhoneProvider", 
     "WorkPhone", 
     "WorkPhoneProvider" 
    ); 

    $final=array(); 

    foreach ($filters as $filter) { 
     $final[$filter]=$_POST[$filter]?$_POST[$filter]:""; 
    } 

    $final["PhoneNumber"]=array(
     array(
      "MobilePhone"=>$final["MobilePhone"], 
      "Provider"=>$final["MobilePhoneProvider"], 
     ), 
     array(
      "HomePhone"=>$final["HomePhone"], 
      "Provider"=>$final["HomePhoneProvider"], 
     ), 
     array(
      "WorkPhone"=>$final["WorkPhone"], 
      "Provider"=>$final["WorkPhoneProvider"], 
     ) 
    ); 

    $unsets=array(
     "MobilePhone", 
     "MobilePhoneProvider", 
     "HomePhone", 
     "HomePhoneProvider", 
     "WorkPhone", 
     "WorkPhoneProvider" 
    ); 

    foreach ($unsets as $unset) { 
     unset($final[$unset]); 
    } 

    echo json_encode($final); 
    exit; 
} 
?><!DOCTYPE html> 
<html> 
    <head> 
     <title>Contact</title> 
    </head> 
    <body> 
     <form action="" method="post" enctype="multipart/form-data"> 
      First Name: <input type="text" name="FirstName"><br> 
      Last Name: <input type="text" name="LastName"><br> 
      Photo: <input type="file" name="Photo"><br> 
      Mobile Phone: <input type="tel" name="MobilePhone"><br> 
      Mobile Phone Provider: <input type="text" name="MobilePhoneProvider"><br> 
      Home Phone: <input type="tel" name="HomePhone"><br> 
      Home Phone Provider: <input type="text" name="HomePhoneProvider"><br> 
      Work Phone: <input type="tel" name="WorkPhone"><br> 
      Work Phone Provider: <input type="text" name="WorkPhoneProvider"><br> 
      <input type="submit"> 
     </form> 
    </body> 
</html> 

Это просто отправное место, вам нужно будет установить проверку изображения и другие различные проверки, чтобы гарантировать, что вход пользователя действителен. (Для этого теста вы должны создать папку под названием images)

+0

Форма работает отлично, но как загруженные файлы могут быть сохранены на сервере и введены в JSON, и как файл JSON будет сохранен на сервере (но все данные должны быть собраны в один файл .JSON) – Michael

+0

Вы говорите, что несколько пользователей будут помещены в один json? Возможно, но вы попробовали подход к базе данных? –

0

Несколько библиотек, таких как Backbone.js, предоставляют полезные способы для этого. Проверьте ответы на этот вопрос (Serialize form inputs to JSON using Backbone.js) и посмотрите, будет ли это работать для ваших нужд.

Сообщалось, что вы считали, что вы просто загружаете форму обычно, а затем сохраняете ее в своей базе данных в функции PHP? Если вы не не нуждаетесь в, чтобы поместить его в БД как стенографированный JSON по какой-либо причине (что обычно не рекомендуется), вы можете просто продолжить и сохранить данные в базе данных MySQL через обычные вызовы INSERT. (см. этот учебник: http://php.about.com/od/phpbasics/ss/mysql_files.htm)

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