[SMARTY] Récupérer les données d'une base MYSQL

Répondre


Cette question est un moyen de lutter contre les publications automatisées indésirables.
Émoticônes
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Accéder à davantage d’émoticônes
  Revue du sujet
 

  Étendre la vue Revue du sujet : [SMARTY] Récupérer les données d'une base MYSQL

Re: [SMARTY] Récupérer les données d'une base MYSQL

par Saian » 07 août 2019, 14:05

Salut, étant donné que le fichier de connexion fait un $connexion->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_OBJ); oui le problème viendrait de ton fichier de connexion.
Par défaut le fetch mode de PDO est fetch both (tableau indexé par noms et numéros des colonnes).

PS : je préfère aussi la syntaxe orientée objet.

[SMARTY] Récupérer les données d'une base MYSQL

par pjl » 07 août 2019, 11:55

Bonjour,

Je dois faire une application en utilisant Smarty.

Je me suis basé sur ce tutoriel : http://sdz.tdct.org/sdz/un-moteur-de-te ... marty.html

Voici le code utilisé pour la connexion à la base de donnée.
<?php
$PARAM_hote='localhost'; // le chemin vers le serveur
$PARAM_port='3306';
$PARAM_nom_bd='intranet'; // le nom de votre base de données
$PARAM_utilisateur='root'; // nom d'utilisateur pour se connecter
$PARAM_mot_passe='info60'; // mot de passe de l'utilisateur pour se connecter
try
{
	$connexion =new PDO('mysql:host='. $PARAM_hote .'; dbname='.$PARAM_nom_bd.'; charset=utf8', ''.$PARAM_utilisateur.'', ''.$PARAM_mot_passe.'');
	$connexion->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
	$connexion->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_OBJ);
}
 
catch(Exception $e)
{
	 echo 'Une erreur est survenue !';
	echo 'Erreur : '.$e->getMessage().'<br />';
        echo 'N° : '.$e->getCode();
        die();
}
?>
Le fichier PHP
<?php
include "../include/connection_bdd.inc.php";

// Inclure la librairie smarty
require_once('../smarty3.1.33/libs/Smarty.class.php');

// Extraction des informations

$query = $connexion->prepare("SELECT * FROM news ORDER BY id DESC");
$query->execute();

$list_news = array();
$i = 0;
while($data = $query->fetch()){
    $list_news[$i]['id'] = $data['id'];
    $list_news[$i]['titre'] = $data['titre'];
    $list_news[$i]['date'] = $data['date'];
    $list_news[$i]['content'] = $data['contenu'];
    $i++;
}

// On lance Smarty

$tpl = new Smarty();

$tpl->assign('list_news', $list_news);

$tpl->display("news.html");
?>
Le template
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
   <head>
       <title>Bienvenue sur mon site !</title>
       <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
   </head>
   <body>
       <h1> Mon super système de news </h1>
	{foreach from=$list_news item=news}
	<strong>{$news.titre}</strong> écrit le {$news.date|date_format:"%d/%m/%Y"}<br />
	{$news.content}<br /><br />
	{/foreach}
   </body>
</html>
Je me retrouve avec un objet que je veux insérer dans un tableau d'ou le message d'erreur suivant :
Fatal error: Uncaught Error: Cannot use object of type stdClass as array in C:\wamp64\www\intranet\news.php on line 15
En PHP classique, je travaille comme ça :
$requete = "SELECT DISTINCT(bureau), code_bureau FROM agents WHERE code_org = '" . $_SESSION['trombi_org'] . "'  AND (`date_sortie` = '0000-00-00' OR DATE(NOW()) < date_sortie OR `date_sortie` IS NULL ) GROUP BY code_bureau ORDER BY bureau";
	$resultats=$connexion->query("$requete");
	$resultats->setFetchMode(PDO::FETCH_OBJ);
	while( $ligne = $resultats->fetch() )
	{
	echo '<A HREF="' . $_SERVER['PHP_SELF'] . '?org='. $_GET['org'] .'&code_bur=' . $ligne->code_bureau . '">' . $ligne->bureau . '</a> ';
	}
C'est mon fichier de connexion à la base de données qui pose problème ou le tuto qui n'est pas bon ?

Merci pour vos réponses.