0

属性からデータを取得し、それを ajax を介して別のページに渡し、mysql に挿入しようとしています。

現在、いくつかの div 要素があります

<div data-categories="[{"name":"Gastropub","pluralName":"Gastropubs"},{"name":"Food","pluralName":"Food"}]">
Name
</div>

それを分解する

-----------------------

    [
        {"name":"Gastropub","pluralName":"Gastropubs"},
        {"name":"Food","pluralName":"Food"},
        {"name":"more","pluralName":"more"}
     ]


------------------------

data-categories は、json_encoded 配列を挿入する場所で、それが飛び出します。私がやろうとしているのは、おそらく ajax を使用してその値を取得するベストプラクティスを理解することです

var cats = $('div').data('categories');

$.ajax(function(){
 type:"POST",
 url:"other.php",
 data: "data="+cats,
 success:function(data){
    alert("success");
 }
});

other.php

other.php今、列を持つテーブルがある場合、各値をこのMySQLに個別に保存する方法を理解しようとしています:nameおよびpluralName(後でさらに追加する可能性があります) MySQLデータ

if(isset($_POST['data'])){

   $insert = $dbh->prepare("INSERT INTO cats(name,pluralName) VALUES(?,?)");

}

これらの値を一連のjson値から取得し、各値を適切な列に挿入するにはどうすればよいですか? 上記の例からわかるように、私は1 nameつ以上を持っています。pluralName

4

2 に答える 2

0

AJAX呼び出しを行うと次のようになります:

var data = $("div").attr("data-categories");
$.ajax({
type: "POST",
url: "other.php",
data: "data="+data,
function(data){
    alert("success");
 }
});

$ _POST配列でデータを取得している場合は、おそらく次を使用できます。

<?php
$str = $_POST['data'];
$data = json_decode($str, true);
//print_r($data);

for($i=0;$i<count($data);$i++) {
     $insert = "INSERT INTO cats(name,pluralName) VALUES('".$data[$i]['name']."','"+$data[$i]['pluralName']+"')";
//Insert in database

}
于 2013-02-22T03:49:43.440 に答える
0

これを試して:

Jquery

var dataStr = $("div").attr("data-categories");
$.ajax({
    type: "POST",
    url: "other.php",
    data: {data:dataStr},
    success:function(data){
        alert("success");
    }
});

PHPコード

<?php
if(isset($_POST['data']))
{
    $data = $_POST['data'];
    $jsonArray= json_decode($data, true);


    for($i=0;$i<count($jsonArray);$i++) {
        $insert = $dbh->prepare("INSERT INTO cats(name,pluralName) VALUES('".$jsonArray[$i]['name']."','"+$jsonArray[$i]['pluralName']+"')");
    }
}
?>
于 2013-02-22T10:39:05.317 に答える