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] Surchager une méthode


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    102
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 102
    Par défaut [POO] Surchager une méthode
    Bonsoir :p, Donc pour commencer j'ai une classe TableBD qui permet d'ajouter, modifier,supprimer et lister les enregistrements d'une table . Et avec cette classe
    j'en crée une autre plus spécialisée en surchargeant certaines méthodes .
    Et j'ai un problème avec la méthode insert
    voilà la classe insert de ma classe TableBD

    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
    public function insertion()
    	{
    		//initialisation
    	$noms = $valeurs = $virgule = $interrogation = "";
    	$i=1;
    	foreach($this->schema as $tableau)
    		{
    		$noms .= $virgule . $tableau["Field"];
    		$interrogation .= $virgule . " ?";
    		$virgule = ", ";
    		//on verifie que ce n'est pas un tableau
    		if(is_array($this->donnees[$tableau["Field"]]))
    			{
    			//initialisation de la variable resultat
    			$resultat=$slash="";
    			//c'est un tableau on concatène les resultats
    			foreach($this->donnees[$tableau["Field"]] as $nom => $valeur)
    				{
    				$resultat .= $slash . $valeur;
    				$slash= "/";
    				}
    			$valeurs[$i++]=$resultat;	
    			}
    		else
    			{						
         	$valeurs [$i++]=  $this->donnees[$tableau["Field"]];
    			}
    		}
    		$requete = $this->bd->prepare("INSERT INTO ".
    		" $this->nom_table ($noms) VALUES ($interrogation)");
    		for($e=1; $e<count($valeurs)+1; $e++)
    		$requete->bindParam($e , $valeurs[$e]);
    		if($requete->execute())
    			return TRUE;
    		else 
    			return FALSE;	
      	}

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    if($table_enregist->insertion())
    		{
    		$this->vue->contenu="<center><br />Votre inscription a été prise en compte.</center>";
    		}
    	else
    		{
    		$this->vue->contenu="<center><br />Votre inscription n'a pas été prise en compte .</center>";
    		}
    elle retourne true quand tout se passe bien et false quand ça merde :p
    quand je laisse la classe ainsi ça marche . Mais quand je la surcharge , j'ai le message "Votre inscription n'a pas été prise en compte ."
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     //fonction insertion
     public function insertion()
     	{
     	//on ajoute le mot de passe créé dynamiquement pour chaque
     	//membre venant de s'inscrire	
     		$this->donnees["mdp"]=$this->genererMDP();
      	//et l'on rappelle la méthode parente
     	parent::insertion();	
     	}
    je voulais demander ce morceau de code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    if($table_enregist->insertion())
    		{
    		$this->vue->contenu="<center><br />Votre inscription a été prise en compte.</center>";
    		}
    	else
    		{
    		$this->vue->contenu="<center><br />Votre inscription n'a pas été prise en compte .</center>";
    		}
    je n'ai pas besoin de le mettre ?? Si j'utilise PDO il gère les exceptions, donc j'ai juste à mettre un message

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    		$this->vue->contenu="<center><br />Votre inscription a été prise en compte.</center>";
    et si elle ne s'est pas le cas , il captura une exception non ?

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 38
    Par défaut
    Salut,

    J'aurais transformé la fonction surchargée ainsi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     public function insertion()
     	{
     	//on ajoute le mot de passe créé dynamiquement pour chaque
     	//membre venant de s'inscrire	
     		$this->donnees["mdp"]=$this->genererMDP();
      	//et l'on rappelle la méthode parente
     	return parent::insertion();	
     	}
    Juste un petit return supplémentaire donc, pour renvoyer le booleen retourné par la méthode de la classe parente.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    102
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 102
    Par défaut
    eh ben merci ^^ sympa

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 7
    Dernier message: 19/03/2007, 20h25
  2. Réponses: 3
    Dernier message: 05/10/2006, 18h52
  3. [POO] Appeler une méthode redéfinie de la classe parente
    Par Djakisback dans le forum Langage
    Réponses: 5
    Dernier message: 04/08/2006, 22h56
  4. [POO]Appelé une méthode d'une classe mère
    Par LE NEINDRE dans le forum Langage
    Réponses: 2
    Dernier message: 14/12/2005, 14h44
  5. [POO] Redéfinir une méthode en se servant de l'ancien code
    Par bart64 dans le forum Langages de programmation
    Réponses: 2
    Dernier message: 31/05/2005, 13h59

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