begin process at 2012 05 30 22:35:49
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive PHP

 > 

Archives

 > 

Débutants

 > 

objet


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

objet

mercredi 13 juillet 2005 à 09:45:05 | objet

crazykamel

Salut à tous !
Comment je peux récupérér un attribut d'un objet ? Cette ligne est correcte ?

echo "<tr><td>Adresse e-mail: </td><td><input type=text name=email value=".$OMembre->mail."></td></tr>"; //avant j'avais $row[7] à la place.

mercredi 13 juillet 2005 à 09:54:25 | Re : objet

malalam

Administrateur CodeS-SourceS
Hello,

oui, si tu veux acceder a une propriete membre d'un objet, tu dois bien faire ca.

$objet -> propriete

Apres, mieux t'aider impliquerait de savoir comment est structuree la classe.

Est-ce que ta ligne est correcte...heu...plus ou moins. Moi je sortirais le php, la, et tes attributs n'ont pas de guillemets :
<tr><td>Adresse e-mail: </td><td><input type="text" name="email" value="<?php echo $OMembre->mail; ?>" /></td></tr>




mercredi 13 juillet 2005 à 10:47:31 | Re : objet

crazykamel

Notice: main() [function.main]: The script tried to execute a method or access a property of an incomplete object. Please ensure that the class definition "BDMembres" of the object you are trying to operate on was loaded _before_ unserialize() gets called or provide a __autoload() function to load the class definition in d:\kalisport\KaliNet\site\espace_membre\infos_perso.php on line 29

il le prend pas. Je te met ma classe AllMembre

<?php
require_once('BDmembres.php');
class ClassAllMembres {
    private $_proprietes = array('_TOMembres','_dataOK');

    public function __construct() {
        $this->_TOmembres = array();
        $this->_dataOK = $this->chargerAllMembres();
    }
   
    public function chargerAllMembres() {
        $req = 'SELECT * FROM membres';
        if (!$result = $GLOBALS['_hBD']->executerRequeteRes($req)) {
            echo 'Aucun membre chargé pour S' . $this->_id_membre .'<br>';
            return false;
        }
        foreach ($result as $row) {
            $this->_TOMembres [$row['id_membre']] = new BDMembres($row['id_membre'],$row['nom'],$row['prenom'],$row['sexe'],$row['naissance'],$row['cp'],$row['mail'],$row['mdp'],$row['url'],$row['infos_comp'],$row['url'],$row['tel']);   
        }
        return true;
    }
   
    public function authentifier($mail, $mdp){
        foreach ($this->_TOMembres as $OMembre) {
            if ($OMembre->_mail == $mail and $OMembre->_mdp == $mdp) return $OMembre;
        }
        return false;
    }
}
?>
mercredi 13 juillet 2005 à 10:48:16 | Re : objet

crazykamel

dsl pour l'allure de mon code en postant ç'est parti en sucette.
mercredi 13 juillet 2005 à 11:00:16 | Re : objet

garfield90

Salut,

connais tu la POO, car moi en tant qu'interpreteur PHP je capte

propriétés :
    $_proprietes[0] = '_TOMembres';
    $_proprietes[1] = '_dataOK';
 
méthodes :
    __construct()
    chargerAllMembres()
   authentifier($mail, $mdp);

de plus dans ta methode authentifier, tu utilises $OMembre->_mail, essaye avec ca mais je ne garantis rien

Au fait as tu testé tes différentes méthodes, je ne suis pas sur que ca marche.
Si tout marche, je voudrais bien que tu m'expliques comment t'as fait car, je pense comprendre ton idée mais je vois pas comment ca marche dans le cas présent

"They are 10 sorts of persons whose understand binary and whose not"
mercredi 13 juillet 2005 à 11:26:44 | Re : objet

malalam

Administrateur CodeS-SourceS
Hello,

ouais, plusieurs problemes la.
En effet tes variables membres ne sont pas correctes. De plus, ton $proprietes est prive, et ne peut donc pas etre accede a l'exterieur de ta classe.
Tu dois declarer au moins public ce membre :
public $TOMembres;

