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 :

Diviser une variable en 3


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Inscrit en
    Mars 2006
    Messages
    89
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 89
    Points : 30
    Points
    30
    Par défaut Diviser une variable en 3
    Bonjour à tous,

    je recupere des donnes d'un csv et dans ce csv j'ai une variable :

    $model_year= $liste[4];

    Cette variable est toujours de cette forme: Mois tiret année

    ///////EXEMPLE////

    JAN-2008
    FEV-2008
    MAR-2008

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

    Je voudais donc TRANSFORMER FEV-2008 en 01 02 2008 ( comme je n'ai pas le jour, je mets 01 par defaut), et obtenir TROIS variables pour les mettre dans mes trois champs qui sont :

    ///////////////////
    j_immat
    m_immat
    a_immat
    ///////////////////

    En conclusion, comment exploser ma variable pour en faire 3 ????

    D'avance merci pour votre éclairage !

  2. #2
    Membre éclairé Avatar de micetf
    Homme Profil pro
    Professeur des Ecoles
    Inscrit en
    Mai 2009
    Messages
    557
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Professeur des Ecoles
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2009
    Messages : 557
    Points : 831
    Points
    831
    Par défaut
    Peut-être une solution ?
    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
    class ExploseurDeDate {
    	var $j_immat = '01';
    	var $m_immat;
    	var $a_immat;
     
     
    	function ExploseurDeDate($date) {
    		$mois = array('JAN'=>'01','FEV'=>'02','MAR'=>'03', 'AVR' => '04', 'MAI' => '05');
     
    		$tab_date = explode('-',$date);
    		$this->m_immat = $mois[$tab_date[0]];
    		$this->a_immat = $tab_date[1];
    	}
     
    	function getJour() {
    		return $this->j_immat;
    	}
    	function getMois() {
    		return $this->m_immat;
    	}
    	function getAnnee() {
    		return $this->a_immat;
    	}
    }
     
    $date = new ExploseurDeDate('FEV-2007');
     
    echo 'j_immat : '.$date->getJour();
    echo '<br/>';
    echo 'm_immat : '.$date->getMois();
    echo '<br/>';
    echo 'a_immat : '.$date->getAnnee();
    Fred

  3. #3
    Nouveau membre du Club
    Inscrit en
    Mars 2006
    Messages
    89
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 89
    Points : 30
    Points
    30
    Par défaut Un seul mot... Respect !
    Alors La, je suis scotché !
    C'est grâce a des gens comme toi que l'on apprends !
    Clair, précis, je comprends tout .
    Un grand merci, que dire de plus ?

    Merci à toi

  4. #4
    Nouveau membre du Club
    Inscrit en
    Mars 2006
    Messages
    89
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 89
    Points : 30
    Points
    30
    Par défaut petit doute
    super fonction, mais ja je te mets mon code, je sèche sur comment appeler cela:

    J'ai bien compris ta super fonction mais dans mon code, j'ai donc $model_year= $liste[4]; que je récupères dans le csv.
    Donc si je comprends bien, je dois mettre au lieu de $date = new ExploseurDeDate('fév-2007'); $date = new ExploseurDeDate('$model_year') ? Ja je paniques un peu




    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
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    <?
     
     class ExploseurDeDate {
    	var $j_immat = '01';
    	var $m_immat;
    	var $a_immat;
     
     
    	function ExploseurDeDate($date) {
    		$mois = array('janv'=>'01','fév'=>'02','mars'=>'03', 'avr' => '04', 'mai' => '05', 'juin' => '06', 'juil' => '07', 'aout' => '08', 'sept' => '09', 'oct' => '10', 'nov' => '11', 'déc' => '12',);
     
    		$tab_date = explode('-',$date);
    		$this->m_immat = $mois[$tab_date[0]];
    		$this->a_immat = $tab_date[1];
    	}
     
    	function getJour() {
    		return $this->j_immat;
    	}
    	function getMois() {
    		return $this->m_immat;
    	}
    	function getAnnee() {
    		return $this->a_immat;
    	}
    }
     
    $date = new ExploseurDeDate('fév-2007');
     
    mysql_connect('localhost', 'xxxx', 'xxxxxxxxxxx');
    mysql_select_db('xxxxxxxxxxxx');
     
     $fichier='test2.csv';
     $fp = fopen("$fichier", "r"); 
     
    while (!feof($fp)) 
     { 
    $ligne = fgets($fp,4096);
     
     /* ----------------------------------------- */
    $liste = explode( ";",$ligne);
     /* ----------------------------------------- */ 
    $make = $liste[0]; 
    $model = $liste[1];
    $description = $liste[2];
    $exterior = $liste[3]; 
    $model_year= $liste[4];
    $mileage= $liste[5];
    $frais= $liste[6];
    $price= $liste[7];
    $userid = "1";
    $location  = "1";
    $user_type = "3";
    $added = $datejour;
    $updated = $datejour;
    $expire = "0";
    $user_expire = "0";
    $viewed = "64";
    $images = "0";
    $hide = "0";
    $featured = "0";
    $status = "1";
    $pending = "";
    $stock = "";
    $vin = "";
    $cond = "Occasion";
    $gen = "VP";
    $carross = "CI";
    $category = "";
    $category2 = "";
    $mileage_alt = "";
    $sale = "";
    $price_alt = "";
    $interior = "";
    $doors = "";
    $fuel = "GO";
    $drive = "";
    $engine = "";
    $trans = "";
    $top_speed = "";
    $horsepower = "";
    $torque = "";
    $towing = "";
    $features = "";
    $tagline = "";
    $link_url = "";
    $link_text = "";
    $ebay_url = "";
    $nom_acheteur = "";
    $adresse_acheteur = "";
    $cp_acheteur = "";
    $ville_acheteur = "";
    $w_garage = "";
    $j_immat = "";
    $m_immat = "";
    $a_immat  = "";
     
     
     
    $query = "INSERT INTO test (userid,location,user_type,added,updated,expire,user_expire,viewed,images,hide,featured,status,pending,stock,vin,model_year,make,model,cond,gen,carross,category,category2,mileage,mileage_alt,price,sale,price_alt,exterior,interior,doors,fuel,drive,engine,trans,top_speed,horsepower,torque,towing,features,description,tagline,link_url,link_text,ebay_url,nom_acheteur,adresse_acheteur,cp_acheteur,ville_acheteur,w_garage,j_immat,m_immat,a_immat,frais)
    VALUES('$userid','$location','$user_type','$added','$updated','$expire','$user_expire','$viewed','$images','$hide','$featured','$status','$pending','$stock','$vin','$model_year','$make','$model','$cond','$gen','$carross','$category','$category2','$mileage','$mileage_alt','$price','$sale','$price_alt','$exterior','$interior','$doors','$fuel','$drive','$engine','$trans','$top_speed','$horsepower','$torque','$towing','$features','$description','$tagline','$link_url','$link_text','$ebay_url','$nom_acheteur','$adresse_acheteur','$cp_acheteur','$ville_acheteur','$w_garage','$j_immat','$m_immat','$a_immat','$frais')";
     
    $result= MYSQL_QUERY($query);
    if(mysql_error())
     {
     print "Erreur !!!!!!!!!!".mysql_error();
     print "<br>Importation arrete.";
     exit();
     } 
     else /* Tout va bien */
     print "$make $model $description $exterior $model_year $mileage $frais $price $j_immat $m_immat $a_immat<br>";
     } 
     
     echo "$query";
     
     /* Fermeture */ 
     fclose($fp); 
     MYSQL_CLOSE()
     ?>

  5. #5
    Membre régulier
    Inscrit en
    Juin 2009
    Messages
    104
    Détails du profil
    Informations personnelles :
    Âge : 51

    Informations forums :
    Inscription : Juin 2009
    Messages : 104
    Points : 120
    Points
    120
    Par défaut
    $date = new ExploseurDeDate($liste[4]);

  6. #6
    Nouveau membre du Club
    Inscrit en
    Mars 2006
    Messages
    89
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 89
    Points : 30
    Points
    30
    Par défaut
    Ok pour ca merci, mais dans ce cas la, juste avant ma requete :

    $m_immat = .$date->getMois();
    ... ETC ETC ?
    mais j'ai un doute sur la syntaxe...

    Pareil quand je vais inserer...

  7. #7
    Membre éclairé Avatar de micetf
    Homme Profil pro
    Professeur des Ecoles
    Inscrit en
    Mai 2009
    Messages
    557
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Professeur des Ecoles
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2009
    Messages : 557
    Points : 831
    Points
    831
    Par défaut
    Ayant pris goût à la POO,
    je n'ai pas pu résister à te proposer une solution utilisant ce paradigme.
    Les spécialistes trouveront peut-être à redire,
    cependant voici comment j'utiliserais cette solution :

    Je placerais le code de la classe dans un fichier ExploseurDeDate.php :
    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
    class ExploseurDeDate {
    	var $j_immat = '01';
    	var $m_immat;
    	var $a_immat;
     
     
    	function ExploseurDeDate($date) {
    		$mois = array('janv'=>'01','fév'=>'02','mars'=>'03', 'avr' => '04', 'mai' => '05', 'juin' => '06', 'juil' => '07', 'aout' => '08', 'sept' => '09', 'oct' => '10', 'nov' => '11', 'déc' => '12',);
     
    		$tab_date = explode('-',$date);
    		$this->m_immat = $mois[$tab_date[0]];
    		$this->a_immat = $tab_date[1];
    	}
     
    	function getJour() {
    		return $this->j_immat;
    	}
    	function getMois() {
    		return $this->m_immat;
    	}
    	function getAnnee() {
    		return $this->a_immat;
    	}
    }
    Ensuite, au début du script, j'inclurais ce fichier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    include 'ExploseurDeDate.php';
    Puis, pour chaque ligne (date) du fichier texte,
    je créerais une instance de cette classe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $date = new ExploseurDeDate($liste[4]);
    J'utiliserais l'objet ainsi créé pour initialiser les variables :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $j_immat = $date->getJour();
    $m_immat = $date->getMois();
    $a_immat  = $date->getAnnee();
    Pour ne pas abuser de la mémoire, je détruirais l'objet :
    Enfin, je ferais l'insert sql avec les variables ($j_immat, $m_immat, $a_immat) ainsi initialisées.

    MAIS,
    rien n'empêche de faire la même chose avec seulement 3 fonctions :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    function geJour($date) {
    	return '01';
    }
    function geMois($date) {
    	$mois = array('janv'=>'01','fév'=>'02','mars'=>'03', 'avr' => '04', 'mai' => '05', 'juin' => '06', 'juil' => '07', 'aout' => '08', 'sept' => '09', 'oct' => '10', 'nov' => '11', 'déc' => '12',);
     
    	$tab_date = explode('-',$date);
    	return $mois[$tab_date[0]];
    }
    function getAnnee($date) {
    	$tab_date = explode('-',$date);
    	return $tab_date[1];
    }
    que tu utilises pour initialiser tes variables $j_immat, $m_immat et $a_immat avant de faire l'insert sql.

    Fred

  8. #8
    Nouveau membre du Club
    Inscrit en
    Mars 2006
    Messages
    89
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 89
    Points : 30
    Points
    30
    Par défaut
    OK, voila mon code, mais dans la base, rien , nada , je dois me planter avent l'insertion, je vois pas, ca me stresses !!!!!!! Faut que je fumes!!!

    c'
    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
    91
    92
    93
    94
    95
    <?
    include 'ExploseurDeDate.php';
     
    $date = new ExploseurDeDate($liste[4]);
     
    mysql_connect('localhost', 'XXXXXX', 'XXXXXXXXXXX');
    mysql_select_db('XXXXXXXXXXXXX');
     
     $fichier='test2.csv';
     $fp = fopen("$fichier", "r"); 
     
    while (!feof($fp)) 
     { 
    $ligne = fgets($fp,4096);
     
     /* ----------------------------------------- */
    $liste = explode( ";",$ligne);
     /* ----------------------------------------- */ 
    $make = $liste[0]; 
    $model = $liste[1];
    $description = $liste[2];
    $exterior = $liste[3]; 
    $model_year= $liste[4];
    $mileage= $liste[5];
    $frais= $liste[6];
    $price= $liste[7];
    $userid = "1";
    $location  = "1";
    $user_type = "3";
    $added = $datejour;
    $updated = $datejour;
    $expire = "0";
    $user_expire = "0";
    $viewed = "64";
    $images = "0";
    $hide = "0";
    $featured = "0";
    $status = "1";
    $pending = "";
    $stock = "";
    $vin = "";
    $cond = "Occasion";
    $gen = "VP";
    $carross = "CI";
    $category = "";
    $category2 = "";
    $mileage_alt = "";
    $sale = "";
    $price_alt = "";
    $interior = "";
    $doors = "";
    $fuel = "GO";
    $drive = "";
    $engine = "";
    $trans = "";
    $top_speed = "";
    $horsepower = "";
    $torque = "";
    $towing = "";
    $features = "";
    $tagline = "";
    $link_url = "";
    $link_text = "";
    $ebay_url = "";
    $nom_acheteur = "";
    $adresse_acheteur = "";
    $cp_acheteur = "";
    $ville_acheteur = "";
    $w_garage = "";
    $j_immat = $date->getJour();
    $m_immat = $date->getMois();
    $a_immat  = $date->getAnnee();
     /* ----------------------------------------- */ 
     
     
    $query = "INSERT INTO listings (userid,location,user_type,added,updated,expire,user_expire,viewed,images,hide,featured,status,pending,stock,vin,model_year,make,model,cond,gen,carross,category,category2,mileage,mileage_alt,price,sale,price_alt,exterior,interior,doors,fuel,drive,engine,trans,top_speed,horsepower,torque,towing,features,description,tagline,link_url,link_text,ebay_url,nom_acheteur,adresse_acheteur,cp_acheteur,ville_acheteur,w_garage,j_immat,m_immat,a_immat,frais)
    VALUES('$userid','$location','$user_type','$added','$updated','$expire','$user_expire','$viewed','$images','$hide','$featured','$status','$pending','$stock','$vin','$model_year','$make','$model','$cond','$gen','$carross','$category','$category2','$mileage','$mileage_alt','$price','$sale','$price_alt','$exterior','$interior','$doors','$fuel','$drive','$engine','$trans','$top_speed','$horsepower','$torque','$towing','$features','$description','$tagline','$link_url','$link_text','$ebay_url','$nom_acheteur','$adresse_acheteur','$cp_acheteur','$ville_acheteur','$w_garage','$j_immat','$m_immat','$a_immat','$frais')";
     
    $result= MYSQL_QUERY($query);
    if(mysql_error())
     {
     print "Erreur !!!!!!!!!!".mysql_error();
     print "<br>Importation arrete.";
     exit();
     } 
     else /* Tout va bien */
     print "$make $model $description $exterior $model_year $mileage $frais $price $j_immat $m_immat $a_immat; <br>";
     } 
     
     echo "$query";
     
     /* Fermeture */ 
     fclose($fp); 
     MYSQL_CLOSE()
     ?>

  9. #9
    Membre éclairé Avatar de micetf
    Homme Profil pro
    Professeur des Ecoles
    Inscrit en
    Mai 2009
    Messages
    557
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Professeur des Ecoles
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2009
    Messages : 557
    Points : 831
    Points
    831
    Par défaut
    Tu crées ton objet $date trop tôt :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $date = new ExploseurDeDate($liste[4]);
    $liste[4] n'existe pas avant la ligne suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $liste = explode( ";",$ligne);
    Pour l'insert sql,
    si tu veux vérifier que ta requête est correcte,
    tu peux effectuer un
    juste après
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $query = "INSERT INTO listings (userid,location,user_type,added,updated,expire,user_expire,viewed,images,hide,featured,status,pending,stock,vin,model_year,make,model,cond,gen,carross,category,category2,mileage,mileage_alt,price,sale,price_alt,exterior,interior,doors,fuel,drive,engine,trans,top_speed,horsepower,torque,towing,features,description,tagline,link_url,link_text,ebay_url,nom_acheteur,adresse_acheteur,cp_acheteur,ville_acheteur,w_garage,j_immat,m_immat,a_immat,frais)
    VALUES('$userid','$location','$user_type','$added','$updated','$expire','$user_expire','$viewed','$images','$hide','$featured','$status','$pending','$stock','$vin','$model_year','$make','$model','$cond','$gen','$carross','$category','$category2','$mileage','$mileage_alt','$price','$sale','$price_alt','$exterior','$interior','$doors','$fuel','$drive','$engine','$trans','$top_speed','$horsepower','$torque','$towing','$features','$description','$tagline','$link_url','$link_text','$ebay_url','$nom_acheteur','$adresse_acheteur','$cp_acheteur','$ville_acheteur','$w_garage','$j_immat','$m_immat','$a_immat','$frais')";
    Fred

  10. #10
    Nouveau membre du Club
    Inscrit en
    Mars 2006
    Messages
    89
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 89
    Points : 30
    Points
    30
    Par défaut
    Ok, quel gland je suis !!!

    Merci micetf pour ces explications et pour m'avoir donné de ton temps...

    Tout fonctionne a merveille !

    Muchas GRACIAS, Danke schone, MERCI BEAUCOUP !!

  11. #11
    Nouveau membre du Club
    Inscrit en
    Mars 2006
    Messages
    89
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 89
    Points : 30
    Points
    30
    Par défaut OUPS
    Juste une petit chose, je récupère l'année sur 1 chiffre dans la base, est ce possible de le récupérer style 2008 ou 08 ?

  12. #12
    Nouveau membre du Club
    Inscrit en
    Mars 2006
    Messages
    89
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 89
    Points : 30
    Points
    30
    Par défaut
    C'est tou bon, capito...

    Encore un grand merci

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

Discussions similaires

  1. Vérifier si une variable est divisible par 10
    Par Snigz dans le forum Général Python
    Réponses: 4
    Dernier message: 05/04/2014, 17h04
  2. une variable avec un slache est divisée dans la BDD
    Par info3licen dans le forum Débuter
    Réponses: 2
    Dernier message: 22/11/2012, 13h55
  3. diviser une variable
    Par ledawa dans le forum Débuter avec Java
    Réponses: 14
    Dernier message: 31/07/2008, 11h10
  4. Désigner une variable avec une variable?
    Par littleman dans le forum Paradox
    Réponses: 4
    Dernier message: 12/08/2002, 11h21
  5. Réponses: 4
    Dernier message: 05/06/2002, 14h35

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