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

  1. #1
    Membre régulier
    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
    Points : 103
    Points
    103
    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 éminent sénior

    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
    Points : 10 727
    Points
    10 727
    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 régulier
    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
    Points : 103
    Points
    103
    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 éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    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
    Points : 16 545
    Points
    16 545
    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 régulier
    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
    Points : 103
    Points
    103
    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;
    		}
    	});

  8. #8
    Expert éminent sénior

    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
    Points : 10 727
    Points
    10 727
    Par défaut
    c'est quoi ton searchStringInArray

  9. #9
    Membre régulier
    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
    Points : 103
    Points
    103
    Par défaut
    C'est une fonction pour rechercher un string dans un tableau de strings. Bon sinon après un après-midi entier à tester toutes les combinaisons possibles, j'ai fini par trouver la bonne:

    Serveur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    if ($_GET['operation']=='read')
    {
    	$req =
    	'SELECT behavior
    	FROM _message';
    
    	$result = mysql_query($req) or die ('Erreur SQL !'.$req.'<br/>'.mysql_error());
    	while($row = mysql_fetch_assoc($result)) 
    	{
        	$behaviors[] = utf8_encode($row['behavior']);
    	}
    	echo json_encode($behaviors);
    }
    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)
    	{
    		if (searchStringInArray($('#nom_nv_comportement').val(), data)>-1)
    		{
    			alert('Behavior with label \"'+$('#nom_nv_comportement').val()+'\" already exists.');
    			return false;
    		}
    	});
    En fait j'avais des problèmes sans le utf8_encode parce que j'ai des valeurs à caractères accentués dans la base qui sont rapatriés en null si je ne le met pas et donc j'ai des problèmes avec searchStringInArray après s'il trébuche sur un null.

    Merci pour votre aide.

  10. #10
    Expert éminent sénior

    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
    Points : 10 727
    Points
    10 727
    Par défaut
    plutôt faire un mysql_set_charset, et pourquoi tu passes pas direct le nom_nv_comportement dans l'adresse ça te permeterai de simplifier les choses (qu'un seul résultat à récupérer et retourner true ou false)

  11. #11
    Membre régulier
    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
    Points : 103
    Points
    103
    Par défaut
    Qu'est-ce? Où? Comment?

  12. #12
    Expert éminent sénior

    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
    Points : 10 727
    Points
    10 727

  13. #13
    Membre régulier
    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
    Points : 103
    Points
    103
    Par défaut


    Y a pas plus simple?

  14. #14
    Expert éminent sénior

    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
    Points : 10 727
    Points
    10 727
    Par défaut
    ...

    Plus simple que d'appeler une simple fonction, non

+ 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, 12h46
  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, 10h29
  3. Réponses: 1
    Dernier message: 13/01/2010, 00h58

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