begin process at 2012 05 31 04:53:13
  Trouver un code source :
 
dans
 
Accueil > Forum > 

PHP

 > 

POO

 > 

Classes & Objets

 > 

Pb avec la class de news de FhX


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Pb avec la class de news de FhX

mercredi 16 juillet 2008 à 17:15:17 | Pb avec la class de news de FhX

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 news posté par FhX (lien sur phpcs)

Super leçon d'architecture Web en PHP, utilisation des design pattern (Factory, Singleton) mais je suis perdu lorsqu'il faut l'utiliser...

en gros mon problème est :
comment on récupère le resultat quand on fait un getMultipleNews(0,3) ?

j'ai comme code :

$NewsFactory = new NewsFactory();
$news = $NewsFactory->GetMultipleNews(0,3);
var_dump($news);

le truc c'est que le var_dump me renvoi bien un array mais qu'avec une seule news dedans... ! je comprends pas pourquoi...

Ensuite comment on fait pour utiliser la méthode AddNews, le truc c'est que cette méthode est typé NewsObject d'accord donc quand je fais ça est-ce correct ?

Code:
$monActu  = array("titre"=>"Un test de titre", "contenu"=>"Un contenu");
$ajoutActu = new NewsObject($monActu);

$NewsFactory = new NewsFactory();
$news = $NewsFactory->AddNews($ajoutActu);

je sais pas si c'est bon mais ça fonctionne pas !

Bref, si quelqu'un avait des réponses et/ou des solutions, se serait merveilleux !!!

Merci de votre aide, moi je suis dans le brouillard et là je vois plus rien

Nicolas

ps: j'ai posté un commentaire demandant des exemples, je lui ai écrit un message privé et maintenant je poste sur le forum... je sais je suis un boulet !


jeudi 17 juillet 2008 à 12:40:12 | Re : Pb avec la class de news de FhX

codefalse

Administrateur CodeS-SourceS
$news = $NewsFactory->GetMultipleNews(0,3);
$news ne retourne qu'une valeur car il faut itérér dessus pour avoir les autres
si tu fait un
foreach ($news as $new) {
var_dump ($new);
}

tu devrais avoir 3 var_dump d'affiché

Pour ton probleme d'ajout de news, ca devrait marcher
que te retourne un
var_dump ($ajoutActu); ?


[ Lien ]
jeudi 17 juillet 2008 à 14:10:28 | Re : Pb avec la class de news de FhX

acidline

grand merci à toi de t'interessser à mon problème !
je desesperé de plus en plus ...

sinon mauvaise nouvelle... j'ai déjà essayé de boucler avec foreach et le truc c'est que ça ne fonctionne pas

Voici ce que me retourne le var_dump dans le foreach

//actu 3
int(3)
string(18) "Une troisième actu"
string(33) "et c'est parti pour la troisièmre"
string(10) "2008-07-16"
string(10) "2008-07-16"

//actu 2
NULL

//actu 1
NULL

c'est louche non ?!!!!

var_dump($ajout_actu) me retourne bien un objet de type NewsObject

object(NewsObject)#3 (7) {
     ["id"]=> int(0)
     ["titre"]=> string(16) "Un test de titre"
     ["contenu"]=> string(10) "Un contenu"
     ["dateInsertion"]=> NULL
     ["dateModification"]=> NULL
     ["publication"]=> NULL
     ["validation"]=> NULL
}
 le truc c'est que rien ne s'insère en base...
jeudi 17 juillet 2008 à 14:23:04 | Re : Pb avec la class de news de FhX

codefalse

Administrateur CodeS-SourceS
A en voir le code, le problème se situerait dans son code.
En effet, par défaut, la sortie est un objet.
Il fait un fetch_array (return $this->{$this->_option['outputMethod']}( $this->db->fetch_array() ); ) dans la méthode toObject, qui fait instancie la classe NewsObject avec le tableau en parametre.
Le probleme, c'est que NewsObject n'est là que pour une entrée. Il devrait faire plusieurs instances de NewsObject. Donc voila pourquoi tu n'a qu'une entrée !

Tu utilise quoi pour l'acces à la base de donnée ?
Parce que Fhx utilise une classe propre à lui apparement, tu l'a récupérée aussi ?