Apres dans ton constructeur, tu peux mettre ca :
$this->_TOmembres = array();

et acceder a _TOmembres a l'exterieur de ta classe.
Ensuite quand tu utilises ca :
$GLOBALS['_hBD']->executerRequeteRes($req)

$GLOBALS['_hBD'], c'est quoi ? C'est bien un objet declare...? Ou ? Quand ?
Ensuite, tu fais de _TOmembres un tableau indice avec l'id d'un utilisateur, contenant un objet avec des proprietes que l'on ne connait pas.
Mettons que BDmembre aient une propriete : public $email dans lequel tu mets le resultat de $row['email'], tu y accederas, si tu veux passer par cette classe, ainsi :
echo $objetMembre -> _TOmembres[$idmembre] -> email;

Mais je suis comme Garfield, je ne suis pas sur que ton bazar fonctionne, et ca me semble bien complique comme facon de faire.
mercredi 13 juillet 2005 à 14:49:47 | Re : objet

crazykamel

Je suis obligé de me servir de ces classes car on est plusieurs à s'en servir. Par contre ce qui est chiant, c'est d'avoir à recoder un espace membre fonctionnel en objet...
Alors je vais vous mettre les classes dont je me sers.

//ClassAllMembres
<?php
require_once('BDmembres.php');
class ClassAllMembres {
    public $_proprietes = array('_TOMembres','_dataOK'); //Je l'ai passé en public comme demandé
    public function __construct() {
        $this->_TOmembres = array();
        $this->_dataOK = $this->chargerAllMembres();
    }
   
    public function chargerAllMembres() {
        $req = 'SELECT * FROM membres';
        if (!$result = $GLOBALS['_hBD']->executerRequeteRes($req)) {
            echo 'Aucun membre chargé <br>';
            return false;
        }
        foreach ($result as $row) {
            $this->_TOMembres [$row['membreID']] = new BDMembres($row['membreID'],$row['nom'],$row['prenom'],$row['sexe'],$row['naissance'],$row['cp'],$row['mail'],$row['mdp'],$row['url'],$row['infos_comp'],$row['tel']);   
        }
        return true;
    }
   
    public function authentifier($mail, $mdp){
        foreach ($this->_TOMembres as $OMembre) {
            if ($OMembre->_mail == $mail and $OMembre->_mdp == $mdp) return $OMembre;
        }
        return false;
    }
}
?>

