Repeat loop json php mysql

0

I get a json via post php, and I want to insert the information into a table in the mysql database ..

json{  { "todos": [{ "nome0": "andre", "cor0": "preta" }, { "nome1": "felipe", "cor1": "azul" }, { "nome2": "laura", "cor2": "rosa" } ] }

php code

<?php
header('Content-Type: text/html; charset=utf-8');
if($_SERVER['REQUEST_METHOD']=='POST')
{
    require_once("dbConnect.php");

    // Definir UTF8

    mysql_set_charset($con, 'utf8');

    $tamanho = $_POST['tamanhoArray'];
    $tamArray = (int)$tamanho;
    $jsonALL = $_POST['todos'];
    $jsonParse = json_decode($jsonALL, true);

    for($i = 0;$i<$tamArray;$i++)
    {


        $sql = "INSERT INTO PEDIDOS (nomeUsuario, corUsuario) VALUES ('$jsonParse->nome.$i','$jsonParse->cor.$i')";

        if(mysqli_query($con,$sql)){

            echo "Usuário cadastrado com sucesso";

        }else{

            echo "Erro ao adicionar usuário";
        }
    }
    mysqli_close($con);


}else{

  echo "Requisição inválida   ";

} 
    
asked by anonymous 16.03.2018 / 14:48

3 answers

1

Avoid using "nome0", "nome1", "nome2",... , otherwise you will have infinite properties, and would have to do a "gambiarra" to deal with your string .

The "nome" would already be a property, so you do not have to put 0,1,2,3... , as this will only give you more work to generate your json for sending, and again to php receive and treat as array .

Basically like this:

<?php

// Seu json
$json = '{
    "todos": [{
        "nome": "andre",
        "cor": "preta"
    }, {
        "nome": "felipe",
        "cor": "azul"
    }, {
        "nome": "laura",
        "cor": "rosa"
    }]
}';

// "Transformando" o json em array
$array = json_decode($json, true);

//echo '<pre>'; // Exibir com pré formatação
//print_r($array);

// Loop no índice "todos"
foreach($array['todos'] as $v){

    // Função para inserir
    insereRegistro($v['nome'],$v['cor'])
}

// Função que recebe as variáveis e insere o registro
private function insereResgistro($nome, $cor) {

    //Seu método para inserir no banco
    $sql = "INSERT INTO PEDIDOS (nomeUsuario, corUsuario) VALUES ('{$nome}','{$cor}')";

    if(mysqli_query($con,$sql))
        echo "Usuário cadastrado com sucesso";
    else
        echo "Erro ao adicionar usuário";

    mysqli_close($con);
}    

?>
    
16.03.2018 / 17:00
-1
// Criando Json
$myArray[] = array("nome"=>"elder", "sobrenome"=>"barbosa", "idade"=>34);
$myArray[] = array("nome"=>"Luanna", "sobrenome"=>"Paz", "idade"=>31);
$myJSON = json_encode(array("usuario"=>$myArray), JSON_UNESCAPED_UNICODE );

echo "MyJson print => ". $myJSON."<br>";// Imprimindo json

// Decodificando o json
$retorno = json_decode($myJSON);
foreach($retorno->usuario as $usuario){
    echo "Nome: ". $usuario->nome."<br>";
}
    
16.03.2018 / 16:56
-1

Try this way.

<?php
header('Content-Type: text/html; charset=utf-8');
if($_SERVER['REQUEST_METHOD']=='POST')
{
    require_once("dbConnect.php");

    // Definir UTF8

    mysql_set_charset($con, 'utf8');

    $tamanho = $_POST['tamanhoArray'];
    $tamArray = (int)$tamanho;
    $jsonALL = $_POST['todos'];
    $jsonParse = json_decode($jsonALL, true);

    for($i = 0;$i<$tamArray;$i++)
    {

        $nome = "nome".$i;
        $cor = "cor".$i;

        $sql = "INSERT INTO PEDIDOS (nomeUsuario, corUsuario) VALUES ('$jsonParse->$nome','$jsonParse->$cor')";

        if(mysqli_query($con,$sql)){

            echo "Usuário cadastrado com sucesso";

        }else{

            echo "Erro ao adicionar usuário";
        }
    }
    mysqli_close($con);


}else{

  echo "Requisição inválida   ";

} 
    
16.03.2018 / 16:56