Smarty et PDO

nader19 Messages postés 18 Date d'inscription mardi 4 mai 2004 Statut Membre Dernière intervention 12 août 2008 - 30 juin 2008 à 12:41
nader19 Messages postés 18 Date d'inscription mardi 4 mai 2004 Statut Membre Dernière intervention 12 août 2008 - 30 juin 2008 à 16:17
NADER

7 réponses

nader19 Messages postés 18 Date d'inscription mardi 4 mai 2004 Statut Membre Dernière intervention 12 août 2008
30 juin 2008 à 12:43
NADER
0
neigedhiver Messages postés 2480 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 14 janvier 2011 19
30 juin 2008 à 14:18
????

Neige

N'hésitez pas à lire la doc de PHP avant de poser des questions triviales...
0
nader19 Messages postés 18 Date d'inscription mardi 4 mai 2004 Statut Membre Dernière intervention 12 août 2008
30 juin 2008 à 14:33
désolé j'ai pas rzmarqué que j'ai ecris n'a pas été validé

Bonjour,
j'ai probleme un peu compliqué mais je me bloque et je trouve pas solution
en fete j'utilise PDO pour connexion avec mysql et smart comme moteur template
je me bloque dans une requete précise .
j'ai 1 table ou ou il ya 1 champs pour date . bien sur je pêux avoir milliers de lignes dans cete table
la requete que je veux la faire est parcourir cette table voir toutes les années existantes dans champs date puis affiche des liens par exemple: 2007----2008------2009 que lorsque on clique dessus une autyre requete va etre déclanché avec conditions de l'année . c'est a dire la requete a trouvé qu'il ya annee 2007 et annee 2008 et annee 2009..
j'ai utilisé requete suivante:

$requete_prepare_1=$connexion->prepare("select year(date) as date "); // on prépare notre requête
$requete_prepare_1->execute(array( 1 ));
$lignes=$requete_prepare_1->fetch(PDO::FETCH_OBJ);
$lignes->date.'
';

mais il affiche que la derniere ligne de la table

et aussi j'arrive pas a afficher résultat de PDO dans moteur tempate smarty surtout si'il s'agit de stoker tableau ou résultat de sql avec plusieurs résultats.
qu'elqu'un a une idée
merçi d'vance.
<!-- / message -->
0
neigedhiver Messages postés 2480 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 14 janvier 2011 19
30 juin 2008 à 14:48
Salut,

"mais il affiche que la derniere ligne de la table "

C'est normal : tu ne récupère qu'une seule ligne, puisque tu n'executes qu'un seule fois la méthode fetch().
Utilise fetchAll() au lieu de fetch().
La méthode fetchAll() retourne un tableau avec tous les résultats (ce qui est quand même plus intéressant que de boucler sur fetch())

"et aussi j'arrive pas a afficher résultat de PDO dans moteur tempate
smarty surtout si'il s'agit de stoker tableau ou résultat de sql avec
plusieurs résultats."
Dans Smarty, tu peux boucler sur un tableau. En l'occurrence, tu as récupéré un tableau avec fetchAll(), il te suffit de l'assigner à une variable de Smarty :

$Smarty -> assign('tableau', $lines);

Dans le template :

{foreach from=$tableau item=ligne}
  {$ligne.date} : Patati, patata
{/foreach}

Neige

N'hésitez pas à lire la doc de PHP avant de poser des questions triviales...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
nader19 Messages postés 18 Date d'inscription mardi 4 mai 2004 Statut Membre Dernière intervention 12 août 2008
30 juin 2008 à 15:05
merçi pour votre réponse
 j'ainessayé cette méthode fetch all
et voilà erreur
Fatal error: Cannot use object of type stdClass as array in C:\Program Files\EasyPHP 2.0b1\www\SI\RH\index.php on line 34
et voila la requete:
$requete_prepare_1=$connexion->prepare("select year(date_debut) as date from atm_2008");
$requete_prepare_1->execute(array( 1 ));
$lignes=$requete_prepare_1->fetchAll(PDO::FETCH_OBJ);
 foreach ($lignes as $row)
                 {
                   echo $date = $row['date'];
       }
0
neigedhiver Messages postés 2480 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 14 janvier 2011 19
30 juin 2008 à 15:29
Avec l'option PDO::FETCH_OBJ PDO va nécessairement retourne un objet.
Il faut utiliser PDO::FETCH_ASSOC pour que PDO retourne un tableau (ou PDO::FETCH_NUM ou encore laisser la valeur par défaut)

Pour avoir à la fois un tableau et un objet, PDO::FETCH_LAZY : http://fr2.php.net/manual/fr/pdostatement.fetch.php
Neige

N'hésitez pas à lire la doc de PHP avant de poser des questions triviales...
0
nader19 Messages postés 18 Date d'inscription mardi 4 mai 2004 Statut Membre Dernière intervention 12 août 2008
30 juin 2008 à 16:17
merçi pour tes réponses

function readDataForwards($connexion) {
  $sql = 'SELECT year(date_debut) FROM atm_2008';
  try {    $stmt $connexion->prepare($sql, array(PDO::ATTR_CURSOR> PDO::CURSOR_SCROLL));
    $stmt->execute();
    while ($row = $stmt->fetch(PDO::FETCH_NUM, PDO::FETCH_ORI_NEXT)) {
      $data = $row[0];
   print_r ($data);
    }
    $stmt = null;
  }
  catch (PDOException $e) {
    print $e->getMessage();
  }
}




readDataForwards($connexion);

cela affiche toute les dates de la table. mais moi j'ai besoin qu'apres parcours de la table il va trouver les années x et y et afficher des liens href
par exemple 2007-2008-2009
0
Rejoignez-nous