2017-07-17 1 views
1

J'ai un javascript pour créer un tableau json et il a une méthode de post ajax, je dois savoir comment ce tableau json devrait décoder du côté php?récupérer tableau json de php json decode

Ma fonction javascript:

var invoices = {invoice: [{ "customerName" : "John" ,"reciptionName" : "Doe" ,"datee" : "2017-09-09" ,"total" : tot }], invoiceLine: []}; 

    for(i=1; i<=count+arr.length-1; i++){ 

     var ss = String(i); 
     if(arr.includes(ss)){ 
      continue; 
     } 
     invoices.invoiceLine.push({ 

      "itemName" : document.getElementById('item'+i).value , 
      "qty" : document.getElementById('inputQty'+i).value , 
      "value" : document.getElementById('value'+i).value 
     }); 
    } 

    $.ajax({ 
    type: "POST", 
    url: "saveInvoice.php", 
    data: {json : JSON.stringify(invoices)}, 
    cache: false, 
    success: function(data) { 
    alert(data); 
    location.reload(); 
    } 
    }); 

et voici mon php:.. (Il ne sera pas enregistrer les données dans la base de données que je veux les premières données de la facture pour enregistrer dans la base de données pour l'instant je peux utiliser les données invoiveLine . à une autre insertion de table)

$dbhost = "localhost"; 
    $dbuser = "root"; 
    //$dbpass = "dbpassword"; 
    $dbname = "inventory"; 

    $jsonInvoice = json_decode($POST['invoices'],true); 

    $customerName = $jsonInvoice.["invoice"][0].["customerName"]; 
    $reciptionName = $jsonInvoice.["invoice"][0].["reciptionName"]; 
    $date = $jsonInvoice.["invoice"][0].["datee"]; 
    $total = $jsonInvoice.["invoice"][0].["total"]; 



    mysql_connect($dbhost, $dbuser, ''); 

    mysql_select_db($dbname) or die(mysql_error()); 

    $query = "insert into invoice (customerName,reciptionName,date,total) values ('$customerName','$reciptionName','$date',$total)"; 

    $qry_result = mysql_query($query) or die(mysql_error()); 

    $insertId = mysql_insert_id(); 

    echo $insertId; 
+0

Qu'est-ce que '$ POST [ « factures »]' ressemblent? De plus, le constructeur 'mysql_' est [** obsolète depuis PHP 5.5 **] (https://wiki.php.net/rfc/mysql_deprecation), et est carrément [** supprimé en PHP 7 **] (https : //wiki.php.net/rfc/remove_deprecated_functionality_in_php7#extmysql). Veuillez envisager de passer à [** MySQLi **] (http://php.net/manual/fr/book.mysqli.php) ou à [** PDO **] (http://php.net/manual/ en/book.pdo.php), en veillant à utiliser également [** requêtes paramétrées **] (http://php.net/manual/fr/mysqli.quickstart.prepared-statements.php) pour empêcher l'injection SQL: –

+0

Tout d'abord, n'utilisez pas mysql_query, utilisez mysqli ou PDO et paramétrez votre chaîne de requête pour ne pas être sujet à l'injection SQL. – Difster

+0

j'ai corrigé $ POST à ​​$ _POST mais toujours obtenir l'erreur –

Répondre

0

Pouvez-vous essayer:

$customerName = $jsonInvoice["invoice"][0]["customerName"];

Je pense que vous obtenez des erreurs sintax, causées par des points. json_decode renvoie un tableau, vous devez accéder aux attributs comme indiqué ci-dessus. (Voir this pour plus d'infos)

En outre, prendre soin des recommandations que d'autres utilisateurs vous ont donné à propos mysqli

+0

j'ai essayé mais pas mate inséré –