Pagina 1 di 2

Salvare array in database

Inviato: 29/01/2015, 15:45
da tespes
Buongiorno a tutti.
Il mio problema è questo: da un'applicazione android mi arriva una stringa creata dalla libreria GSON e postata tramite Json. La stringa è così composta:

Codice: Seleziona tutto

[{"Field1":"1","Field2":"2","Field3":"3"},
 {"Field1":"4","Field2":"5","Field3":"6"},
 {"Field1":"7","Field2":"8","Field3":"9"}]
Il mio obbiettivo è quello di salvare i vari "record" (che ancora non lo sono) in una tabella già esistente così formata, attraverso una "insert to":
Tabella1
Campi:
Field1 --> int
Field2 --> int
Field3 --> int

Ho cercato un po' in rete e mi è parso di capire che il comando da utilizzare è json_encode, così ho iniziato a creare il seguente codice:

Codice: Seleziona tutto

<?php
$jsonData = '[{"Field1":"1", "Field2":"2", "Field3":"3"},
              {"Field1":"4", "Field2":"5", "Field3":"6"},
              {"Field1":"7", "Field2":"8", "Field3":"9"}]';
$phpArray = json_decode($jsonData);
print_r($phpArray);
?>
che come output mostra il seguente risultato:

Codice: Seleziona tutto

Array ( [0] => stdClass Object ( [Field1] => 1 [Field2] => 2 [Field3] => 3 ) [1] => stdClass Object ( [Field1] => 4 [Field2] => 5 [Field3] => 6 ) [2] => stdClass Object ( [Field1] => 7 [Field2] => 8 [Field3] => 9 ) )
Qualcuno mi può aiutare a inserire i vari record in una tabella?
Grazie in anticipo

Re: Salvare array in database

Inviato: 29/01/2015, 16:58
da brunino
devi eseguire un ciclo for...

Re: Salvare array in database

Inviato: 29/01/2015, 17:02
da tespes
Un ciclo for sulla variabile phpArray?
Un aiutino in più... :)

Re: R: Salvare array in database

Inviato: 29/01/2015, 17:55
da brunino

Codice: Seleziona tutto

$conta = count($phpArray);
for($i=0;$i<$conta;$i++){
echo "$phpArray[$i][Field1] $phpArray[$i][Field2] $phpArray[$i][Field3] <br />";
//ora c'é una stampa a video, tu devi mettere qui la query
} 
 
Inviato dal mio GT-S5360 con Tapatalk 2

Re: Salvare array in database

Inviato: 30/01/2015, 8:54
da tespes
Grazie Brunino, sei stato veramente utilissimo.
L'unica cosa è che in questo caso mi esce il nome del campo

Codice: Seleziona tutto

Array[Field1] Array[Field2] Array[Field3]
Array[Field1] Array[Field2] Array[Field3]
Array[Field1] Array[Field2] Array[Field3] 
e invece a me servirebbe il suo valore. Una cosa tipo

Codice: Seleziona tutto

[1] [2] [3]
[4] [5] [6]
[7] [8] [9]
Per il resto tutto chiaro. E' possibile?
Grazie ancora

Re: Salvare array in database

Inviato: 30/01/2015, 9:35
da Micogian
Con foreach dovrebbe funzionare:

Codice: Seleziona tutto

$risultato = "";
foreach ( $phpArray as $chiave => $valore) {
$risultato = $risultato . " [" . $valore . "] " ;
}
echo $risultato . "<br />";

Re: Salvare array in database

Inviato: 30/01/2015, 9:43
da tespes
Grazie Micogian,
ho inserito il codice che mi hai dato dentro al ciclo for ma il risultato che mi comapre è questo:

Codice: Seleziona tutto

[Array] [Array] [Array]
[Array] [Array] [Array]
[Array] [Array] [Array] 


Preciso inoltre che nel codice che ho postato all'inizio ho aggiunto il "true" al "$phpArray = json_decode($jsonData);", altrimenti sia in questo caso, che in quello suggerito da Brunino il risultato è una pagina bianca

Codice: Seleziona tutto

$phpArray = json_decode($jsonData,true);

Re: Salvare array in database

Inviato: 30/01/2015, 9:46
da tespes
Per essere più chiaro rimetto il codice completo:

Codice: Seleziona tutto

<?php

$jsonData = '[{"Field1":"1", "Field2":"2", "Field3":"3"},
              {"Field1":"4", "Field2":"5", "Field3":"6"},
              {"Field1":"7", "Field2":"8", "Field3":"9"}]';

$phpArray = json_decode($jsonData,true);

$conta = count($phpArray);
for($i=0;$i<$conta;$i++){

//    echo "$phpArray[$i][$key] $phpArray[$i][Field2] $phpArray[$i][Field3] <br />";
  //ora c'é una stampa a video, tu devi mettere qui la query

  $risultato = "";
  foreach ( $phpArray as $chiave => $valore) {
  $risultato = $risultato . " [" . $valore . "] " ;
  }
  echo $risultato . "<br />";
}

?>

e questo è l'output:

Codice: Seleziona tutto

[Array] [Array] [Array]
[Array] [Array] [Array]
[Array] [Array] [Array] 

Re: Salvare array in database

Inviato: 30/01/2015, 10:48
da tespes
Ok, grazie al vostro aiuto con l'estrazione dei dati ci sono saltato fuori. Ecco il codice

Codice: Seleziona tutto

<?php

$jsonData = '[{"Field1":"1", "Field2":"2", "Field3":"3"},
              {"Field1":"4", "Field2":"5", "Field3":"6"},
              {"Field1":"7", "Field2":"8", "Field3":"9"}]';

$phpArray = json_decode($jsonData,true);

  foreach ( $phpArray as $chiave => $valore) {
     $Campo1 = $valore[Field1];
     $Campo2 = $valore[Field2];
     $Campo3 = $valore[Field3];
     echo "$Campo1 $Campo2 $Campo3 <br />";
     //Metto qui la query
  }

?>
Adesso proseguo con la query.
Grazie 1000

Re: Salvare array in database

Inviato: 30/01/2015, 10:59
da Micogian

Codice: Seleziona tutto

<?php
$jsonData = '[{"Field1":"1", "Field2":"2", "Field3":"3"},
              {"Field1":"4", "Field2":"5", "Field3":"6"},
              {"Field1":"7", "Field2":"8", "Field3":"9"}]';

$phpArray = json_decode($jsonData,true);
$conta = count($phpArray);
for( $i=0; $i < $conta; ++$i)
{
  $risultato = "";
  foreach ( $phpArray[$i] as $valore) {
  //echo "Valore: " . $valore . "<br />";
  $risultato = $risultato . " [" . $valore . "] " ;
  }
  echo $risultato . "<br />";
}
?>