Personnellement, à moin bien t'y connaitre en poo, tu peux changer de classe :p

Pour récuperer les valeurs tu peux directement utiliser les tableaux et dans getMultipleNews, tu peux remplacer return $this->{$this->_option['outputMethod']}( $this->db->fetch_array() );  par return $this->db->fetch_array(); (en espérant qu'il te retourne un array complet)

Si tu veux passer par la classe NewsObject, va falloir implémenter du Iterator :p

Tu peux aussi contacter Fhx (en mp ou sur sa source directement) afin de lui indiquer que sa source à quelques problemes en espérant qu'il aie le temps de la remettre à jour :)

[ Lien ]
jeudi 17 juillet 2008 à 14:31:58 | Re : Pb avec la class de news de FhX

acidline

c'est exactement ce que je ne voulais pas entendre !!!

en effet j'utilise ma propre class mysql, je savais (et tu me l'as confirmé)  que le problème venait de l'instanciation des objets NewsFactory, en fait tel quel, le resultat précédent et écrasé par le resultat suivant, d'ou la récuperation unique de la dernière actu demandé.

ta solution est valide, je l'ai essayé, mais c'est un peu bête de sortir de la fabrique sans passé par une sortie NewsObject !!!!

j'ai déjà demandé de l'aide à FhX en message privé mais il ne m'a pas donné signe de vie (et oui les vacances !)

je vais plancher sur Iterator, ça va donner l'occasion de l'implémenter...

je reste quand même ouvert aux solutions !!! plus on est de fous, plus on rit !

Merci à toi CodeFalse

Nico
jeudi 17 juillet 2008 à 14:33:24 | Re : Pb avec la class de news de FhX

acidline

je viens de me relire, pardon pour les fautes !!! l'émotion, surement !
jeudi 17 juillet 2008 à 14:48:40 | Re : Pb avec la class de news de FhX

codefalse

Administrateur CodeS-SourceS
Je sais pas si tu à déjà joué avec des itérator en php. Si non je peux te donner une idée de structure pour le code de Fhx et donner quelque chose d'a peu pres fonctionnel.

Tu va faire une classe NewsIterator (par exemple) qui implémente Iterator, Seekable (optionnel) et Countable.

Tu implémente toutes les fonctions nécéssaire (renseigne toi du coté de la spl pour cela). Tu fait un constructeur qui accepte un tableau en entrée, tableau que tu stockera dans une variable privée.

Chaque appel à la  méthode current retournera une instance de NewsObject avec le tableau $aTableau[$iIndex]. $iIndex étant un variable qui indique l'index de la position dans le tableau (qui démarre à -1 lors de l'instanciation, et qui est incrémenté de +1 à chaque appel de next).

Je te conseil par ailleur d'éviter de faire return new NewsObject ($aTableau[$iIndex]) dans la méthode current, au cas ou l'utilisateur ferait plusieurs fois appel à current.
Mais plutot de mettre dans next un truc du genre
$this->_iIndex++;
$this->_oCurrentNewsObject = new NewsObject ($aTableau[$this->iIndex]) ;

et de ne retourner que $this->_oCurrentNewsObject lors de l'appel à current ();

count () retourne count ($this->_aTableau);

Et dans la méthode GetMultipleNews de Fhx, tu fait
return new NewsIterator ($this->db->fetch_array());

Bon du coup tu perd toute la possibilité de l'option Objet/Xml mais bon ...

[ Lien ]
jeudi 17 juillet 2008 à 15:27:31 | Re : Pb avec la class de news de FhX

acidline

ok je vais tenter un truc du genre !

mais j'ai menti avant en fait tu m'as dit

