[php] nom d'une class dans une boucle
Résolu/Fermé
diice
-
3 janv. 2012 à 04:04
diice Messages postés 131 Date d'inscription lundi 17 novembre 2003 Statut Membre Dernière intervention 25 février 2017 - 3 févr. 2012 à 14:34
diice Messages postés 131 Date d'inscription lundi 17 novembre 2003 Statut Membre Dernière intervention 25 février 2017 - 3 févr. 2012 à 14:34
A voir également:
- [php] nom d'une class dans une boucle
- Easy php - Télécharger - Divers Web & Internet
- Trouver un nom avec une adresse ✓ - Forum Réseaux sociaux
- Trouver un numéro de portable avec un nom ✓ - Forum Mobile
- Trouver une personne par son adresse sans son nom et prénom? - Forum Réseaux sociaux
- Téléchargez cette image pour trouver le nom du fichier. il correspond au nom de cette loutre. comment s'appelle-t-elle ? - Forum Windows
3 réponses
diice
Messages postés
131
Date d'inscription
lundi 17 novembre 2003
Statut
Membre
Dernière intervention
25 février 2017
1
3 févr. 2012 à 14:34
3 févr. 2012 à 14:34
bonjour,
oui j'ai trouvé une solution.
je me suis basé sur la solution de Anoen.
j'ai pas trouvé de class database qui me soit facilement compréhensible alors j'ai fait comme ça :
donc un fichier include j'ai ca : (connexion.php)
ensuite je crée ma class, par exemple une classe de news : (news.class.php)
et ensuite dans ma page d'affichage de news (news.php)
bon, je ne sais pas si c'est totalement optimiser, mais ca marche bien :)
bon courage !
et encore merci a tous pour l'aide, et désolé pour la réponse et solution tardive !
oui j'ai trouvé une solution.
je me suis basé sur la solution de Anoen.
j'ai pas trouvé de class database qui me soit facilement compréhensible alors j'ai fait comme ça :
donc un fichier include j'ai ca : (connexion.php)
######### CONNEXION A LA BDD define('SERVEUR','######'); define('USER','######); define('PASSSQL','######'); define('BASE','######'); $mysqli = new mysqli(SERVEUR, USER, PASS, BASE); if ($mysqli->connect_error) { die('Erreur de connexion (' . $mysqli->connect_errno . ') ' . $mysqli->connect_error); }
ensuite je crée ma class, par exemple une classe de news : (news.class.php)
class News { var $id; var $titre; var $contenu; var $image; var $url; function News($id,$titre,$contenu,$image,$url) { $this->id = $id; $this->titre = $titre; $this->contenu = $contenu; $this->image = $image; $this->url = $url; } function Afficher_News() { $affiche='<li>'; $affiche.=''; if (!empty($this->image)) { $width=RetailleImg("photos/".$this->image,'height',195); $affiche.='<img src="/photos/'.$this->image.'" width="'.$width.'" height="195" '.altitle(stripslashes($this->titre),0).' />'; } $affiche.='<h2>'.stripslashes($this->titre).icone('photo','/photos/upload.php?type=news&id='.$this->id).icone('supprimer','news.php?id='.$this->id.'&file=del').icone('modifier','news.php?id='.$this->id.'&file=mod').'</h2>'."\n"; $affiche.=AffTxt($this->contenu); if (!empty($this->url)) { $affiche.='<br /><br /><p><a href="'.$this->url.'"'; if (mb_eregi('http://',$this->url)) { $affiche.=' target="_blank"'; } $affiche.='>[+ d\'infos]</a></p>'; } $affiche.='</li>'."\n"; return $affiche; } }
et ensuite dans ma page d'affichage de news (news.php)
include("inc/Class/news.class.php"); $sql_news = "select * from TABLENEWS where ......."; $req_news = $mysqli->query($sql_news) or die('Erreur SQL news !<br />'.$sql_news.'<br />'.$mysqli->error); if ($req_news->num_rows) { while ($news = $req_news->fetch_assoc()) { $actu = new News($news['id_news'],$news['titre'],$news['contenu'],$news['image'],$news['url']); echo $actu->Afficher_News(); } // fin boucle } // fin si resultat ok $req_news->free();
bon, je ne sais pas si c'est totalement optimiser, mais ca marche bien :)
bon courage !
et encore merci a tous pour l'aide, et désolé pour la réponse et solution tardive !
Anoen
Messages postés
196
Date d'inscription
mardi 10 novembre 2009
Statut
Membre
Dernière intervention
11 septembre 2013
25
3 janv. 2012 à 12:49
3 janv. 2012 à 12:49
Bonjour,
Ah enfin des questions intéressantes ^^
Alors ce que je fais moi c'est une classe qui possède toutes mes fonctions sql de base.
Par exemple (j'utilise que PDO) :
Ensuite comme toi je fais une classe "objet" et je l'extend à ma classe myDatabase.
Ainsi dans mon fichier "principal" j'ai plus qu'à faire :
Voilà j'espère que ça t'aidera. N'hésite pas à demander si des choses te paraissent floues, à force de travailler en objet je ne connais plus que ça. Le principe est toujours d'en faire le plus possible dans les classes "métier" (comme myDatabase ici) pour en avoir le moins à écrire dans les fichiers où on récupère et affiche le résultat final.
Ah enfin des questions intéressantes ^^
Alors ce que je fais moi c'est une classe qui possède toutes mes fonctions sql de base.
Par exemple (j'utilise que PDO) :
class myDatabase{ private $_id; private $_dbname; private ... etc .... //Fonction de select * public function fetchAll($nomtable){ $result = mysql_query("SELECT * FROM ".$nomtable); if(mysql_num_rows($result) != 0){ while($row=mysql_fetch_array($result)){ foreach($row as $key=>$value){ $returnValue[$key]=$value; } } }else{ $returnValues = ""; } return $returnValues; //Retourne un tableau ou vide } }
Ensuite comme toi je fais une classe "objet" et je l'extend à ma classe myDatabase.
class Amis extends myDatabase{ public $prenom; public $nom; etc.... public __construct() { $this->prenom=$prenom; $this->nom=$nom; } }
Ainsi dans mon fichier "principal" j'ai plus qu'à faire :
$amis = new Amis(); $listeAmis = $amis->fetchAll($nomtable); // Et l'affichage : if(!empty($listeAmis){ foreach($listeAmis as $amis){ echo $amis['nom']; echo $amis['prenom']; .... etc }else{ echo "Pas d'amis"; }
Voilà j'espère que ça t'aidera. N'hésite pas à demander si des choses te paraissent floues, à force de travailler en objet je ne connais plus que ça. Le principe est toujours d'en faire le plus possible dans les classes "métier" (comme myDatabase ici) pour en avoir le moins à écrire dans les fichiers où on récupère et affiche le résultat final.
diice
Messages postés
131
Date d'inscription
lundi 17 novembre 2003
Statut
Membre
Dernière intervention
25 février 2017
1
4 janv. 2012 à 10:02
4 janv. 2012 à 10:02
<citation>Ah enfin des questions intéressantes ^^ </citation>
merci :) je me trouvai pourtant assez bete de poser ce genre de question ! :)
et en tout cas merci beaucoup !
ta proposition m'aide beaucoup en terme de compréhension du sujet, et en terme pédagogique. c tres clair !
je vasi essayer de me trouver ou de faire une petite class DataBase, et appliquerai ton exemple pour le reste .
je pense que je tiens le bon bout !
je reviendrai ici pour y mettre ma solution, ca peut toujours servir puisque je ne la trouve nulle part ailleurs !
merci encore !
merci :) je me trouvai pourtant assez bete de poser ce genre de question ! :)
et en tout cas merci beaucoup !
ta proposition m'aide beaucoup en terme de compréhension du sujet, et en terme pédagogique. c tres clair !
je vasi essayer de me trouver ou de faire une petite class DataBase, et appliquerai ton exemple pour le reste .
je pense que je tiens le bon bout !
je reviendrai ici pour y mettre ma solution, ca peut toujours servir puisque je ne la trouve nulle part ailleurs !
merci encore !
AssassinTourist
Messages postés
5710
Date d'inscription
lundi 16 janvier 2012
Statut
Contributeur
Dernière intervention
29 février 2024
1 311
2 févr. 2012 à 15:12
2 févr. 2012 à 15:12
Bonjour,
Avez-vous trouvé la solution ?
Avez-vous trouvé la solution ?