Garder type de données php/mysql en json

Fermé
ZMEX Messages postés 47 Date d'inscription dimanche 19 avril 2009 Statut Membre Dernière intervention 27 septembre 2010 - 23 août 2010 à 17:13
Giorgiolino Messages postés 253 Date d'inscription vendredi 15 mai 2009 Statut Contributeur Dernière intervention 2 mars 2015 - 24 août 2010 à 14:07
Bonjour,

j'essaie de transformer des données issues de mysql en json.
j'y arrive grâce à json_encode()
mais je ne sais pas comment garder le type de mes données, parce que le json généré est tout en string.

{"NUMCLI":"2","NOM":"hero","PRENOM":"tif","ADRESSE":"23 rue delarue","CP":"92000","ville":"clamart"}


mon code est comme suit :
<?php
echo "<hr>";
   $tablo = array();
   $sql="SELECT * FROM client";
   $res = $idcom->query($sql);

while ($lig = $res ->fetch_assoc()) {
   foreach($lig as $champs => $valeur)
    $tablo[$champs] = $valeur ;
   }//fin du while
print_r($tablo);
echo "<br>";
echo json_encode($tablo);
?>


vous remarquez que mes identifiants sont entre guillemets.
Comment faire?
Je vous remercie d'avance pour votre aide.



A voir également:

1 réponse

ZMEX Messages postés 47 Date d'inscription dimanche 19 avril 2009 Statut Membre Dernière intervention 27 septembre 2010 16
24 août 2010 à 09:41
up !!
0
Giorgiolino Messages postés 253 Date d'inscription vendredi 15 mai 2009 Statut Contributeur Dernière intervention 2 mars 2015 52
24 août 2010 à 14:07
Bonjour,

pas besoin de s'exciter de la sorte. Si tu n'as pas encore reçu de réponse c'est que personne n'a trouvé les ressources pour te répondre, alors zen.

Concernant ton problème, ci-après quelques éléments qui peuvent t'aider:

1/

If you have problems with quotes when encoding numeric data retrieved from the database, you can just cast that value to integer and there will be no quotes:

$testArr['key'] = '1';
print json_encode($testArr);

===> {"key":"1"}

$testArr['key'] = (int)'1';
print json_encode($testArr);

===> {"key":1}

Don't forget that you have to deal with numbers, otherwise your string will be converted to 0.


2/
To battle the quoting of numbers when encoding data retrieved from mysql you could do a simple preg_replace() to remove the quotes on numbers.

This has worked for me:
<?php
$json = json_encode($dataFromMysql);
$json = preg_replace('/"(-?\d+\.?\d*)"/', '$1', $json);
?>


L'ensemble peut-être retrouvé sur cette page du manuel php (qui est aussi ton ami) :
https://www.php.net/manual/fr/function.json-encode.php

Globalement, l'idée c'est de "nettoyer" les quotes autour des valeurs qui sont des nombres.


Bon courage.
0