Pour récuperer les valeurs tu peux directement utiliser les tableaux et dans getMultipleNews, tu peux remplacer returnoutputMethod']}( $this->db->fetch_array() );  par return $this->db->fetch_array(); $this->{$this->_option['(en espérant qu'il te retourne un array complet)

oups ! le truc retourne pas un arret complet ! ce que je ne comprends pas...

je vais tenter de créer la class IteratorNews... je te tiens au jus... j'espere que tu vas avoir encore un peu temps à me consacrer !

nico
jeudi 17 juillet 2008 à 16:29:20 | Re : Pb avec la class de news de FhX

acidline

j'ai essayé de faire un truc mais j'ai pas encore pu tester (et oui on me dérange toutes les 2min)

class NewsIterator implements Iterator, Countable {

    private $mesActus = array();
    private $position = 0;
    private _oCurrentNewsObject;
   
    //constructeur
    public function __construct($mesActus) {
        if(is_array($mesActus) {
            $this->mesActus = $mesActus
        }
    }
   
    //rambobine le tableau
    public function rewind() {
        reset($this->mesActus);
    }

    //retourne la position courante
    public function current() {
        return $this->_oCurrentNewsObject;
     }
   
    //retourne la clé
    public function key() {
        $mesActus = key($this->mesActus);
        return $mesActus;
     }
   
    //accéde à la position suivante
    public function next() {
        $this->position++;
        $this->_oCurrentNewsObject = new NewsObject($this->mesActus[$this->position]) ;
     }
   
    //valide l'objet en cours
      public function valid() {
        $mesActus = $this->current() !== false;
        return $mesActus;
     }
     
    //méthode pour compter les objets
    public function count() {
        return sizeof($this->mesActus);
    }
}

tu peux corriger le truc, je commence à comprendre l'interet des Iterateurs...

nico
jeudi 17 juillet 2008 à 21:35:23 | Re : Pb avec la class de news de FhX

codefalse

Administrateur CodeS-SourceS
//retourne la clé
    public function key() {
        $mesActus = key($this->mesActus);
        return $mesActus;
     }

pourquoi ne pas faire
return key($this->mesActus);

    //valide l'objet en cours
      public function valid() {
        $mesActus = $this->current() !== false;
        return $mesActus;
     }
idem

Après je n'ai rien de spécial à dire, ton code est correct.
Comme tu le vois, c'est ultra simple d'utiliser les itérateurs, et c'est super utile et très puissant !!!! :)

Par ailleur, les itérateurs, c'est qu'un début ! Ca fait partie de la Spl, si tu jete un oeil aux autres possibilités, tu va voir que les options sont infinies.

Par contre, ne pas oublier, php doit tourner en 5.2 !! (T'a vérifié sur ton serveur ? (je parle en connaissance de cause :p))

Courage en tout cas :)



[ Lien ]

1 2 3 4

Cette discussion est classée dans : class, utiliser, news, newsfactory, fhx


Répondre à ce message

Sujets en rapport avec ce message

Include, class et array [ par Hades5k ] Bonjour! J'ai un petit problème à utiliser un array dans un fichier que j'inclus... voici un peu le code : $classNames = array(); include_once('inc/ma 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 Découverte POO [ par kyript ] Bonjour à tousje post ici afin que vous donniez un avis sur la méthode utiliser...Je tente d'afficher des news sur mon site, j'ai donc les pages suiva 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 valeurs des ch Utiliser un bouton flash avec du javascript ? [ par Atomos83 ] Bonjour, voila j'ai un petit soucis que je n'arrive pas a résoudre : J'ai créer un boutton flash, j'aimerais pouvoir mettre une condition onClick des Move_upload_files [ par klerdesign ] Salut, Je travaille actuellement avec move_upload_files. Par un bouton "parcourir", j'insère dans ma table "news" une image. Or elle ne s'affiche pas News de Phpcs. [ par Arnauti ] Bonjour, je voudrais savoir s'il est possible de récupérer les news de phpcs sur <span id="gtbmisp_8" style="border: 0pt none ; margin: 0pt; padding: Erreur de formulaire PHP [ par Soul EX ] Bonjour à tous,voici le code sur lequel j'ai travaillé : switch (TRUE) {case ($class_officiel>$class_maj & aller a la racinne du site... [ par mictif ] bonjour, j'ai une question toute simple : je connais ../pages.php mais au lieux d'utiliser ../../../../page.php, j'aimerais utiliser une autre command Problème avec la fonction GET [ par darkwisk ] Salut à tous,Je vais essayer de faire court....Je mets en place un système de news sur mon site, fait deux fichiers PHP et Mysql, le 1er "infos.php" l


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,359 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales