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 :

[Tableaux] Traitement d'un tableau retourné par une classe


Sujet :

Langage PHP

  1. #1
    Membre averti
    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
    Points : 356
    Points
    356
    Par défaut [Tableaux] Traitement d'un tableau retourné par une classe
    Bonjour,

    Afin de faciliter la maintenance d'une application développée en Php5 et MySql, je travaille avec des classes pour les interfaces et les transactions avec la base de données.

    Voici donc mon "main" nommé "index.php" :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    <?php
    include_once("../fichiersInclusion/classes.php");
     
    $interface = new CInterface("Acceuil", "../fichiersInclusion/index.inc");
    $interface->getHeader();
    $interface->getLogo();
    $interface->getTitre();
    $interface->getMenu("Acceuil");
    $interface->getContenu();
    $interface->getSignature(); 
    ?>
    Voici mon fichier "index.inc" qui vient affecter ma variable $contenu dans ma classe :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    <?php
    include_once("../fichiersInclusion/fonctionsPhp.inc");
     
    echo"<div id='derNews'>
      <table id='tmenu'>
        <tr>
          <td id='tdcontenu' colspan='5'>Dernières news</td>
        </tr>";
        affDerNews();
    	//affDerDoc();
    echo "\n  </table>
    </div>";
    ?>
    Voici ma fonction "affDerNews()" :

    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
     
    function affDerNews()
     {
      $transaction = CtransactionsBdd::GetInstance("MSQL", "localhost", "root", "", "intranet_omnipro");
      $resulat = $transaction->select("select cle, date, titre, resume from news");
      //$cpt = count($resulat);
      for($i = 0; $i < 2; $i++)
       {
        echo "\n      <tr>
    	       <td id='tdcontenu'><input type='hidden' id='cleNews' value='$resulat[$i][cle]'</td>
    		   <td id='contenu'>$resulat[$i][date]</td>
    		   <td id='contenu'>$resulat[$i][titre]</td>
    		   <td id='contenu'>$resulat[$i][resume]</td>
    		   <td id='tdcontenu'>&nbsp;</td>
    		  </tr>";
       }
     
     }
    Et, pour terminer, voici ma fonction "select() de ma classe CtransactionsBdd :

    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
     
    public function select($requete)
       {
        switch(self::$typeBase)
         {
          case "MSQL":
    	   $result = mysql_query($requete, self::$connect);
     
           if(! $query)
            self::$erreur = "Impossible d'effectuer la requête " . $requete;
           else
    	    {
    		 if (! mysql_num_rows($result)) 
    		  self::$erreur = "Aucun résultat";
    		 else
    		  {
    		   while($row = mysql_fetch_assoc($result))
                $resultatSelect[] = $row;
     
    		   return $resultatSelect;
    		  }
    		}
     
    	   break;
    	 }
    Voici ce qui est affiché lorsque j'exécute ce script :

    [date]




    [titre]

    [date]




    [titre]

    Je ne comprends pas de quelle manière je dois traiter le tableau retourné.

    Quelqu'un aurait une idée?

    Merci d'avance.

    Christophe

  2. #2
    Membre averti Avatar de TucSale
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    264
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 264
    Points : 325
    Points
    325
    Par défaut
    bonjour,

    Je pense que tu as un problème dans la construction de ta chaine

    Deux solutions :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    echo "\n      <tr>
    	       <td id='tdcontenu'><input type='hidden' id='cleNews' value='$resulat[$i][cle]'</td>
    		   <td id='contenu'>{$resulat[$i]['date']}</td>
    		   <td id='contenu'>{$resulat[$i]['titre']}</td>
    		   <td id='contenu'>{$resulat[$i]['resume']}</td>
    		   <td id='tdcontenu'>&nbsp;</td>
    		  </tr>";
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    echo "\n      <tr>
    	       <td id='tdcontenu'><input type='hidden' id='cleNews' value='$resulat[$i][cle]'</td>
    		   <td id='contenu'>".$resulat[$i]['date']."</td>
    		   <td id='contenu'>".$resulat[$i]['titre']."</td>
    		   <td id='contenu'>".$resulat[$i]['resume']."</td>
    		   <td id='tdcontenu'>&nbsp;</td>
    		  </tr>";

  3. #3
    Membre averti
    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
    Points : 356
    Points
    356
    Par défaut
    Merci pour ton intérêt...

    En procédant de la manière dont tu proposes, mon tableau est bien construit en HTML, mais mes différentes valeurs ($resulat[$i]['date'], etc..) sont vides.

    Voici la visualisation du code source de la page obtenue :

    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
    <table id='tmenu'>
        <tr>
          <td id='tdcontenu' colspan='5'>Dernières news</td>
        </tr>
        <tr>
          <td id='tdcontenu'><input type='hidden' id='cleNews' value=''></td>
          <td id='contenu'></td>
          <td id='contenu'></td>
          <td id='contenu'></td>
          <td id='tdcontenu'>&nbsp;</td>
       </tr>
        <tr>
          <td id='tdcontenu'><input type='hidden' id='cleNews' value=''></td>
          <td id='contenu'></td>
          <td id='contenu'></td>
          <td id='contenu'></td>
          <td id='tdcontenu'>&nbsp;</td>
       </tr>
      </table>

  4. #4
    Membre averti Avatar de TucSale
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    264
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 264
    Points : 325
    Points
    325
    Par défaut
    Alors ton problème

    if (mysql_num_rows($result) == 0)

    Teste ton tableau, ajoute un print_r($resultatSelect) aprés ton mysql_fetch_assoc() et utilise ta variable $cpt pour parcourir $resulat, car je pense que ton problème est qu'il n'y a pas de résultat à ta requete


    ps: Juste pour etre conhérent : 'case "MSQL":' c'est pas plutot MYSQL :p

  5. #5
    Membre averti
    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
    Points : 356
    Points
    356
    Par défaut
    Encore merci pour ton aide et désolé pour le temps de réaction (boulot, boulot...)

    Dans l'esprit de ce que tu m'as proposé, j'ai créé un script d'essai que voici :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <?php
    $connect = mysql_connect("localhost", "root", "", "intranet_omnipro");
    $selectBase = mysql_select_db("intranet_omnipro", $connect);
    $requete = "select cle, date, titre, resume from news";
    $result = mysql_query($requete);
    while($row = mysql_fetch_assoc($result))
     $resultatSelect[] = $row;
    print_r($resultatSelect);
     
    ?>
    Le résultat obtenu est :

    Array ( [0] => Array ( [cle] => 1 [date] => 2007-10-01 [titre] => essai1 [resume] => résumé1 ) [1] => Array ( [cle] => 2 [date] => 2007-10-02 [titre] => essai2 [resume] => résumé2 ) )

    Dès lors, en toute logique, le tableau renvoyé par ma classe devrait contenir la même chose...

    Je suis un peu perdu...

    PS : pour ma gouverne, que signifie MYSQL :p, car je passe le paramètre "MYSQL" au constructeur de ma classe qui vient stocké ceci dans une variable privée.

    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
    class CtransactionsBdd
     {
      private function __construct($typeBase, $host, $utilisateur, $motPasse, $base)
       {
        self:: connection($typeBase, $host, $utilisateur, $motPasse, $base);
       }
     
      private function connection($typeBase, $host, $utilisateur, $motPasse, $base)
       {
        self::$typeBase = $typeBase;
     
    	switch($typeBase)
         {
          case "MSQL":
           $connect = mysql_connect($host, $utilisateur, $motPasse, $base);
     
           if(! $connect)
    	    self::$erreur = "Impossible de se connecter au serveur de données " . $host;
    	   else
    	    { 
    		 self::$connect = $connect;
    		 $selectBase = mysql_select_db($base, $connect);
     
    		 if(! $selectBase)
    		  self::$erreur = "Impossible de sélectionner la base de données " . $base;
    		}	   
           break;	   
         } 
       }

Discussions similaires

  1. [PDO] PDO : Insérer le résultat retourné par une requête dans un tableau
    Par Encephalopatie dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 17/01/2015, 15h22
  2. Réponses: 8
    Dernier message: 09/06/2009, 18h04
  3. Réponses: 7
    Dernier message: 03/10/2008, 11h37
  4. Réponses: 11
    Dernier message: 31/10/2005, 17h59
  5. Traitement d'un char* renvoyé par une DLL en C++
    Par LuluTchab dans le forum Langage
    Réponses: 4
    Dernier message: 22/03/2003, 21h48

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