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 :

fichiers et POO


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Inscrit en
    Novembre 2010
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 10
    Par défaut fichiers et POO
    Bonsoir à tout les membres

    bon j'ai un problème c'est que j'ai conçu 2 classes une classe nommé objetpostal et ça sous classe colis qui hérite de la première et je veux instancier un objet de type colis et le stocké dans un fichier nommé base_donnees_colis lorsque je stocke un objet ce dernier est stocké comme suivant:
    nomdestinataire1;adresse1;ville1;poids1;recomander1 nomdestinataire2;adresse2;ville2;poids2;recomander2
    est moi je veux le stocker comme suivant :
    nomdestinataire1;adresse1;ville1;poids1;recomander1
    nomdestinataire2;adresse2;ville2;poids2;recomander2
    c'est à dire je veux faire un retour a la ligne pour extraire chaque instance stocké déjà dans le fichier si non comment je peux identifier chaque instance ????????;
    voila mon code:

    ************************************objetpostale.php**********************************

    Code php : 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
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
     
    <?php
    class objetpostale
    {
    	protected $nomdestination;
    	protected $adresse;
    	protected $ville;
    	protected $recomander;
    	public function __construct($n,$a,$v,$r)
    	{
    		$this->nomdestination=$n;
    		$this->adresse=$a;
    		$this->ville=$v;
    		$this->recomander=$r;
    	}
    	public  function prix(){}
    	public function toString()
    	{
    		return "le nom du destinataire : ".$this->nomdestination." l adresse du destinataire :".$this->adresse."la ville :".$this->ville." recomander :".$this->recomander;		
    	}		
    }
     
    ?>
     
    ****************************************************************************************************************************
    *************************colis.php***************************
    <?php
    include_once 'objetpostal.php';
     
    class colis extends objetpostale
    {
    	private $poids;
    	public function __construct($n, $a, $v,$p,$r)
    	{
    		parent::__construct($n, $a, $v, $r);
    		$this->poids=$p;
    	}
    	public function toString()
    	{
    		return parent::toString()."\n poids colis :".$this->poids;		
    	}
    	public function prix()
    	{
    		if($this->recomander)
    		{
    			return 10+($this->poids/100)*8;
    		}else 
    		return ($this->poids/100)*8;
     
    	}
     
    	public function  serialiser()
    	{
    		$direct="d:\base_donnees_colis.txt";
    		if(!file_exists($direct) || !is_writable($direct))
    		{
    			echo "le fichier de stockage n existe pas !!!";
    			exit(-1);
    		}else 
    		{
    			if(!$handlef=fopen($direct,"a"))
    			{
    				echo "imposible d ouvrire le fichier de stockage";
    			}
    			else
    			{
    				fputs($handlef,$this->nomdestination.";".$this->adresse.";".$this->ville.";".$this->poids.";"."$this->recomander \n");
     
    			}
    				}
    	}	
    }
     
    ?>
    ***************************************************************************************************************************************************
    ******************************main.php***************************
     
    <?php
    include_once 'colis.php';
     
    $c=new colis("amine","sidi maarouf","casablanca",1500,"oui"."\n");
    $d=new colis("smail","ouasis","casablanca",8500,"non"."\n");
    $c->serialiser();
    $d->serialiser();
     
    $str="";
    if(!file_exists("d:\base_donnees_colis.txt"))
    {
    	echo "impossible de trouver  le fichier";
    exit(-1);
     
    }
    else 
    {
    if(!$handlef=fopen("d:\base_donnees_colis.txt","r"))
    	{
    echo "impossible douvrire le fichier";
    exit(-1);
     
    	}
    	else 
    	{
     
    		while(!feof($handlef))
    		{
    		$str.=fgets($handlef);	
    		}
    	echo $str;
     
    	}
     
    }
     
    ?>

  2. #2
    Membre Expert
    Avatar de gene69
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 769
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 769
    Par défaut
    pourquoi tu n'utilises pas la fonction serialize()? tu sérialises ta collection (ou en mode maso objet par objet) et tu ne t'embête plus.

    Sinon on a inventé les bases de données relationnelles pour contrer les inconvénients des fichiers plats.

    edit: autre chose, dans ton algo tu confonds le travail de sérialisation et le travail de stockage/persistance, c'est pas bien.

  3. #3
    Membre habitué
    Inscrit en
    Novembre 2010
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 10
    Par défaut
    c'est ce que j'ai fait j'ai utilisé la fonction serialiser pour stocker l instance dans un fichier.
    bon j'ai trouvé une solution c'est de remplacer le \n par un \r est ça marche
    le seule problème qui me reste c'est de récupérer un enregistrement dans le fichier et crée avec cette dernière une instance j'ai utiliser les fonctions fgets() et explode() mais je ne peux pas différencier entre les enregistrements.

Discussions similaires

  1. POO, BDD, ArrayList et fichier .txt
    Par nicaud dans le forum Collection et Stream
    Réponses: 3
    Dernier message: 27/04/2011, 06h48
  2. Réponses: 3
    Dernier message: 27/04/2007, 14h51
  3. Réponses: 5
    Dernier message: 15/04/2007, 18h18
  4. [POO] fichier .h et .cpp
    Par Royd938 dans le forum C++
    Réponses: 9
    Dernier message: 18/07/2006, 10h19
  5. Réponses: 3
    Dernier message: 28/09/2005, 08h39

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