////Class BDMembre
public $_proprietes = array('_membreID', '_nom', '_prenom', '_sexe', '_naissance', '_cp', '_mail', '_mdp', '_url', '_infos_comp', '_tel');
    //constructeur
    public function __construct($membreID = DUMMY_INT, $nom = DUMMY_INT, $prenom = DUMMY_INT, $sexe = DUMMY_INT, $naissance = DUMMY_INT, $cp = DUMMY_INT, $mail = DUMMY_INT, $mdp = DUMMY_INT, $url = DUMMY_INT, $infos_comp = DUMMY_INT, $tel = DUMMY_INT) {
        if ($membreID == DUMMY_INT or $nom == DUMMY_INT or $prenom == DUMMY_INT or $sexe == DUMMY_INT or $naissance == DUMMY_INT or $cp == DUMMY_INT or $mail == DUMMY_INT or $mdp == DUMMY_INT or $url == DUMMY_INT or $infos_comp == DUMMY_INT or $tel == DUMMY_INT) {
            if ($membreID == DUMMY_INT) {
                    echo 'membreID non renseigné dans la construction de la classe BDMembres<br>';
            }   
            if ($nom == DUMMY_INT) {
                    echo 'nom non renseigné dans la construction de la classe BDMembres<br>';
            }
            if ($prenom == DUMMY_INT) {
                    echo 'prenom non renseigné dans la construction de la classe BDMembres<br>';
            }
            if ($sexe == DUMMY_INT) {
                    echo 'sexe non renseigné dans la construction de la classe BDMembres<br>';
            }
            if ($membreID == DUMMY_INT) {
                    echo 'naissance non renseigné dans la construction de la classe BDMembres<br>';
            }
            if ($cp == DUMMY_INT) {
                    echo 'membreID non renseigné dans la construction de la classe BDMembres<br>';
            }
            if ($mail == DUMMY_INT) {
                    echo 'membreID non renseigné dans la construction de la classe BDMembres<br>';
            }   
            if ($mdp == DUMMY_INT) {
                    echo 'membreID non renseigné dans la construction de la classe BDMembres<br>';
            }
            if ($url == DUMMY_INT) {
                    echo 'membreID non renseigné dans la construction de la classe BDMembres<br>';
            }
            if ($infos_comp == DUMMY_INT) {
                    echo 'membreID non renseigné dans la construction de la classe BDMembres<br>';
            }
            if ($tel == DUMMY_INT) {
                    echo 'membreID non renseigné dans la construction de la classe BDMembres<br>';
            }               
            throw new Exception();   
        }       
        $this->_TOmembres = array(); //rajouté comme conseill
        $this->_membreID = $membreID;
        $this->_nom = $nom;
        $this->_prenom = $prenom;
        $this->_sexe = $sexe;
        $this->_naissance = $naissance;
        $this->_cp = $cp;
        $this->_mail = $mail;
        $this->_mdp = $mdp;
        $this->_url = $url;
        $this->_infos_comp = $infos_comp;
        $this->_tel = $tel;
    }
   
    public function __set($nom, $valeur ) {
        if (!in_array($nom,$this->_proprietes,true)) {
            echo 'propriete ' .$nom .' INCONNUE pour objet Membres<br>';
            throw new Exception();
        }
        $this->_proprietes[$nom] = $valeur;
    }

    public function __get($nom) {
        if (!in_array($nom,$this->_proprietes,true)) {
            echo 'propriete ' .$nom .' INCONNUE pour objet Membres<br>';
            throw new Exception();
        }
        return $this->_proprietes[$nom];
    }
}
?>

////////////////////

$GLOBALS['_hBD'] c'est un objet de connexion à la base
Voilà comment je gère la connexion d'un membre

