Accueil > > > [PHP5] CLASSE DE NEWS
[PHP5] CLASSE DE NEWS
Information sur la source
Description
Bon après Hametsu21, je poste la mienne. Classe de news... utilisation très simple. Je fais une étendu de classe (parce que j'ai la flemme de refaire ma classe pour ne faire qu'un bloc :p) à partir d'une classe abstraite. Simple à comprendre ca aussi :p Allez zoup, le code :
Source
- <?php
- abstract class Objet {
-
- // Propriété de connection à la base de donnée
- protected $db;
-
- // Sortie des données de la classe
- public $output;
-
- //* Initialisation de la connection à la base de donnée *//
- protected function __construct($dbInit = TRUE) {
-
- if ( $dbInit ) {
- $this->db = mysql::GetInstance();
- } else {
- $this->db = NULL;
- }
-
- }
-
- //* Fait le vide de la mémoire *//
- public function __destruct() {
- unset($this->output);
- }
-
- }
- // Ca c'est juste la classe abstraite, voici la classe News :p
- ?>
- <?php
- class News extends Objet {
-
- public function __construct() {
- parent::__construct();
- }
-
- // Supprime une news
- // Retourne un booléen : TRUE/FALSE
- public function DeleteNews($id) {
-
- $this->db->prepare('DELETE FROM news WHERE id = {1}', $id);
- $this->db->query();
-
- return ( $this->db->affected_rows() === 1 ) ? TRUE : FALSE;
-
- }
-
- public function CountNews() {
-
- $this->db->query('SELECT COUNT(id) FROM news');
- $this->db->query();
-
- $data = $this->db->fetch_row();
- return ( (int) $data[0] );
-
- }
-
- public function GetUniqueNews($id) {
-
- unset($this->output);
-
- $this->db->prepare('SELECT id, titre, content, resume, DATE_FORMAT(date,"%d/%m/%Y à %H:%i") as date FROM news WHERE id = {1}',
- $id);
- $this->db->query();
-
- $this->output = $this->db->fetch_array();
-
- }
- // $start => début de la requète
- // $limit => Nombre d'enregistrement max
- // $comm => Active la récupération des commentaires ou non
- public function GetNews($start = 0, $limit = 30, $comm = 'count') {
-
- unset($this->output);
-
- switch ( strtolower($comm) ) {
- case 'count' :
- $this->db->prepare('SELECT news.id, news.titre, news.resume, DATE_FORMAT(news.date,"%d-%m-%Y") as date , COUNT(commentaires.id) as count , DATE_FORMAT( MAX(commentaires.date), "%d/%m/%Y") as lastcomm FROM news LEFT JOIN commentaires ON news.id = commentaires.id_news GROUP BY news.id ORDER by news.id DESC LIMIT {1},{2}',
- $start, $limit);
- break;
- case 'no' :
- $this->db->prepare('SELECT id, titre, content, resume, DATE_FORMAT(date,"%d/%m/%Y à %H:%i") as date FROM news ORDER BY id DESC LIMIT {1}, {2}',
- $start, $limit);
- break;
-
- }
- $this->db->query();
-
- while ( $data = $this->db->fetch_array() ) {
- $this->output[] = $data;
- }
-
- }
-
- // Récupére les commentaires d'une news
- // Retourne le nombre de commentaires
- public function GetComm($id, $start = 0, $limit = 10) {
-
- unset($this->output);
-
- $this->db->prepare('SELECT pseudo, content, ip FROM commentaires WHERE id_news = {1} ORDER BY id ASC LIMIT {2}, {3}',
- $id, $start, $limit);
- $this->db->query();
-
- while ( $data = $this->db->fetch_array() ) {
- $this->output[] = $data;
- }
-
- return $this->db->num_rows();
-
- }
-
- // Compte le nombre de commentaires d'une news
- public function CountComm($id) {
-
- $this->db->prepare('SELECT COUNT(*) FROM commentaires WHERE id_news = {1}', $id);
- $this->db->query();
-
- $data = $this->db->fetch_row();
- return ( (int) $data[0] );
-
- }
-
- // Ajoute un commentaire sur une news.
- public function AddComm($pseudo, $content, $id) {
-
- unset($this->output);
-
- $this->db->prepare("INSERT INTO commentaires (pseudo, content, id_news, ip, date) VALUES ('{1}', '{2}', {3}, '{4}', NOW() )",
- $pseudo, $content, $id, $_SERVER['REMOTE_ADDR']);
- $this->db->query();
-
- if ( $this->db->affected_rows() === 1 ) {
- $this->output = $this->db->insert_id();
- return true;
- } else {
- return false;
- }
-
- }
-
- // Ajoute une news
- // Retourne TRUE/FALSE en fonction de l'insertion dans la BDD
- public function AddNews($titre, $resume, $content) {
-
- unset($this->output);
-
- $this->db->prepare("INSERT INTO news (titre, resume, content, date) VALUES ('{1}', '{2}', '{3}', NOW() )",
- $titre, $resume, $content);
- $this->db->query();
-
- if ( $this->db->affected_rows() === 1 ) {
- $this->output = $this->db->insert_id();
- return true;
- } else {
- return false;
- }
-
- }
-
- // Update une news
- public function UpdateNews($titre, $resume, $content, $id) {
-
- $this->db->prepare("UPDATE news SET titre = '{1}', resume = '{2}', content = '{3}' WHERE id = {4}",
- $titre, $resume, $content, $id);
-
- if ( $this->db->affected_rows() === 1 ) {
- $this->output = $this->db->insert_id();
- return true;
- } else {
- return false;
- }
-
-
- }
-
- // Récupère l'ID qui va être inscrit dans la BDD
- public function LastIDNews() {
-
- $this->db->query('SELECT MAX(id)+1 FROM news');
-
- $data = $this->db->fetch_row();
- return ( (int) $data[0] ) ;
-
- }
-
- // Fin d'objet
- public function __destruct() {
- unset($this->output);
- }
-
- }
- ?>
- <?php
- CREATE TABLE `news` (
- `id` int(11) NOT NULL auto_increment,
- `titre` varchar(255) NOT NULL,
- `resume` varchar(255) default NULL,
- `content` text NOT NULL,
- `date` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
- PRIMARY KEY (`id`)
- ) ENGINE=MyISAM
-
- // Le timestamp peut être changé par un INT(11) ou un champ DATETIME ou autre :)
-
- CREATE TABLE `commentaires` (
- `id` int(11) NOT NULL auto_increment,
- `pseudo` varchar(255) NOT NULL,
- `content` text NOT NULL,
- `date` datetime NOT NULL,
- `id_news` int(11) NOT NULL,
- `ip` varchar(255) NOT NULL,
- PRIMARY KEY (`id`)
- ) ENGINE=MyISAM
-
- ?>
- <?php
- // Utilisation :
- $news = new News;
- // Je récupère les 10 dernières news ainsi que le nombre de commentaire sur chaque news.
- $news->GetNews(0,10,'count');
- foreach ( $news->output as $data ) {
- // $code à l'intérieur :)
- // Ca reste de la mise en page
- }
- ?>
<?php
abstract class Objet {
// Propriété de connection à la base de donnée
protected $db;
// Sortie des données de la classe
public $output;
//* Initialisation de la connection à la base de donnée *//
protected function __construct($dbInit = TRUE) {
if ( $dbInit ) {
$this->db = mysql::GetInstance();
} else {
$this->db = NULL;
}
}
//* Fait le vide de la mémoire *//
public function __destruct() {
unset($this->output);
}
}
// Ca c'est juste la classe abstraite, voici la classe News :p
?>
<?php
class News extends Objet {
public function __construct() {
parent::__construct();
}
// Supprime une news
// Retourne un booléen : TRUE/FALSE
public function DeleteNews($id) {
$this->db->prepare('DELETE FROM news WHERE id = {1}', $id);
$this->db->query();
return ( $this->db->affected_rows() === 1 ) ? TRUE : FALSE;
}
public function CountNews() {
$this->db->query('SELECT COUNT(id) FROM news');
$this->db->query();
$data = $this->db->fetch_row();
return ( (int) $data[0] );
}
public function GetUniqueNews($id) {
unset($this->output);
$this->db->prepare('SELECT id, titre, content, resume, DATE_FORMAT(date,"%d/%m/%Y à %H:%i") as date FROM news WHERE id = {1}',
$id);
$this->db->query();
$this->output = $this->db->fetch_array();
}
// $start => début de la requète
// $limit => Nombre d'enregistrement max
// $comm => Active la récupération des commentaires ou non
public function GetNews($start = 0, $limit = 30, $comm = 'count') {
unset($this->output);
switch ( strtolower($comm) ) {
case 'count' :
$this->db->prepare('SELECT news.id, news.titre, news.resume, DATE_FORMAT(news.date,"%d-%m-%Y") as date , COUNT(commentaires.id) as count , DATE_FORMAT( MAX(commentaires.date), "%d/%m/%Y") as lastcomm FROM news LEFT JOIN commentaires ON news.id = commentaires.id_news GROUP BY news.id ORDER by news.id DESC LIMIT {1},{2}',
$start, $limit);
break;
case 'no' :
$this->db->prepare('SELECT id, titre, content, resume, DATE_FORMAT(date,"%d/%m/%Y à %H:%i") as date FROM news ORDER BY id DESC LIMIT {1}, {2}',
$start, $limit);
break;
}
$this->db->query();
while ( $data = $this->db->fetch_array() ) {
$this->output[] = $data;
}
}
// Récupére les commentaires d'une news
// Retourne le nombre de commentaires
public function GetComm($id, $start = 0, $limit = 10) {
unset($this->output);
$this->db->prepare('SELECT pseudo, content, ip FROM commentaires WHERE id_news = {1} ORDER BY id ASC LIMIT {2}, {3}',
$id, $start, $limit);
$this->db->query();
while ( $data = $this->db->fetch_array() ) {
$this->output[] = $data;
}
return $this->db->num_rows();
}
// Compte le nombre de commentaires d'une news
public function CountComm($id) {
$this->db->prepare('SELECT COUNT(*) FROM commentaires WHERE id_news = {1}', $id);
$this->db->query();
$data = $this->db->fetch_row();
return ( (int) $data[0] );
}
// Ajoute un commentaire sur une news.
public function AddComm($pseudo, $content, $id) {
unset($this->output);
$this->db->prepare("INSERT INTO commentaires (pseudo, content, id_news, ip, date) VALUES ('{1}', '{2}', {3}, '{4}', NOW() )",
$pseudo, $content, $id, $_SERVER['REMOTE_ADDR']);
$this->db->query();
if ( $this->db->affected_rows() === 1 ) {
$this->output = $this->db->insert_id();
return true;
} else {
return false;
}
}
// Ajoute une news
// Retourne TRUE/FALSE en fonction de l'insertion dans la BDD
public function AddNews($titre, $resume, $content) {
unset($this->output);
$this->db->prepare("INSERT INTO news (titre, resume, content, date) VALUES ('{1}', '{2}', '{3}', NOW() )",
$titre, $resume, $content);
$this->db->query();
if ( $this->db->affected_rows() === 1 ) {
$this->output = $this->db->insert_id();
return true;
} else {
return false;
}
}
// Update une news
public function UpdateNews($titre, $resume, $content, $id) {
$this->db->prepare("UPDATE news SET titre = '{1}', resume = '{2}', content = '{3}' WHERE id = {4}",
$titre, $resume, $content, $id);
if ( $this->db->affected_rows() === 1 ) {
$this->output = $this->db->insert_id();
return true;
} else {
return false;
}
}
// Récupère l'ID qui va être inscrit dans la BDD
public function LastIDNews() {
$this->db->query('SELECT MAX(id)+1 FROM news');
$data = $this->db->fetch_row();
return ( (int) $data[0] ) ;
}
// Fin d'objet
public function __destruct() {
unset($this->output);
}
}
?>
<?php
CREATE TABLE `news` (
`id` int(11) NOT NULL auto_increment,
`titre` varchar(255) NOT NULL,
`resume` varchar(255) default NULL,
`content` text NOT NULL,
`date` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
PRIMARY KEY (`id`)
) ENGINE=MyISAM
// Le timestamp peut être changé par un INT(11) ou un champ DATETIME ou autre :)
CREATE TABLE `commentaires` (
`id` int(11) NOT NULL auto_increment,
`pseudo` varchar(255) NOT NULL,
`content` text NOT NULL,
`date` datetime NOT NULL,
`id_news` int(11) NOT NULL,
`ip` varchar(255) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM
?>
<?php
// Utilisation :
$news = new News;
// Je récupère les 10 dernières news ainsi que le nombre de commentaire sur chaque news.
$news->GetNews(0,10,'count');
foreach ( $news->output as $data ) {
// $code à l'intérieur :)
// Ca reste de la mise en page
}
?>
Conclusion
Voila, reste plus qu'à faire mumuse avec les autres méthodes. Ca marche sur le même principe : $news->method($args); foreach ( $news->output as $data ) { // }
Sauf certaines méthodes qui renvoient d'autres choses en plus :) C'est du basique, je compte l'améliorer prochainement... Mais alors comment :o
Sources du même auteur
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
Class POO retourné le nom de l'objet [ par MeTh ]
Bonjour,Comment retourné le nom de l'objet déclaré?exemple :$monobjet = new GridR();comment recuperé $monobjet dans ma class?Merci
requête count [ par Tomcube ]
Salut !J'ai une table news avec mes news, une table commentaires où sont stockés les commentaires de ces news. Dans ma page de news (qui en affiche 30
Problème affichage de la commentaires [ par dyto ]
bonjour les zéros, mon probleme c que je fai un tuto, et il y 2 champs, et kon on les remplies, il l'ajoute dans la bdd et l'affiche dans en haut, com
Ajouter des commentaires a des news [ par jeromeke ]
Bonjour,je suis à la recherche d'un script qui explique comment ajouter des commentaires à des news.Merci d'avance.Jérôme
Compteur de nombre de commentaires posté pour une news [ par jeromeke ]
Voila je comprend pas trop le principe alors si qqun pourrait m'aider je serais ravis!Merci d'avance,Jérôme
templates avec poo [ par lesnes ]
bonjours je reprogramme totalement mon site en poo et je souhaiterai utiliser les templates mais l'on ne peut pas faire appel a une class exterieur a
news [ par tomm123456 ]
bonjour et joyeuses fetes . voilà j'ai un probleme de mise à jour de news .Quand je veux modifier une news , il me renvoie bien les vale
Probléme avec GET_PAGE [ par matrixscript59 ]
donc voicie mon probléme quand je regarde les commentaire de mais news il veut pas me affiché la page 2 ou 3 etc... quand je clic sur 2 il me envoye
[POO] Une classe dans une classe [ par Mrreivax ]
Bonsoir.Et bien voila. J'ai créé une classe de gestion des images.J'ai par la suité créé une autre classe de gestion de banières.Mais, cette dernière
Pb avec la class de news de FhX [ par acidline ]
Bonjour à tous,Je me présente, je m'appelle Nicolas, j'ai 24ans et la POO en PHP est nouveau pour moi.Je me suis mis en tête d'utiliser la class de ne
|
Derniers Blogs
UNE JOLIE-HORLOGE ET PAS QU'UN PEU !UNE JOLIE-HORLOGE ET PAS QU'UN PEU ! par neodante
Pour les possesseurs d'iPhone, ça y est Bijin Tokei - qui se traduit littéralement en Français par " Jolie Horloge " - est arrivé et GRATUITEMENT s'il vous plaît ! Après la version Tokyo, Hokkaido, night club, racing, Gal, "pour les mademoiselles'", . voi...
Cliquez pour lire la suite de l'article par neodante TECHDAYS PARIS 2010 : CONNECTEZ VOS DONNéES à SHAREPOINT 2010 AVEC LES BUSINESS CONNECTIVITY SERVICESTECHDAYS PARIS 2010 : CONNECTEZ VOS DONNéES à SHAREPOINT 2010 AVEC LES BUSINESS CONNECTIVITY SERVICES par ROMELARD Fabrice
Animé par: Gaetan Bouveret et Julien Chomarat Business Connectivity Services (BCS) est dans SharePoint 2010 la version 2 de Business Data Catalog (BDC dans SharePoint 2007). Il s'agit de la solution permettant de visualiser des données provenan...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice [DIVERS] SUIVRE VOS SéRIES PRéFéRéS SUR LA TOILE[DIVERS] SUIVRE VOS SéRIES PRéFéRéS SUR LA TOILE par orion
Comme de nombreux geek, je suis un grand amateur de série TV et je rate régulièrement des épisodes de mes séries préférés. Une solution s'offre à vous avec ce merveilleux site : Tv Gorge - www.tvgorge.com Moteur de recherche à l'appui, vous pouvez ...
Cliquez pour lire la suite de l'article par orion TECHDAYS PARIS 2010 : LA BI DANS SHAREPOINT 2010TECHDAYS PARIS 2010 : LA BI DANS SHAREPOINT 2010 par ROMELARD Fabrice
Animé par: Vincent Bellet et Baptiste Giraudier La BI dans SharePoint 2010, Les nouveaux services d'application dans SP2010 et SQL Server Reporting services 2008 R2. La BI dans SharePoint est généralisée pour tous afin de permettre à tous les coll...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Logiciels
DB-MAIN (9.1.0)DB-MAIN (9.1.0)DB-MAIN is a data-modeling and data-architecture tool. It is designed to help developers and anal... Cliquez pour télécharger DB-MAIN Xilisoft DPG Convertisseur (5.1.37.0120)XILISOFT DPG CONVERTISSEUR (5.1.37.0120)Xilisoft DPG Convertisseur offre aux fans de Nintendo DS une bonne solution leur permettant de dé... Cliquez pour télécharger Xilisoft DPG Convertisseur GraphicsGale (2.01.01)GRAPHICSGALE (2.01.01)GraphicsGale est un logiciel de PixelArt avec de nombreuse fonctionnalités permettant de réalisé ... Cliquez pour télécharger GraphicsGale Architecte 3D (Platinum 2010)ARCHITECTE 3D (PLATINUM 2010)Architecte 3D Platinium vous permet de concevoir facilement les plans votre future maison, de l'é... Cliquez pour télécharger Architecte 3D TeamViewer 5 (TeamViewer 5)TEAMVIEWER 5 (TEAMVIEWER 5)Dépanner un ami,expliquer une manipulation devient un jeu d'enfant.
Prise en main d'un autre ord... Cliquez pour télécharger TeamViewer 5
|