IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Array PHP rempli de "Array" au lieu de ses valeurs


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    348
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 348
    Par défaut Array PHP rempli de "Array" au lieu de ses valeurs
    Bonjour,
    J'essaie de rapatrier un tableau PHP sous JavaScript pour le traiter. Mon problème, c'est que je ne sais pas pourquoi mon tableau sous JavaScript est rempli de "Array" au lieu de ses vraies valeurs...

    Remplissage du tableau
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    <?php
    	include 'config.php';
     
    	//Database connection establishment
     
    	$server = mysql_connect($addrServ,$user,$passwd) or die ('Erreur SQL !'.$req.'<br/>'.mysql_error());
    	mysql_select_db ($bdd, $server);
     
    	//Database reading
    	$req = 'SELECT * FROM _message';
    	$env_req = mysql_query($req) or die ('Erreur SQL !'.$req.'<br/>'.mysql_error());
    	$comportements = array();
     
    	while($row = mysql_fetch_assoc($env_req))
    	{
    		array_push($comportements, $row);
    	}
    ?>
    Rapatriement du tableau
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
    	<?php
    		echo 'var behaviors = new Array(';
     
    		for($i=0; $i<sizeof($comportements); $i++)
    		{
    			if(is_int($comportements[$i]))
    			{
    			    echo $comportements[$i];
    			}
    			else
    			{
    			    echo '"'.$comportements[$i].'"';
    			}
     
    			if($i<sizeof($comportements)-1)
    			{
    				echo ',';
    			}
    		}
    		echo ');';
    	?>
    Pas de foreach car j'ai besoin de ne pas ajouter de virgule au dernier tour de boucle.

    Merci d'avance.

  2. #2
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    utilise json_encode

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    tu dois revoir la notion SQL en effet $row dans le while s'emploie ainsi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    array_push($comportements, $row['user']); //=====ou ['machin']

  4. #4
    Membre très actif
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    348
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 348
    Par défaut
    Je viens d'essayer, alors voilà comment j'ai modifié mon code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    	$.getJSON('../monprojet/api.backoffice.php?operation=read', function(data)
    	{
    		alert(data);
    		if (searchStringInArray($('#nom_nv_comportement').val(), data)>-1)
    		{
    			alert('Behavior with label \"'+$('#nom_nv_comportement').val()+'\" already exists.');
    			return false;
    		}
    	});
    Et dans api.backoffice.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    //...
    if ($_GET['operation']=='read')
    {
    	$req =
    	'SELECT behavior
    	FROM _message';
     
    	$result = mysql_query($req) or die ('Erreur SQL !'.$req.'<br/>'.mysql_error());
    	$behaviors = mysql_fetch_assoc($result);
    	echo json_encode($behaviors);
    }
     
    console.log($req);
    Résultat: Il n'exécute pas ce qu'il y a dans $.getJSON. Il me dit aussi dans la console de FireBug que j'utilise une constante non définie (il parle de $req)...

    Je suis complètement confus...

  5. #5
    Invité
    Invité(e)
    Par défaut
    Regardes un peut les limites sur PHP.NET
    http://php.net/manual/fr/function.json-encode.php
    Car il y a plein de limites a son emploie y compris l'encodage des données etc ...
    mais franchement je ne connais pas assez le sujet pour poursuivre
    escuses moi

  6. #6
    Expert confirmé
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Billets dans le blog
    12
    Par défaut
    Salut,

    essayes avec ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $result = mysql_query($req) or die ('Erreur SQL !'.$req.'<br/>'.mysql_error());
    while($row = mysql_fetch_assoc($result)) {
        $behaviors[] = $row;
    }
    echo json_encode($behaviors);

  7. #7
    Membre très actif
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    348
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 348
    Par défaut
    Hello, j'ai essayé ton code, même résultat: undefined constant dans la console pour $req et le code JS n'exécute pas ce qu'il y a dans le $.getJSON...

    Edit: Bon, bizarrement mon problème venait de console.log(). En mettant la ligne en commentaire, plus de souci, sauf celui-ci:

    Quand je fais alert(data) côté client, j'ai: [Object object] dans tous les champs... je commence à désespérer, voici mon code côté client:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    	$.getJSON('../surfinger/api.backoffice.php?operation=read', function(data)
    	{
    		alert(data);
    		if (searchStringInArray($('#nom_nv_comportement').val(), data)>-1)
    		{
    			alert('Behavior with label \"'+$('#nom_nv_comportement').val()+'\" already exists.');
    			return false;
    		}
    	});

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MySQL] array php modifié par mysql array php
    Par fahdo dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 20/07/2014, 11h46
  2. Problème quote array PHP / SQL lettres et chiffres
    Par Irokoi dans le forum Requêtes
    Réponses: 1
    Dernier message: 18/03/2014, 09h29
  3. Réponses: 1
    Dernier message: 12/01/2010, 23h58

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo