Y-a-t-il un moyen élégant de sauver une array dans MYSQL
Bonjour à tous,
Je dois sauvé deux variable dans ma base de donnée.
Le premier est
Code:
1 2 3
| $collection['geometry']['type'];
echo $collection['geometry']['type']
// affiche : polygon |
Le deuxième c'est un array qui contient des coordonée GPS et qui sont les points du polygon
Code:
$collection['geometry']['coordinates'][0]
Citation:
[
[-1.1370849609375002,52.13011607781289],
[-0.9338378906250001,51.64870258356996],
[-0.24169921875000003,52.16382422414709],
[-1.1370849609375002,52.13011607781289]
]
si je fais un foreach, j'ai ceci
Code:
1 2 3 4 5
|
foreach($collection['geometry']['coordinates'][0] as $k => $coordinates)
{
echo "[".$coordinates[0].",".$coordinates[1]."],";
} |
Citation:
[-1.1370849609375002,52.13011607781289],
[-0.9338378906250001,51.64870258356996],
[-0.24169921875000003,52.16382422414709],
[-1.1370849609375002,52.13011607781289,
Voilà, le truc c'est que dans ma base de donnée je dois avoir ce text
Citation:
[[-1.1370849609375002,52.13011607781289],[-0.9338378906250001,51.64870258356996],[-0.24169921875000003,52.16382422414709], [-1.1370849609375002,52.13011607781289]]
Ce qui équivaudrait à faire ceci:
Code:
1 2 3 4 5 6 7
|
echo "[";
foreach($collection['geometry']['coordinates'][0] as $k => $coordinates)
{
echo "[".$coordinates[0].",".$coordinates[1]."],";
}
echo "["; |
A savoir que ci-dessus, il y aura un problème avec une virgule de trop, lors du dernier passe dans la boucle.
Je me demandais s'il n'y avait pas une fonction qui me permetrait de traiter ceci
Code:
$collection['geometry']['coordinates'][0]
pour avoir ce texte à enregistrer
[[-1.1370849609375002,52.13011607781289],[-0.9338378906250001,51.64870258356996],[-0.24169921875000003,52.16382422414709], [-1.1370849609375002,52.13011607781289]]
[/QUOTE]
sans avoir à bricoler a loop foreach.
Voci mon code en entier
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
| <?php
include_once('db_config.inc.php');
$cfg_db_host = $host;
$cfg_db_db = $base;
$cfg_db_user = $user;
$cfg_db_password = $password;
if(!isset($_POST['data'])) {
json_encode(array("Error"=>'saveGeofencesssss', "msg" => "No Data" ));
}else
{
$data = $_POST['data'];
}
$collection = json_decode($data,true);
/*
echo $collection['geometry']['type'];
echo "|";
foreach($collection['geometry']['coordinates'][0] as $k => $coordinates)
{
echo "[".$coordinates[0].",".$coordinates[1]."],";
}
*/
try{
$conn = new PDO('mysql:host='.$cfg_db_host.';charset=utf8;dbname='.$cfg_db_db, $cfg_db_user , $cfg_db_password);
}
catch (Exception $e){echo json_encode(array("retour"=>'Erreur de connexion à la bdd', "e" => $e )); die();}
try{
$req = $conn->prepare('INSERT INTO geofences(devise_id, type, coordinates) VALUES(:devise_id, :type, :coordinates)');
$req->execute(array(
'devise_id' => 1,
'type' => $collection['geometry']['type'],
'coordinates' => $collection['geometry']['coordinates'][0] // Ici il faudrait avoir le contenu et la tructure en text comme ceci:
//'coordinate'=>'[[-1.1370849609375002,52.13011607781289],[-0.9338378906250001,51.64870258356996],[-0.24169921875000003,52.16382422414709], [-1.1370849609375002,52.13011607781289]]'
));
$count = $req->rowCount();
}
catch (Exception $e){echo json_encode(array("retour"=>'Erreurrrr update saveGeofences', "e" => $e )); die();}
echo json_encode($count);
?> |
voyez-vous?