2013-07-12 7 views
6

3 개의 "링크 추가"버튼이있는 test.php 페이지가 있습니다. 사용자가 팝업 창을 볼 때 버튼을 클릭하면됩니다. 창에서 그는 링크를 추가합니다. 링크가 추가되면 기본 페이지가 '링크 추가'버튼에서 새 링크로 하이퍼 링크로 변경됩니다. 이제, 나는 ajax 호출을 사용하여 test.php에서 links.php로 사용자로부터받는 새 링크를 전달해야한다. Links.php에는 first.json이라는 다른 파일에 대한 링크를 작성하는 JSON 코드가 있어야합니다. first.jason에는 변수 및 링크에 대한 키 값 쌍이 있습니다. 나중에 .json 파일에서 값을 검색하고 배열로 재구성하고 해당 변수를 업데이트 한 다음 다시 저장해야합니다.PHP 파일에서 json 파일에 데이터 쓰기

필자는 test.php에서 새 링크를 얻을 수 있었고 links.php에 대한 ajax 호출을 통해 동일한 링크를 보낼 수있었습니다. 나는 또한 내가받은 링크를 보여줄 수 있고 똑같은 것을 확인했다. 이제 링크를 .json 파일에 키 값 쌍으로 복사하고 싶습니다. 나는 json을 처음 접했고 그것에 대해 어떻게 생각하는지 알 수 없었다. links.php에있는 내 변수 $ p에 링크가 있습니다.

동일한 포인터가 도움이 될 것입니다. 감사. 다음은

은 test.php 내 코드입니다 :

<?php 
include 'test.php'; 
$p=$_REQUEST['q']; 
?> 
: 아래
  <!DOCTYPE html> 
     <html> 
     <body> 
     <div id="demos1"> 
    <button id="demo1" onclick="Link1()">Add Link-1</button> 
      <br> 
    </div> 
    <div id="demos2"> 
    <button id="demo2" onclick="Link2()">Add Link-2</button> 
      <br> 
    </div> 
    <div id="demos3"> 
    <button id="demo3" onclick="Link3()">Add Link-3</button> 
      <br> 
      </div> 
    <div id="txtHint"></div> 
    <script> 
      function Link1() 
      { 
      var demo1 = document.getElementById('demo1'); 
      var demos1 = document.getElementById('demos1'); 
      var value1 = prompt("Please Enter the Link"); 
      var link1 = document.createElement('a'); 
      link1.setAttribute('href', value1); 
      link1.innerHTML = "New Link1";        
      demo1.parentNode.removeChild(demo1); 
      demos1.appendChild(link1); 
      sendlink(value1); 
      } 
     function Link2() 
      { 
      var demo2 = document.getElementById('demo2'); 
      var demos2 = document.getElementById('demos2'); 
      var value2 = prompt("Please Enter the Link"); 
      var link2 = document.createElement('a'); 
      link2.setAttribute('href', value2); 
      link2.innerHTML = "New Link2"; 
      demo2.parentNode.removeChild(demo2); 
      demos2.appendChild(link2); 
      sendlink(value2); 
      } 
     function Link3() 
      { 
      var demo3 = document.getElementById('demo3'); 
      var demos3 = document.getElementById('demos3'); 
      var value3 = prompt("Please Enter the Link"); 
      var link3 = document.createElement('a'); 
      link3.setAttribute('href', value3); 
      link3.innerHTML = "New Link3"; 
      demo3.parentNode.removeChild(demo3); 
      demos3.appendChild(link3); 
      sendlink(value3); 
      } 
     function sendlink(str) 
     { 
      if (str.length==0) 
       { 
       document.getElementById("txtHint").innerHTML="hello"; 
       return; 
       } 
      if (window.XMLHttpRequest) 
       {// code for IE7+, Firefox, Chrome, Opera, Safari 
       xmlhttp=new XMLHttpRequest(); 
       } 
      else 
       {// code for IE6, IE5 
       xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
       } 
      xmlhttp.onreadystatechange=function() 
       { 
       if (xmlhttp.readyState==4 && xmlhttp.status==200) 
       { 

       document.getElementById("txtHint").innerHTML=xmlhttp.responseText; 
       } 
       } 
      xmlhttp.open("GET","links.php?q="+str,true); 
      xmlhttp.send(); 
     } 
    </script> 
     </body> 

      </html> 

이 값을 수신 links.php에 대한 코드입니다 (즉, 링크)는 test.php는 아약스 호출을 통해 전송

json_encode를 사용하여 json 파일에 쓸 수 있습니다. 이제는 .json 파일에서 링크를 읽고 해당 변수에 연결하여 다시 저장해야합니다. 나는 이것에 대해 어떻게 갈 것인가?

+1


이 코드를 표시 유용합니다. – msanford

+0

PHP 파일 I/O를 찾고 계십니까? 당신의 모든 자바 스크립트와 아약스를 성공적으로 완료 한 것 같습니다. 이 링크는 그 방향으로 갈 것입니다 : http://www.tutorialspoint.com/php/php_files.htm – MaxPRafferty

답변

1

이미 JSON을 만든 경우에, 당신은 간단하게이 작업을 수행 할 수 있습니다 : 당신이 당신의 JSON 파일을 작성하지 않은 경우

fwrite("yourjson.json",json_encode($yourvariablewithdata)) 

, 당신은 fopen을 기능을 만들 수 있습니다. 자세한 http://www.php.net/manual/es/function.fopen.php

+0

json_encode를 사용하여 json 파일에 쓸 수 있습니다. 이제는 .json 파일에서 링크를 읽고 해당 변수에 연결하여 다시 저장해야합니다. 나는 이것에 대해 어떻게 갈 것인가? – user2521326

25

는 JSON을 작성하려면 참조 :

file_put_contents('filename.json', json_encode($p)); 

는 JSON을 읽으려면 :

$p = json_decode(file_get_contents('filename.json')); 

는 분명히 이것은 비록 모든 에러 체크를하지 않습니다.

0

할 수 있습니다 항상 JSON.stringify JSON과 같이 jQuery로 클라이언트 측에 :

$jsondata = $_POST['dataForJson']; 
$writeJson = file_put_contents('data_en.json', $jsondata); 
(로 json_encode 필요가) 없기 때문에

var dataForJson = JSON.stringify(your_aray); 

그런 다음 서버 측에 쓰기 하나 아래 JSON 파일에 데이터를 삽입 할 경우

2

function exportToJson() { 

    mysql_connect("localhost", "root", ""); 
    mysql_select_db("krasimir_benchmark");  

    $res = mysql_query("SELECT * FROM users ORDER BY id"); 
    $records = array(); 
    while($obj = mysql_fetch_object($res)) { 
     $records []= $obj; 
    } 
    file_put_contents("data.json", json_encode($records)); 

}