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

MVC PHP Discussion :

Requête SQL et tableau


Sujet :

MVC PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de Jiraiya42
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    671
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 671
    Par défaut Requête SQL et tableau
    Salut !

    Voici mon problème : je me suis mis depuis peu au Zend Framework et j'essaie de bidouiller, de tester... J'ai suivi un tuto... nikel tout fonctionne ajout, modif, sup... Mais je voulais tester en mettant directement une requête SQL et traiter le résultat pour voir mais j'ai que dalle car je crois que mon tableau de retour n'est pas considéré comme tel, voici ma conf :

    index.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
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
     
    <?php
    error_reporting(E_ALL|E_STRICT);
    ini_set('display_errors', 1);
    date_default_timezone_set('Europe/Paris');
     
    // mise en place des répertoires et chargement des classes
    set_include_path('.'
        . PATH_SEPARATOR . './library'
        . PATH_SEPARATOR . './application/models/'
        . PATH_SEPARATOR . get_include_path());
    include "Zend/Loader.php";
    Zend_Loader::registerAutoload();
     
    // Chargement de la configuration
    $config = new Zend_Config_Ini('./application/config.ini', 'general');
    $registry = Zend_Registry::getInstance();
    $registry->set('config', $config);
     
    // Mise en place de la BDD
    $db = Zend_Db::factory($config->db);
    Zend_Registry::set('dbAdapter', $db);
    Zend_Db_Table::setDefaultAdapter('dbAdapter');
     
    // setup controller
    $frontController = Zend_Controller_Front::getInstance();
    $frontController->throwExceptions(true);
    $frontController->setControllerDirectory('./application/controllers');
     
    Zend_Layout::startMvc(array('layoutPath'=>'./application/layouts'));
     
    // run!
    $frontController->dispatch();
    IndexController.php

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    class IndexController extends Zend_Controller_Action 
    {
        function indexAction()
        {
    	$this->view->title = "Mes albums";
    	$album = new Albums();
    	$result = $album->afficher();
    	$this->view->albums = $result;
        }
    }
    Albums.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
     
    <?php
     
    class Albums extends Zend_Db_Table
    {
        protected $_name = 'albums';
     
        function afficher()
        {
            $select = $this->select()
                           ->from('albums', array('id', 'artist', 'title'));
    	$result = $this ->fetchRow($select);
        }
    }
    index.phtml

    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
     
    <p><a href="<?php echo $this->url(array('controller'=>'index',
            'action'=>'ajouter')); ?>">Ajouter un nouvel album</a></p>
    <table>
    <tr>
    	<th>Title</th>
    	<th>Artist</th>
    	<th>&nbsp;</th>
    </tr>
     
    <?php foreach($this->albums as $album) : ?>
    <tr>
    	<td><?php echo $this->escape($album->title);?></td>
    	<td><?php echo $this->escape($album->artist);?></td>
    	<td>
            <a href="<?php echo $this->url(array('controller'=>'index',
                'action'=>'modifier', 'id'=>$album->id));?>">Modifier</a>
            <a href="<?php echo $this->url(array('controller'=>'index',
                'action'=>'supprimer', 'id'=>$album->id));?>">Supprimer</a>
    	</td>
    </tr>
    <?php endforeach; ?>
    </table>
    Voilà et j'obtiens le warning suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Warning: Invalid argument supplied for foreach() in /var/www/zf-tutorial/application/views/scripts/index/index.phtml on line 10
    Et mon tableau vide...

    Quelqu'un peut m'aider svp ? J'ai googlisé pendant un bon moment et il n'en est ressorti que des échecs...

  2. #2
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 506
    Par défaut
    Il faut retourner le résultat de la fonction.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    class Albums extends Zend_Db_Table
    {
        protected $_name = 'albums';
     
        function afficher()
        {
            $select = $this->select()
                           ->from('albums', array('id', 'artist', 'title'));
    	$result = $this ->fetchRow($select);
            return $result;
        }
    }

  3. #3
    Membre éclairé Avatar de Jiraiya42
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    671
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 671
    Par défaut
    Oups en effet je l'avais zappé. La requête lancée dans PHPMyAdmin me retourne le résultat attendu mais je n'obtiens rien dans mon tableau... Pas d'erreur mais pas de données... est-ce l'affichage qui est inefficace ?

  4. #4
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 506
    Par défaut
    que donne ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     function indexAction()
        {
    	$this->view->title = "Mes albums";
    	$album = new Albums();
    	$result = $album->afficher();
    	//$this->view->albums = $result;
            Zend_Debug::dump($result);
        }

  5. #5
    Membre éclairé Avatar de Jiraiya42
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    671
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 671
    Par défaut
    Ca me renvoie ça :

    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
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
     
    Warning: Invalid argument supplied for foreach() in /var/www/zf-tutorial/application/views/scripts/index/index.phtml on line 10
    Title 	Artist 	 
     
    object(Zend_Db_Table_Row)#41 (8) {
      ["_data:protected"] => array(3) {
        ["id"] => string(1) "1"
        ["artist"] => string(5) "Duffy"
        ["title"] => string(9) "Rockferry"
      }
      ["_cleanData:protected"] => array(3) {
        ["id"] => string(1) "1"
        ["artist"] => string(5) "Duffy"
        ["title"] => string(9) "Rockferry"
      }
      ["_modifiedFields:protected"] => array(0) {
      }
      ["_table:protected"] => object(Albums)#24 (16) {
        ["_name:protected"] => string(6) "albums"
        ["_db:protected"] => object(Zend_Db_Adapter_Pdo_Mysql)#5 (10) {
          ["_pdoType:protected"] => string(5) "mysql"
          ["_numericDataTypes:protected"] => array(16) {
            [0] => int(0)
            [1] => int(1)
            [2] => int(2)
            ["INT"] => int(0)
            ["INTEGER"] => int(0)
            ["MEDIUMINT"] => int(0)
            ["SMALLINT"] => int(0)
            ["TINYINT"] => int(0)
            ["BIGINT"] => int(1)
            ["SERIAL"] => int(1)
            ["DEC"] => int(2)
            ["DECIMAL"] => int(2)
            ["DOUBLE"] => int(2)
            ["DOUBLE PRECISION"] => int(2)
            ["FIXED"] => int(2)
            ["FLOAT"] => int(2)
          }
          ["_defaultStmtClass:protected"] => string(21) "Zend_Db_Statement_Pdo"
          ["_config:protected"] => array(6) {
            ["host"] => string(9) "localhost"
            ["username"] => string(4) "nico"
            ["password"] => string(8) "renaitre"
            ["dbname"] => string(6) "zftest"
            ["options"] => array(2) {
              ["caseFolding"] => int(0)
              ["autoQuoteIdentifiers"] => bool(true)
            }
            ["driver_options"] => array(0) {
            }
          }
          ["_fetchMode:protected"] => int(2)
          ["_profiler:protected"] => object(Zend_Db_Profiler)#6 (4) {
            ["_queryProfiles:protected"] => array(0) {
            }
            ["_enabled:protected"] => bool(false)
            ["_filterElapsedSecs:protected"] => NULL
            ["_filterTypes:protected"] => NULL
          }
          ["_defaultProfilerClass:protected"] => string(16) "Zend_Db_Profiler"
          ["_connection:protected"] => object(PDO)#26 (0) {
          }
          ["_caseFolding:protected"] => int(0)
          ["_autoQuoteIdentifiers:protected"] => bool(true)
        }
        ["_schema:protected"] => NULL
        ["_cols:protected"] => array(3) {
          [0] => string(2) "id"
          [1] => string(6) "artist"
          [2] => string(5) "title"
        }
        ["_primary:protected"] => array(1) {
          [1] => string(2) "id"
        }
        ["_identity:protected"] => int(1)
        ["_sequence:protected"] => bool(true)
        ["_metadata:protected"] => array(3) {
          ["id"] => array(14) {
            ["SCHEMA_NAME"] => NULL
            ["TABLE_NAME"] => string(6) "albums"
            ["COLUMN_NAME"] => string(2) "id"
            ["COLUMN_POSITION"] => int(1)
            ["DATA_TYPE"] => string(3) "int"
            ["DEFAULT"] => NULL
            ["NULLABLE"] => bool(false)
            ["LENGTH"] => NULL
            ["SCALE"] => NULL
            ["PRECISION"] => NULL
            ["UNSIGNED"] => NULL
            ["PRIMARY"] => bool(true)
            ["PRIMARY_POSITION"] => int(1)
            ["IDENTITY"] => bool(true)
          }
          ["artist"] => array(14) {
            ["SCHEMA_NAME"] => NULL
            ["TABLE_NAME"] => string(6) "albums"
            ["COLUMN_NAME"] => string(6) "artist"
            ["COLUMN_POSITION"] => int(2)
            ["DATA_TYPE"] => string(7) "varchar"
            ["DEFAULT"] => NULL
            ["NULLABLE"] => bool(false)
            ["LENGTH"] => string(3) "100"
            ["SCALE"] => NULL
            ["PRECISION"] => NULL
            ["UNSIGNED"] => NULL
            ["PRIMARY"] => bool(false)
            ["PRIMARY_POSITION"] => NULL
            ["IDENTITY"] => bool(false)
          }
          ["title"] => array(14) {
            ["SCHEMA_NAME"] => NULL
            ["TABLE_NAME"] => string(6) "albums"
            ["COLUMN_NAME"] => string(5) "title"
            ["COLUMN_POSITION"] => int(3)
            ["DATA_TYPE"] => string(7) "varchar"
            ["DEFAULT"] => NULL
            ["NULLABLE"] => bool(false)
            ["LENGTH"] => string(3) "100"
            ["SCALE"] => NULL
            ["PRECISION"] => NULL
            ["UNSIGNED"] => NULL
            ["PRIMARY"] => bool(false)
            ["PRIMARY_POSITION"] => NULL
            ["IDENTITY"] => bool(false)
          }
        }
        ["_metadataCache:protected"] => NULL
        ["_metadataCacheInClass:protected"] => bool(true)
        ["_rowClass:protected"] => string(17) "Zend_Db_Table_Row"
        ["_rowsetClass:protected"] => string(20) "Zend_Db_Table_Rowset"
        ["_referenceMap:protected"] => array(0) {
        }
        ["_dependentTables:protected"] => array(0) {
        }
        ["_defaultSource:protected"] => string(11) "defaultNone"
        ["_defaultValues:protected"] => array(0) {
        }
      }
      ["_connected:protected"] => bool(true)
      ["_readOnly:protected"] => bool(false)
      ["_tableClass:protected"] => string(6) "Albums"
      ["_primary:protected"] => array(1) {
        [1] => string(2) "id"
      }
    }
    J'avoue que cette sortie me paraît très abstraite...

  6. #6
    Membre éclairé Avatar de Jiraiya42
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    671
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 671
    Par défaut
    Personne pour m'éclairer où me dire où je peux trouver une signification au résultat donné ci-dessus svp ?

Discussions similaires

  1. Résultat requête SQL dans tableau
    Par hauser11 dans le forum C#
    Réponses: 0
    Dernier message: 16/05/2013, 16h25
  2. affecter une requête SQL à un tableau
    Par gastoncs dans le forum VB.NET
    Réponses: 2
    Dernier message: 22/07/2012, 10h18
  3. Affichage requête SQL dans tableau
    Par lolymeupy dans le forum Langage
    Réponses: 4
    Dernier message: 29/08/2011, 10h40
  4. Requête SQL et tableau
    Par juju1988 dans le forum Débuter
    Réponses: 4
    Dernier message: 06/04/2010, 08h29
  5. Requête SQL et tableau à double entrée
    Par Invité dans le forum Langage SQL
    Réponses: 4
    Dernier message: 06/06/2007, 20h51

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