$GLOBALS['_hBD'] = new ClassBD();
    $OAllmembres = new ClassAllMembres();
    if (!$OMembre = $OAllmembres->authentifier($mail,$mdp)) {
        echo "<br><br><center><font color='#990000'>Erreur cet email (et/ou mot de passe) est incorrect!</font></center><br>";
    }
    else {
        //connexion établie
        //-------------Cookies-----------------
        setcookie('mail', $mail, time()+2592000); //délai d'un mois
        setcookie('mdp', $mdp, time()+2592000);
        //-------------Session-----------------
        $_SESSION['OMembre']= $OMembre;//je m'en sers comme variable de session, comme ça je peux (je voudrais) accéder à ses propriétés
        header('Location: espace_membre.php?page=3');//redirection page membre
mercredi 13 juillet 2005 à 15:11:04 | Re : objet

garfield90

Es tu sur que tes classes fonctionnent ( ce qui ne veut pas dire pas de probleme de parsage )

teste toutes tes methodes et regardes si les propriétés ont bien les valeurs attendues.

perso, je ferai plutot une classes dans ce genre.

<?php
require_once('BDmembres.php');
class ClassAllMembres {

// déclaration de mes propriétés
    private $_TOMembres:
    private $_dataOK;

// déclaration des méthodes
 private function  __construct()
{
        $this->_TOmembres = array();
        $this->_dataOK = $this->chargerAllMembres();
}

etc.

car dans ton cas, je crois que pour acceder a tes propriétés tu dois faire

 private function  __construct()
{
        $this->_proprietes[0] = array(); // _TOmembres
        $this->_proprietes[1] = $this->chargerAllMembres(); // _dataOK
}

ce que je ne trouve pas très lisible mais bon, j'ai pas tester et je trouve que ton source n'est pas très clair.

en fait, je ne ferai pas une classe spécifique classAllMembres mais une fonctions qui retourne un tableau d'objet

genre
private function listAllMembre()
{
    // requetes qui recupere les id de tous les membres
    while ( $array = mysql_fetchrow($result)  )
    {
       $ret[] = new membre($array['id']);
    }
    return $ret;
}

utilisation :
$tab_listMembres = $objMembre->listAllMembres();
foreach ( $tab_listMembres as $objUnMembre )
{
    echo $objUnMembre->id,' - ', $objUnMembre->nom,'<br />';
}

sachant que toujours perso, je fais une methode de lecture et d'ecriture de chaque propriété

Fais ce que tu veux de ces pistes, je pense que tu es parti sur une mauvaise base pour l'utilisation des objets.

Vois avec tes collegues pour qu'il t'explique la facon dont il utilise la classe car moi je la comprends pas des masses

"They are 10 sorts of persons whose understand binary and whose not"
jeudi 14 juillet 2005 à 08:45:54 | Re : objet

malalam

Administrateur CodeS-SourceS
Hello,

class ClassAllMembres {
    public $_proprietes = array('_TOMembres','_dataOK'); //Je l'ai passé en public comme demandé
    public function __construct() {
        $this->_TOmembres = array();
        $this->_dataOK = $this->chargerAllMembres();
    }

oui mais non, lol.
Oublions la classe, voila tres exactement ce que tu fais avec de la programmation...heu..."normale"... :

$tableau = array ('toto', 'tata');

$toto = array ();
$tata = '123';

Et tu crois que $toto et $tableau['toto'] sont la meme chose, mais ce n'est pas le cas!

_TOmembres est un des index de la propriete membre $_proprietes, tu ne peux pas y faire appel comme tu le fais :
$this -> _TOmembres

parce que cette propriete n'existe pas!

ce qui existe par contre :
$this -> _proprietes['_TOmembres']
ca oui.

Tu confonds, etrangement, tableaux et variables, la.



Cette discussion est classée dans : mail, objet


Répondre à ce message

Sujets en rapport avec ce message

envoi page par mail [ par ag3c ] j'ai une page dynamique crée à la volée sur laquelle j'ai crée un bouton "envoyer cette page" quand on clique dessus cela ouvre une petite fenêtre où mail et ovh [ par Nicorad ] Bonjour à tous, voila j'ai essayé de créer un formulaire de contact, et je veux que les données soit envoyé sur une de mes adresses mail.J'ai essayé a envoi de mails prédéfinis [ par vegetalain ] Salut, je mets ma question dans divers car je ne sais pas trop où la mettre sinon. voilà, j'aimerais faire en sorte que, à des jours prédéfinis (les 1 envoi de mail [ par abdouinfomiage ] slt les amis j veux envoyer un e-mail sous php mais ca marche pas j utilise le code suivant: envoi.php:http: Formulaire et envoi de mail [ par Becca ] Bonjour,J'ai fait un formulaire qu'une fois remplit ça m'envoie un mail (fonction mail()). Il y a le champ nom, objet, adresse et message.Je reçois bi Formulaire et envoi de mail [ par Becca ] Bonjour, j'ai un petit problème avec le formulaire. En fait quand les personnes remplissent le formulaire je voudrais recevoir par mail leur réponse. Impossible de rediriger une page [ par frazeks1989 ] Bonjour,J'ai un problème avec une fonction mail qui est censsé rediriger simplement vers une page(error_mail.html) au cas que tous les champs n'ont pa mail de confirmation plus piece jointe [ par sarita1987 ] Bonjour à tous j'ai créé un formulaire d'insertion qui conserne la déclaration d'un sinistre pour un site d'assurance plus sa base de donnéesje voudra Mail php, tableau html et fichiers xls [ par chrrod ] Bonjour,Voici mon problème:Je désire envoyer un mail contenant des fichiers xls présentés dans un tableau de deux colonnes, une contenant les titres e e-mail automatique [ par yohanndu56 ] Bonjour j'ai un site internet je voudrait mettre un code php ou html sur une de mes page web qui envoi un e-mail a moi et a celui qui est sur la page


Nos sponsors


Sondage...

Comparez les prix

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,499 sec (3)

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