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 :

Tableau considéré comme non vide


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Mai 2004
    Messages
    803
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 803
    Par défaut Tableau considéré comme non vide
    Bonjour,

    Dans un script Ajax, je cherche le département auquel appartient une localité. Cependant, il arrive que certains pays ne possèdent pas de département, et donc que cette recherche ne retourne rien.

    Or, en exécutant mon script, j'obtiens une erreur 500 lorsque je n'ai aucun département retourné. Voici mon code :

    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
    ...
     
             $listeDepartements = null;
     
    ...
     
              $listeDepartements = $em->getRepository('HotelsGestionAnnoncesBundle:Departement')->getDepartementsByElem($idElemInit, $typeElemInit);
     
              $retour = '';
     
              if(!empty($listeDepartements))
              {
               foreach($listeDepartements as $departement)
                {
                 $retour .= $departement->getId() . '_' . $departement->getNom() . '+';
                }
     
    ...
    Voici la fonction getDepartementsByElem($idElemInit, $typeElemInit) qui recherche le(s) département(s) :

    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
     public function getDepartementsByElem($idElemInit, $typeElemInit)
    	{	
    		$em = $this->getEntityManager();
     
        switch($typeElemInit)
         {
          case 'localite':
            $obj = $em->getRepository('HotelsGestionAnnoncesBundle:Localite')->find($idElemInit);
          break;
     
          case 'commune':
            $obj = $em->getRepository('HotelsGestionAnnoncesBundle:Commune')->find($idElemInit);
          break;
     
          case 'province':
            $obj = $em->getRepository('HotelsGestionAnnoncesBundle:Province')->find($idElemInit);
          break;
     
          case 'region':
            $obj = $em->getRepository('HotelsGestionAnnoncesBundle:Region')->find($idElemInit);
          break;
     
          default:
            $obj = $em->getRepository('HotelsGestionAnnoncesBundle:Pays')->find($idElemInit);
          break;
         }
     
        $retour = array();
     
        if($typeElemInit == 'localite')
         {
          $retour[] = $obj->getCommune()->getDepartement();
         }
        elseif($typeElemInit == 'commune' || $typeElemInit == 'province')
         {
          $retour[] = $obj->getDepartement(); 
         }
        else
         {
          $retour = $obj->getDepartements();
         }          
     
        return $retour;
    	}
    Voici le détail de l'erreur que j'obtiens :

    abbr title="Proxies\HotelsGestionAnnoncesBundleEntityDepartementProxy">HotelsGestionAnnoncesBundleEntityDepartementProxy</abbr>
    -&gt;getId
    </strong>
    ()

    <br />
    in C:\wamp\www\Symfony\src\Hotels\GestionAnnoncesBundle\Controller\DepartementController.php at line 218&nbsp;
    .

    La ligne 218 est la suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $retour .= $departement->getId() . '_' . $departement->getNom() . '+';
    Donc, apparemment, $listeDepartements n'est pas considéré comme étant vide, vu que le foreach est éxécuté. Quelqu'un aurait une idée?

    Merci d'avance pour votre aide

  2. #2
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Mai 2004
    Messages
    803
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 803
    Par défaut
    J'ai résolu mon problème en conditionnant mon foreach de cette manière :

    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
              if(is_array($listeDepartements))
               {
                if(is_object($listeDepartements[0]))
                 {
                  foreach($listeDepartements as $departement)
                   {
                    $retour .= $departement->getId() . '_' . $departement->getNom() . '+';
                   }
     
                  //Supprimer le dernier '+'
                  if($retour != '')
                   {
                    $retour = substr($retour, 0, strlen($retour) - 1);
                   }
                 }
               }

  3. #3
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Mai 2004
    Messages
    803
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 803
    Par défaut
    Je pensais avoir résolu le problème comme précédemment décrit, mais je me suis trompé. L'erreur est toujours belle et bien présente!

  4. #4
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 376
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 376
    Billets dans le blog
    17
    Par défaut
    Pour comprendre la situation je commencerais par regarder ce que contient $listeDepartements avec print_r( ) ou var_dump( ).

  5. #5
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Mai 2004
    Messages
    803
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 803
    Par défaut
    Merci beaucoup pour ton intérêt. Je rame grave et deviens chêvre. J'avais déjà fais un var_dump de '$listeDepartements', et ça ne m'affiche rien :

    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
     
    ...
     
              $listeDepartements = $em->getRepository('HotelsGestionAnnoncesBundle:Departement')->getDepartementsByElem($idElemInit, $typeElemInit);
              echo 'maListe vaut ' . var_dump($listeDepartements);
              $retour = '';
     
              if($listeDepartements)
               {     
                foreach($listeDepartements as $departement)
                 {
                  if(is_object($departement))
                   {
                    $retour .= $departement->getId() . '_' . $departement->getNom() . '+';
                   }
                 }
     
                //Supprimer le dernier '+'
                if($retour != '')
                 {
                  $retour = substr($retour, 0, strlen($retour) - 1);
                 }
               }
     
             return new \Symfony\Component\HttpFoundation\Response($retour);
    ...
    Et cela me donne :

    </pre>maListe vaut <!DOCTYPE html>
    J'ai toujours une erreur qui subsiste au niveau de la ligne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $retour .= $departement->getId() . '_' . $departement->getNom() . '+';
    Or, j'ai encore modidié ma méthode 'getDepartementsByElem()' de cette manière :

    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
    ...
        $retour = array();
        $pasRetour = true;
     
        if($typeElemInit == 'localite')
         {
          $departement = $obj->getCommune()->getDepartement();
     
          if(!empty($departement))
           {
            $pasRetour = false;
            $retour[] = $departement;
           }
         }
     
    ...
     
        if(!$pasRetour)
         {
          return $retour;
         }
        else
         {
          return false;
         }

  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 : 50
    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
    Bonjour,
    Pourrais tu remplacer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo 'maListe vaut ' . var_dump($listeDepartements);
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo 'maListe vaut ', var_dump($listeDepartements), ' - fin de maListe';
    et poster le résultat

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

Discussions similaires

  1. [MySQL] zone de texte non lue ou considérée comme vide !
    Par abouilyas dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 02/06/2011, 23h24
  2. [PHP 5.2] Cherche fonction pour réduire un tableau aux valeurs non vides
    Par renaud26 dans le forum Langage
    Réponses: 3
    Dernier message: 02/06/2011, 17h59
  3. Réponses: 5
    Dernier message: 13/07/2006, 10h11
  4. Réponses: 3
    Dernier message: 12/07/2006, 15h56
  5. [CLASSES] Attributs non-static apparemment considérés comme static ?
    Par Lideln dans le forum ActionScript 1 & ActionScript 2
    Réponses: 6
    Dernier message: 02/07/2006, 20h36

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