IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

[POO] objet rempli mais rien quand je l'affiche


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Profil pro
    Developpeur
    Inscrit en
    Septembre 2004
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Developpeur

    Informations forums :
    Inscription : Septembre 2004
    Messages : 114
    Points : 43
    Points
    43
    Par défaut [POO] objet rempli mais rien quand je l'affiche
    Bonsoir,

    J'ai un petit problème avec CodeIgniter mais qui s'apparente à un problème général de POO.

    Mon objet est déclaré dans une classe dont voici le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
     
    <?php
    class Mdl_Contact extends Model {
     
       	var $id   = '';
    	var $societe   = '';
    	var $secteur   = '';
    	var $nom   = '';
    	var $prenom   = '';
    	var $adresse   = '';
    	var $code_postal   = '';
    	var $tel   = '';
    	var $fax   = '';
    	var $port   = '';
    	var $email   = '';
    	var $societe_technique   = '';	
    	var $nom_technique   = '';
    	var $prenom_technique   = '';
    	var $adresse_technique   = '';
    	var $code_postal_technique   = '';
    	var $tel_technique   = '';
    	var $fax_technique   = '';
    	var $email_technique   = '';
     
     
        function Mdl_Contact()
        {
            // Call the Model constructor
            parent::Model();
     
     
        }
     
    	function save() {
     
     
            $db_array = array(
            "id" => $this->id,
            "societe" => $this->societe,
            "secteur" => $this->secteur,
            "nom" => $this->nom,
            "prenom" => $this->prenom,
            "adresse" => $this->adresse,
            "code_postal" => $this->code_postal,
            "tel" => $this->tel,
            "fax" => $this->fax,
            "port" => $this->port,
            "email" => $this->email,
            "societe_technique" => $this->societe_technique,
            "nom_technique" => $this->nom_technique,
            "prenom_technique" => $this->prenom_technique,
            "adresse_technique" => $this->adresse_technique,
            "code_postal_technique" => $this->code_postal_technique,
            "tel_technique" => $this->tel_technique,
            "fax_technique" => $this->fax_technique,
            "email_technique" => $this->email_technique 
     
            );
     
     
            // If mdl_contacts->contact_id was set in the controller, then we will update an existing record.
            if ($this->id) {
                $this->db->where("id", $this->id);
                $this->db->update("contacts", $db_array);
            }
     
            // If mdl_contacts->contact_id was not set in the controller, then we will insert a new record.
            else {
                $this->db->insert("contacts", $db_array);
            }
     
        }
     
     
        function toString(){
     
        	$tmp = "<ul>";
     
        	foreach(get_class_vars(get_class($this)) as $key=>$value) { 
    	        	if($key != "_parent_name") { 
    	        		$val = $this->$key; 
    	        		$tmp .= "<li>".$key." : ".$value."</li>";
    	        	} 
    	    } 
    	    $tmp .= "</ul>";
        	echo $tmp;
        }
     
    }
    ?>
    Mon code qui créer l'instance de 'lobjet et le rempli est le suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
     
     
    // Enregistrement dans la session
    			$contact =& new Mdl_Contact();			
    			$contact->societe = $this->input->post('societe') ;
                $contact->secteur = $this->input->post('secteur') ;
                $contact->nom = $this->input->post('nom') ;
                $contact->prenom = $this->input->post('prenom') ;
                $contact->adresse = $this->input->post('adresse') ;
                $contact->code_postal = $this->input->post('code_postal') ;
                $contact->tel = $this->input->post('tel') ;
    	        $contact->fax = $this->input->post('fax') ;
                $contact->port = $this->input->post('port') ;
                $contact->email = $this->input->post('email') ;
                $contact->societe_technique = $this->input->post('societe_technique') ;
                $contact->secteur_technique = $this->input->post('secteur_technique') ;
                $contact->nom_technique = $this->input->post('nom_technique') ;
                $contact->prenom_technique = $this->input->post('prenom_technique') ;
    	        $contact->adresse_technique = $this->input->post('adresse_technique') ;
                $contact->code_postal_technique = $this->input->post('code_postal_technique') ;
                $contact->tel_technique = $this->input->post('tel_technique') ;
                $contact->fax_technique = $this->input->post('fax_technique') ;
                $contact->port_technique = $this->input->post('port_technique') ;
                $contact->email_technique = $this->input->post('email_technique');
                $contact->toString();
    			echo "societe : form=".$this->input->post('secteur')." | objet=".$contact->secteur ;
    Comme vous pouvez le constater j'appel la méthode toString() à la fin des affectations ainsi qu'un echo basique pour vérifier une donnée issue du formulaire et le contenu du contact.

    Le problème réside dans le fait que la méthode toString() n'affiche aucune valeur issue du formulaire alors que lors du echo les deux affichages fonctionnent parfaitement ?
    id :
    societe :
    secteur :
    nom :
    prenom :
    adresse :
    code_postal :
    tel :
    fax :
    port :
    email :
    societe_technique :
    nom_technique :
    prenom_technique :
    adresse_technique :
    code_postal_technique :
    tel_technique :
    fax_technique :
    email_technique :
    societe : form=qsc | objet=qsc

    Merci d'avance pour votre aide.

    Louis

  2. #2
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2006
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Février 2006
    Messages : 81
    Points : 154
    Points
    154
    Par défaut
    Salut,
    get_class_vars retourne les valeurs par défaut des propriétés d'une classe, cependant tes valeurs par défaut ont la valeur emptystring, normal quoi

  3. #3
    Membre du Club
    Profil pro
    Developpeur
    Inscrit en
    Septembre 2004
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Developpeur

    Informations forums :
    Inscription : Septembre 2004
    Messages : 114
    Points : 43
    Points
    43
    Par défaut
    Par contre quand j'utilise la fonction save en base de données rien n'est entré donc il y a quand meme un problème lors du remplissage non ?

  4. #4
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2006
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Février 2006
    Messages : 81
    Points : 154
    Points
    154
    Par défaut
    Salut,
    essaye d'ajouter un !empty à "$this->id"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    // If mdl_contacts->contact_id was set in the controller, then we will update an existing record.
            if (!empty($this->id)) {
                $this->db->where("id", $this->id);
                $this->db->update("contacts", $db_array);
            }

  5. #5
    Membre du Club
    Profil pro
    Developpeur
    Inscrit en
    Septembre 2004
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Developpeur

    Informations forums :
    Inscription : Septembre 2004
    Messages : 114
    Points : 43
    Points
    43
    Par défaut
    Quand je dis que rien n'est entré en fait les valeurs sont vides pour le tuple inséré. Donc les données sont bien inserées mais rien dans les attributs

  6. #6
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2006
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Février 2006
    Messages : 81
    Points : 154
    Points
    154
    Par défaut
    Salut,
    J'ai jamais utilisé CodeIgniter, mais je constate que tu n'appelles pas la fonction save(), car $db_array est défini dans cette fonction, est ce que CodeIgniter appelle cette fonction implicitement ? si ce n'est pas le cas, tu dois appeler cette fonction pour instancié ton $db_array.

  7. #7
    Membre du Club
    Profil pro
    Developpeur
    Inscrit en
    Septembre 2004
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Developpeur

    Informations forums :
    Inscription : Septembre 2004
    Messages : 114
    Points : 43
    Points
    43
    Par défaut
    Il s'agit d'une partie du formulaire qui consiste à enregistrer l'instance du modèle Contact en session. Donc la méthode save() est appelée plus loin dans le code.

    Merci de ton aide

  8. #8
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2006
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Février 2006
    Messages : 81
    Points : 154
    Points
    154
    Par défaut
    salut,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
     
    <?php
    class Mdl_Contact extends Model {
     
       	var $id   = '';
    	var $societe   = '';
    	var $secteur   = '';
    	var $nom   = '';
    	var $prenom   = '';
    	var $adresse   = '';
    	var $code_postal   = '';
    	var $tel   = '';
    	var $fax   = '';
    	var $port   = '';
    	var $email   = '';
    	var $societe_technique   = '';	
    	var $nom_technique   = '';
    	var $prenom_technique   = '';
    	var $adresse_technique   = '';
    	var $code_postal_technique   = '';
    	var $tel_technique   = '';
    	var $fax_technique   = '';
    	var $email_technique   = '';
     
     
        function Mdl_Contact()
        {
            // Call the Model constructor
            parent::Model();
     
     
        }
     
    	function save() {
     
            $db_array = array(
            "id" => $this->id,
            "societe" => $this->societe,
            "secteur" => $this->secteur,
            "nom" => $this->nom,
            "prenom" => $this->prenom,
            "adresse" => $this->adresse,
            "code_postal" => $this->code_postal,
            "tel" => $this->tel,
            "fax" => $this->fax,
            "port" => $this->port,
            "email" => $this->email,
            "societe_technique" => $this->societe_technique,
            "nom_technique" => $this->nom_technique,
            "prenom_technique" => $this->prenom_technique,
            "adresse_technique" => $this->adresse_technique,
            "code_postal_technique" => $this->code_postal_technique,
            "tel_technique" => $this->tel_technique,
            "fax_technique" => $this->fax_technique,
            "email_technique" => $this->email_technique);
     
            if ($this->id) {
                $this->db->where("id", $this->id);
                $this->db->update("contacts", $db_array);
            } else {
                $this->db->insert("contacts", $db_array);
            }
     
        }
     
        function toString(){
     
        	$tmp = "<ul>";
     
        	foreach(get_class_vars(get_class($this)) as $key=>$value) { 
    	        	if($key != "_parent_name") { 
    	        		$val = $this->$key; 
    	        		$tmp .= "<li>".$key." : ".$value."</li>";
    	        	} 
    	    } 
    	    $tmp .= "</ul>";
        	echo $tmp;
        }
     
    }
    ?>
    donc comme ça les requêtes s'exécutent lors l'appel de save(), ça doit marcher maintenant.

  9. #9
    Membre du Club
    Profil pro
    Developpeur
    Inscrit en
    Septembre 2004
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Developpeur

    Informations forums :
    Inscription : Septembre 2004
    Messages : 114
    Points : 43
    Points
    43
    Par défaut
    Désolé mais je ne vois aucune modification par rapport à mon code et comme le mien ne fonctionne pas

Discussions similaires

  1. [AC-2007] Afficher PDF dans formulaire, ok mais rien quand trop de pages ?
    Par nicburger dans le forum IHM
    Réponses: 2
    Dernier message: 04/01/2011, 17h43
  2. Réponses: 10
    Dernier message: 16/05/2007, 17h47
  3. C++ POO Objet
    Par Jean Frobert dans le forum Langage
    Réponses: 5
    Dernier message: 23/03/2005, 19h02
  4. [POO] Objet Navigator
    Par AssKiller dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 28/10/2004, 10h38

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo