2013-06-03 31 views
1

更新JSON数据这是输出我需要:创建表单与MySQL

{ 
    "album": "Text_Input", 
    "artwork": "DefaultURL/http://www.ggcc.tv/ArmyoftheLord/Army%20of%20the%20Lord.png/OR Overwrite with Uploaded Image", 
    "church": "City Name And State Wich can be selected from Dropdown Menu", 
    "cityartwork": "Default URL Will Be Set/ This input is hidden", 
    "des": "Text_Input_For_Description", 
    "release_date": "February 24th 2013 ", 
    "tracks": [ 
     { 
      "name": "Text_Input", 
      "url": "File Upload of .MP3 which should be saved on server and its new url should be inputed here by the script" 
     }, 
     { 
      "name": "Text_Input", 
      "url": "File Upload of .MP3 which should be saved on server and its new url should be inputed here by the script" 
     }, 
     { 
      "name": "Text_Input", 
      "url": "File Upload of .MP3 which should be saved on server and its new url should be inputed here by the script" 
     }, 
     { 
      "name": "Text_Input", 
      "url": "File Upload of .MP3 which should be saved on server and its new url should be inputed here by the script" 
     }, 
     { 
      "name": "Text_Input", 
      "url": "File Upload of .MP3 which should be saved on server and its new url should be inputed here by the script" 
     }, 
     { 
      "name": "Text_Input", 
      "url": "File Upload of .MP3 which should be saved on server and its new url should be inputed here by the script" 
     } 
    ] 
} 

我需要的形式,将收集所有这些信息,将其保存到数据库和输出收集到的条目在一个单一的服务器上的JSON文件,以便我可以在正在处理的应用程序中使用该.json文件。

+0

是轨道的数目不变或变化? – Fallexe

+0

@Fallexe变量 – Michael

回答

2

试试这个:

<?php 
$minimum_tracks=1; 
$maximum_tracks=10; 

$tracks=isset($_GET['tracks'])?$_GET['tracks']:0; 

if (is_numeric($tracks) && $tracks>=$minimum_tracks && $tracks<=$maximum_tracks) { 
    if ($_SERVER['REQUEST_METHOD'] === 'POST') { 
     $_POST['cityartwork']="Default Set from PHP"; 
     $_POST['tracks']=array(); 
     $_POST['artwork']='http://www.ggcc.tv/ArmyoftheLord/Army%20of%20the%20Lord.png'; 
     if ($_FILES['artwork']['size']!=0) { 
      move_uploaded_file($_FILES['artwork']['tmp_name'],"artworks/".$_FILES['artwork']['name']); 
      $_POST['artwork']=$_SERVER['HTTP_HOST']."/artworks/".$_FILES['artwork']['name']; 
     } 
     for ($i=0;$i<$tracks;$i++) { 
      $filename="tracks/".$_FILES['tracks']['name'][$i]; 
      $_POST['tracks'][$i]=array(
       "name"=>$_POST['track_names'][$i], 
       "url"=>$_SERVER['HTTP_HOST']."/".$filename 
      ); 
      move_uploaded_file($_FILES['tracks']['tmp_name'][$i],$filename); 
     } 
     unset($_POST['track_names']); 
     echo json_encode($_POST); 
     exit; 
    } else { 
     ?><!DOCTYPE html> 
<html> 
    <head> 
     <title>New Album</title> 
    </head> 
    <body> 
     <form method="post" action="" enctype="multipart/form-data"> 
      Album Name: <input type="text" name="album"><br> 
      Artwork: <input type="file" name="artwork"><br> 
      Church: <select name="church"><option value="New York NY">New York NY</option><option value="Los Angeles CA">Los Angeles CA</option></select><br> 
      Description: <br><textarea name="des"></textarea><br> 
      Release Date: <input type="date" name="release_date"><br> 
      Tracks: <br><br><?php 
       for ($i=1;$i<=$tracks;$i++) { 
        echo 'Track '.$i.'<br><input type="text" name="track_names[]"><input type="file" name="tracks[]"><br><br>'; 
       } 
       ?> 
      <input type="submit"> 
     </form> 
    <?php 
     exit; 
    } 
} else { 
?> 
<!DOCTYPE html> 
<html> 
    <head> 
     <title>New Album</title> 
    </head> 
    <body> 
     How many tracks are in this album? 
     <form action="" method="get"> 
      <select name="tracks"> 
      <?php 
       for ($i=1;$i<$maximum_tracks;$i++) { 
        echo '<option value='.$i.'>'.$i.'</option>'; 
       } 
      ?> 
      </select><br> 
      <input type="submit"> 
     </form> 
    </body> 
</html> 
<?php 
} 
?> 
+0

完全惊人! – Michael

2

您可以使用以数组索引ex命名的表单元素创建表单: <input type="text" name="record[album]"/>依此类推。

将表单发布到服务器后,经过验证,您可以使用json_encode($_POST['record'])获得所需的json输出。

1

要添加到Shoan的答案:您还需要创建一个带有JavaScript处理程序的按钮以创建更多输入,以便用户可以根据需要添加更多轨道。额外的输入都需要这个样子:

<input type="text" name="record[tracks][n][name]"/> 

哪里n是下一首曲目的数量。