8721 sujets

Développement web côté serveur, CMS

Bonjour,

J'ai un souci avec ma donnée JSON lorsque je la transforme en tableau avec php , tout est perdu.

Pourriez vous m'aider ?

Voici ma donnée JSON :
json:{"data":{"id":"1","nom":"Daudigny222","prenom":"Vincent","adresse":"30 rue du 5 mai","cp":"98000","ville":"Noum\u00e9a","id_cp":"1","id_ville":"1"}}


1. Je suppose que le "Noum\u00e9a" peut poser problème.

2. Cela est envoyé via ExtJS ou tout mon projet est en utf8 sans BOM converti avec Notepad.

Voici mon code php :
<?php


//2 DB CREDENTIALS + CONNECTION
$conn = mysql_connect("localhost", "root", "") or die(mysql_error());
mysql_select_db("vo_test", $conn ) or die(mysql_error());
mysql_query('SET CHARACTER SET utf8');

	
//3 UTILS
function cleanUtils( $row )
{
	$magic_quotes_active = get_magic_quotes_gpc();
	
	foreach ( $row as $field=>$value )
	{
		if( is_string( $value ) )
		{
			if( $magic_quotes_active ) 
			{ 
				$value = stripslashes( $value ); 
			}
			
			$row->$field = mysql_real_escape_string( $value );
		}		
	}
	return $row;
}

//4 MYSQL C-R-U-D METHODS
//C
function create( $result )
{
	$query = "insert into owners ( name, address, state ) values ( $result->name, $result->address, $result->state )";
	error_log( "create " . $query );
	mysql_query( $query );

	$result = array( 'success'=>true, 'data'=>true );
	echo( json_encode($result ) );
}

//R
function read()
{
	$query = "SELECT tb1.id, tb1.nom, tb1.prenom, tb1.adresse, tb2.libelle as cp, tb3.libelle as ville, tb2.cp as id_cp, tb3.ville as id_ville  FROM  `adresse` AS tb1, `cp` AS tb2, `ville` AS tb3 WHERE tb1.cp = tb2.cp AND tb1.ville = tb3.ville ";
	
	$qResult = mysql_query($query); 
	$listResult = array();
	
	
	
  	while($row = mysql_fetch_assoc($qResult))
  	{
  		array_push($listResult, $row );
  	}			
	
  	$result = array( 'success'=>true, 'data'=>$listResult );
	
	
	
	//the only thing we do here is display the content.
	echo( json_encode($result ) );
}

//U
function update( $result )
{
	



	
	if( isset( $result->id ) )
	{
	
		
		
		$query = "UPDATE  adresse SET nom = 'toto', prenom = '$result->prenom', adresse = '$result->adresse'  WHERE id = $result->id";
		
		mysql_query($query);
		
		$query = "UPDATE  cp SET libelle = '$result->cp'  WHERE cp = $result->id_cp";
		
		mysql_query($query);
		
		$query = "UPDATE  ville SET libelle = '$result->ville'  WHERE ville = $result->id_ville";
		
		mysql_query($query);
		
		

		$result = array( 'success'=>false, 'data'=>true );
		echo( json_encode($result ) );
	}
}

//D
function destroy( $result )
{
	if( isset( $result->id ) )
	{
		$query = "DELETE FROM owners WHERE id = $result->id LIMIT 1";
		error_log( "delete " . $query );
		mysql_query($query);

		$result = array( 'success'=>true, 'data'=>true );
		echo( json_encode($result ) );
	}
}

//5 GET CRUD ACTION, GET POST DATA, EXECUTE CRUD METHOD
$action = $_GET['action'];

if( $action )
{
	if( $action == "read" )
	{
		read();
	}
	else 
	{
		//http://stackoverflow.com/questions/664148/how-to-access-post-data-in-php
		$result = file_get_contents('php://input');
		
		
			
		if( isset( $result ) )
		{	
			
			
			$fp = fopen('data.txt', 'w');
			fwrite($fp, 'json:'.$result);
			fclose($fp);
			
			$result = json_decode( $result );
			$result = cleanUtils( $result );
			
			if( $action == "update" )
				update( $result );
			else
			if( $action == "destroy" )
				destroy( $result );
			else
			if( $action == "create" )
				create( $result );			
		}		
	}
}

mysql_close( $conn );
?>


A bientot Smiley langue
Modifié par Vincent_nk (08 May 2013 - 04:51)
Modérateur
Bonjour!
Vincent_nk a écrit :
Bonjour,

J'ai un souci avec ma donnée JSON lorsque je la transforme en tableau avec php , tout est perdu.

Pourriez vous m'aider ?

Voici ma donnée JSON :
[#red]json:[/#]{"data":{"id":"1","nom":"Daudigny222","prenom":"Vincent","adresse":"30 rue du 5 mai","cp":"98000","ville":"Noum\u00e9a","id_cp":"1","id_ville":"1"}}


premièrement ce JSON ne va pas fonctionner, tente plutôt

{"data":{"id":"1","nom":"Daudigny222","prenom":"Vincent","adresse":"30 rue du 5 mai","cp":"98000","ville":"Noum\u00e9a","id_cp":"1","id_ville":"1"}}

ou même peut être ? :
{"id":"1","nom":"Daudigny222","prenom":"Vincent","adresse":"30 rue du 5 mai","cp":"98000","ville":"Noum\u00e9a","id_cp":"1","id_ville":"1"}


Ensuite cela donnera un objet dont la première (et unique) propriété est aussi un objet, pour obtenir un tableau associatif:

$result = json_decode( $result, TRUE );

Modifié par kustolovic (07 May 2013 - 08:01)
Salut,

Merci de votre aide, j'ai avancé et j'ai trouvé l'erreur.

JSON_ENCODE fait bien son boulot, c'est juste que j’accèdai direct à l'id ($result->id) sans passer par data ($result->data->id).

Le problème est résolu.

A bientot! Smiley ravi