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 :

Jolie NOTICE avec un string dans l'array [PHP 5.2]


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de Jonahboss
    Homme Profil pro
    Inscrit en
    Mai 2009
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Espagne

    Informations forums :
    Inscription : Mai 2009
    Messages : 90
    Par défaut Jolie NOTICE avec un string dans l'array
    Bonjour,

    Oui je sais le titre est racoleur,mais j'ai pas pu résisté , mais le problème est réel :
    Notice: Array to string conversion in C:\wamp\www\servidor\phpfiles\back-office\forms\etud\consult.php on line 42
    Je cherche a produire un tableau multidimensionnel représentant le profil et la commande d'un client.

    $etud est le tableau principal basé sur le contenu de l'enregistrement du client dans la table etud.
    $etud['groups'] est le contenu de l'enregistrement du groupe du client dans la table groupe.
    Cette dernière contient 6 indices pack ('pack1','pack2'...), contenant un string genre '2;5;20' les 2 premiers chiffres étant les id d'enregistrements de la table offre et le dernier le prix du pack.


    Tout se passe bien jusqu'à la 3ème dimension.

    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
    23
    24
    25
    26
    27
    28
    29
    for($x=1;$x<7;$x++) //ligne 24
    {
       if($etud['pack'.$x]!='0')
       {
          $packtab= explode(';',$etud['groups']['pack'.$x]);
          $etud['groups']['pack'.$x]['prixpack']= $packtab[2];
          for($y=0;$y<2;$y++)
          {
             if($packtab[$y] != 0)
             {
                $query="SELECT * FROM offre WHERE offre.id='".ES($packtab[$y])."' LIMIT 1";
                if($resultat=Requete_SQL($query))
                {
                   while($ligne = mysql_fetch_assoc($resultat))
                   {
                       echo 'Valeur de $ligne : '.$br;
                       print_r($ligne);
                       echo $br;
                       $etud['groups']['pack'.$x]['offre'.$y] = $ligne;
                       echo 'Valeur de $etud[\'groups\'][\'pack\'.$x][\'offre\'.$y] : '.$br;
                       print_r($etud['groups']['pack'.$x]['offre'.$y]);
                       echo $br;		
                   }
                 }
             }
          }
       }
    }
    en retour sur la page j'ai :

    Valeur de $ligne :
    Array ( [id] => 9 [nom] => Test Orlas [type] => 1 [prod1] => 3 [prod2] => 7 [prod3] => 7 [prod4] => 6 [prod5] => 0 [prod6] => 0 [prod7] => 0 [prod8] => 0 [prod9] => 0 [prod10] => 0 [reffour] => aqerha [cout] => 11.15 [descri] => 1 Orla de 50x70 2 Orletes de 30x40 1 Orlin de 24x30 [creat] => 20090118185426 [modi] => 2009-01-19 18:06:38 )

    Notice: Array to string conversion in C:\wamp\www\servidor\phpfiles\back-office\forms\etud\consult.php on line 42
    Valeur de $etud['groups']['pack'.$x]['offre'.$y] :
    A
    Valeur de $ligne :
    Array ( [id] => 3 [nom] => Offerta G grupo test [type] => 2 [prod1] => 18 [prod2] => 13 [prod3] => 9 [prod4] => 0 [prod5] => 0 [prod6] => 0 [prod7] => 0 [prod8] => 0 [prod9] => 0 [prod10] => 0 [reffour] => G [cout] => 3.26 [descri] => 1 fotografia 20x25 color 2 fotografias 10x15 B/N 4 fotografias 7x10 color 1 fotografia de 20x25 12 fotografias de Carnet color [creat] => 20090118185426 [modi] => 2009-02-21 17:50:26 )

    Notice: Array to string conversion in C:\wamp\www\servidor\phpfiles\back-office\forms\etud\consult.php on line 42
    Valeur de $etud['groups']['pack'.$x]['offre'.$y] :
    A
    J'ai lu que le Notice peut se désactiver dans le php.ini mais c'est pas ça qui va m'enlever mon string de l'array (oui je sais pardon ).

    Si quelqu'un sait d'où vient l'erreur.

  2. #2
    Membre éclairé
    Inscrit en
    Mars 2008
    Messages
    70
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 70
    Par défaut
    salut,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ligne 30 tu as : $etud['groups']['pack'.$x]['prixpack']= $packtab[2];
    où $packtab[2] est une string.

    or quand tu l'utilise ligne 42 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $etud['groups']['pack'.$x]['offre'.$y] = $ligne;
    tu as un tableau puisque c'est :
    $ligne = mysql_fetch_assoc($resultat)
    ne faudrait-il pas utiliser $ligne['mavariable'] a stocker (d'ailleurs tu select * donc je sais pas le nom de la variable a prendre) ?

  3. #3
    Membre confirmé Avatar de Jonahboss
    Homme Profil pro
    Inscrit en
    Mai 2009
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Espagne

    Informations forums :
    Inscription : Mai 2009
    Messages : 90
    Par défaut
    Salut et merci

    $packtab[2] n'est jamais utilisé ligne 42 puisque $y vaut 0 ou 1 au max(dans le for(),$y<2).

    Et ce que je veux récupérer dans $etud['groups']['pack'.$x]['offre'.$y] c'est effectivement l'intégralité du tableau $ligne, pas seulement une de ses valeurs.
    D'où le $etud['groups']['pack'.$x]['offre'.$y] = $ligne;
    et non $etud['groups']['pack'.$x]['offre'.$y] = $ligne['un des champs'];

    Sinon ça ne me poserai aucun problème d'avoir un string en retour.

    [ EDIT : Pour plus de précisions]

    J'ai répondu un peu rapidement.
    Avant ces lignes $etud['groups']['pack'.$x] à la valeur String '3;0;28' correspondant à ça valeur dans la table groupe.
    C'est pour ça que je l'explode pour récupérer le 28 qui est le prix du pack d'où :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $etud['groups']['pack'.$x]['prixpack'] = $packtab[2];
    et je me serre des 2 premires valeurs de $packtab (0 et 1) comme condition WHERE à mes requêtes SQL sur la table offre.
    Ce pour avoir :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $etud['groups']['pack'.$x]['prixpack'] = //prix de mon pack
    $etud['groups']['pack'.$x]['offre'.y] = //contenu de l'enregistrement 3 de la table offre

  4. #4
    Membre confirmé Avatar de Jonahboss
    Homme Profil pro
    Inscrit en
    Mai 2009
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Espagne

    Informations forums :
    Inscription : Mai 2009
    Messages : 90
    Par défaut
    En fait ma question c'est, qu'est ce qui cloche dans cette ligne ? :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $etud['groups']['pack'.$x]['offre'.$y] = $ligne;
    Et qui fait que MOOOSIEUR php ne veut pas en entendre parler.

  5. #5
    Membre confirmé Avatar de Jonahboss
    Homme Profil pro
    Inscrit en
    Mai 2009
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Espagne

    Informations forums :
    Inscription : Mai 2009
    Messages : 90
    Par défaut
    Bon aucune idée de pourquoi, mais j'ai trouvé comment ça peut marcher :

    en fait ici :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    for($x=1;$x<7;$x++) //ligne 24
    {
       if($etud['pack'.$x]!='0')
       {
          $packtab= explode(';',$etud['groups']['pack'.$x]);
          $etud['groups']['pack'.$x] = ''; 
          $etud['groups']['pack'.$x]['prixpack']= $packtab[2];
          for($y=0;$y<2;$y++)
    La ligne 30 que je vient de rajouter qui a dégagé l'Array de mon String (Je sais mais je m'en lasse pas).

    Donc RESOLU mais si quelqu'un peut me dire pourquoi je suis obligé de dégager $etud['groups']['pack'.$x] de toute valeur avant de continuer je lui en serait reconnaissant.

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 11/06/2008, 15h48
  2. Réponses: 6
    Dernier message: 07/04/2008, 10h44
  3. remplir un champs dans HSQL avec un String saisi
    Par lampoulchon dans le forum JDBC
    Réponses: 3
    Dernier message: 01/02/2008, 19h30
  4. Problème avec MetaFilenameFilter (slash dans des String)
    Par Sylver--- dans le forum Langage
    Réponses: 6
    Dernier message: 14/08/2007, 14h16
  5. probléme avec une date/string dans un CommandText
    Par critok dans le forum Bases de données
    Réponses: 5
    Dernier message: 09/02/2005, 15h30

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