2017-04-02 8 views
1
<html> 
<head> 
    <meta charset="utf-8"> 

    <title>Test page for Query YQL</title> 

    <link rel="stylesheet" href="http://hail2u.github.io/css/natural.css"> 

    <!--[if lt IE 9]><script src="http://hail2u.github.io/js/html5shiv.min.js"></script><![endif]--> 
</head> 
<body> 
    <h1>Test page for Query YQL</h1> 

    <div id="content"></div> 

    <input type="button" name="bt1" value="click" onclick="pesquisa()"> 

    <form name="s2"> 
    <input type="text" name="s1"> 
    </form> 

    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script> 
    <script src="jquery.query-yql.min.js"></script> 
    <script type="text/javascript"> 

    function pesquisa(){ 

     $(function() { 

     var t = $('#content').empty(); 
     var url= document.s2.s1.value; 
     var statement = 'select * from feed where url="'+url+'"'; 

     $.queryYQL(statement, function (data) { 
      $('<h2/>').text('Test: select * from feed').appendTo(t); 
      var r = data.query.results; 
      var ul = $('<ul/>'); 

      $.each(r.item, function() { 

      $('<li/>').append(this.title).appendTo(ul); 
      $('<li/>').append(this.link).appendTo(ul); 

      <?php 

       $titulo = "<script>document.write(titulo);</script>"; 

       $site = "<script>document.write(site);</script>"; 

       //echo $titulo; 
       //echo $site; 

      ?> 
      }); 
      ul.appendTo(t); 
     }); 
     }); 
    }; 

    </script> 
</body> 
</html> 

this.titlethis.linkの値を2つの異なる変数に保存して、それらをphpに呼び出すことで、データをDBに挿入できますか?どのように変数に追加を保存し、PHPに変換してデータベースに保存できるのでしょうか?

rssフィードを検索するのは単なるYQLクエリです。

クエリを実行した後、結果をデータベースに保存したいが、その方法を見つけることはできない。

+0

ajaxを使用してjqueryからPHPにデータを渡し、PHPスクリプト内のデータベース挿入プロシージャを実行します。 –

+0

私はajaxについて何か知りません、いくつかのガイドラインを教えてください。 –

答えて

0

まず、クライアントサーバーアーキテクチャで作業していることを理解しておく必要があります。

これが意味:

  • をさんは、(あなたがそれの名前を言っていなかったので)あなたが私たちを見せているこのファイルは、「TestYQL.php」と呼ばれているとしましょう。このファイルはphp(サーバー側)によって実行され、その内容を行ごとに読み込み、元のファイルから別の新しいファイルを生成します。教育目的のために、生成されたファイルが "GeneratedTestYQL.html"と呼ばれるとしましょう。このファイルは、直接htmlとjsフラットなので、もはや内部にPHPコードはありません。それはPHPについて何も知らない。したがって、PHP関数、変数、何もありません。この最後のファイルはクライアントに届くファイルで、コードはChrome、Firefoxなどのウェブブラウザで実行されます。

あなたの場合、「TestYQL.php」ファイルはすべてあなたのものです<? Php ....?>のタグの中身は何ですか? phpでは、2つの変数を作成します。それぞれの変数にはタグがありますが、何も使われていないので、目的はありません。したがって、生成された "GeneratedTestYQL.html"ファイルは元のファイルと同じですが、<? Php ...?>内の行はありません。

これは次のことを意味します。PHPで使用する変数の内容は、PHPでブラウザで実行されるファイルを生成するため、ブラウザに送信できます。今

はファイル「GeneratedTestYQL.htmlは」到着したときに、ブラウザは、あなたがボタンをクリックしたとき、それは、中にフォームを生成し、ファイルのすべての内容を表示するために開始します)(を機能pesquisaを実行し、今ではjavascript(JQuery)がフィードのデータを取得し始め、これらの変数「this.title」と「this.link」がjavascriptに存在し始めます。

ここではPHPのようなものはありませんので、NOTこれらの変数はphpからアクセスできます。

そのデータをDBに保存するにはどうすればよいでしょうか?一般的な方法は、ブラウザから必要なデータをすべてサーバーに送信してから、そのデータで何をするかを見極めることです。ブラウザからサーバーにデータを送信するには、サーバーからPHPファイルへのGETまたはPOSTリクエストを行います(できれば別のファイル、「saveFeeds.php」と呼ばれます)。

GETリクエストでデータを送信することはできますが、GETはサーバーからデータを取得したいので、意味的に間違っています。そのデータをサーバーに送信するには、ブラウザーからPOST要求を行う必要がありますが、これが適切です。

POSTリクエストを行う2つの簡単な方法があります。これらのうち最も一般的なのはブラウザのフォームからのもので、もう1つはAjaxの使用です。

フォームから行う方法は?

現在、あなたのコードでは、フォーム(「s2」と呼ばれています)を既に置いていますが、現時点では同じではありませんが、今はそのままにしてください。 フォームを介してデータを送信する場合は、2つのことを行う必要があります。最初と最も明白な、フォームを作成します。第2に、インターネットから受信したデータ(タイトルとフィードのリンク)をサーバーに送信します。

URLごとに1つのフィードからデータを取得すると仮定すると、要求を受け取る担当ファイルは「saveFeeds.php」になります。だから、あなたが以前のものの後に以下のようなフォームを作成することができます。

<Form class = "sender" action = "saveFeeds.php" method = "post"> 
  <Input type = "hidden" name = "title" value = ""> <br> 
  <Input type = "hidden" name = "link" value = ""> <br> 
  <Input type = "submit"> 
</ Form> 

をこの時点で、あなたは何を送信することはできません、ので、その後は、フォーム内のフィードデータを配置する必要があります。あなたが好きな機能を追加することができます。

Function appendFeedToForm (title, link) { 
  Var form = $ (". Sender"); 
  Form.title.value = title; 
  Form.link.value = value; 
} 

そして AppendFeedToForm(this.title, this.link);

第二のケースとして、結果の$ .each内側からそれを呼び出す、アヤックスを使用して、同じファイルへの要求を作成する最も簡単な方法です

$.post("saveFeeds.php", r.item); 

JQueryのドキュメントを見ることができます。 Ajaxリクエストに関する重要な点は、ページをリロードする必要なく、必要なすべてのデータを送信できることです。したがって、同じ方法で複数のフィードを送信することができます。

クライアントからサーバーに送信されたデータでは、データの受信を処理する必要があります。現在、私たちはすべてのデータを "saveFeeds.php"というファイルに指定していましたので、最終的にjavascriptのコンテンツを置くことができます。それらにアクセスするには、単にそのファイルに、あなたはフィールドをチェックする必要があります

$ _POST ['title']  // This names are from input names of form 
$ _POST ['link']  // or properties sended through Ajax 

ので、ここでは、TP、これらのパラメータを使用しているデータベースへの接続を作成し、保存しています。現時点では、使用しているデータベースエンジンについては言及していませんでした。このため、ここではその答えを簡略化します。

注:お客様の問題を解決するためのベストプラクティスを提供するのではなく、必要最小限のものを提供しています。

+0

ご協力いただきありがとうございました!!! –

関連する問題