2013-02-22 5 views
0

J'essaie d'obtenir des données à partir d'un attribut, de le passer par ajax dans une autre page, puis de l'insérer dans mysql.AJAX et JSON avec PDO MySQL

En ce moment, j'ai quelques éléments div

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

Décomposant:

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

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


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

données-catégories est l'endroit où insérer un tableau json_encoded et il apparaît cela. Quand je suis en train de faire est de trouver la meilleure pratique d'utiliser ajax pour obtenir cette valeur peut-être avec

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

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

other.php

Maintenant, je suis en train de comprendre comment économiser chaque valeur séparément dans mon MySQL dans ce other.php, si j'ai une table avec des colonnes: name et pluralName (et peut-être ajouter plus tard) dans les données MySQL

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

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

} 

Comment puis-je obtenir ces valeurs de un ensemble de valeurs json et insérer chaque valeur dans la colonne appropriée? Comme vous pouvez le voir dans l'exemple ci-dessus, j'ai plus name et pluralName

+0

Êtes-vous obtenir les données POST ?? –

+0

@ user1566160 ajax devrait transmettre les données (données json) à other.php où elles devraient entrer dans la syntaxe d'insertion. Est-ce ce que vous demandez? – hellomello

Répondre

0

Faire un appel AJAX serait comme:

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

Si vous obtenez les données dans le tableau $ _POST vous peut probablement utiliser:

<?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 

} 
0

Essayez ceci:

Jquery

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

Code 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']+"')"); 
    } 
} 
?>