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 :

Modifier variable suite a un explode


Sujet :

Langage PHP

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 10
    Points : 5
    Points
    5
    Par défaut Modifier variable suite a un explode
    Bonjour,

    Je viens sur ce forum chercher de l'aide (comme beaucoups).

    Projet :
    récupérer un fichier txt avec un séparateur et avec la fonction explode enregistre les données d'un tableau dans une base de donnée.

    Tous est ok sauf que au passage je souhaite modifier une variable. Cette variable dans mon fichier txt est toujour comprise entre 1 et 3. Et en fonction de ca je voudrais l'enregistrer autrement dans la DB.
    exemple 1=chien 2=chat 3 = poisson. Et ca j'y arrive pas.

    Je laisse mon code (je ne connais pas les balise pr mettre en forme le code)
    et merci d'avance à ceux qui vondrons bien m'aider

    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
    <?php
    $newfile = 'traitement.txt';
     
    $fichier = fopen("traitement.txt", "r+");
    while (!feof($fichier)) 
    // feof = fonction testant si la fin du fichier est atteinte, c'est le teste de la boucle 'while'
    {
    $uneLigne = fgets($fichier, 1024);
     // fgets = récupère à chaque appel une nouvelle ligne du fichier
     
    $tableauValeurs = explode('#', $uneLigne);
     
       $reference = $tableauValeurs[0]; 
       $form_date = $tableauValeurs[1]; 
       $form_time = $tableauValeurs[2]; 
       $prefix = $tableauValeurs[3]; 
     
    if($prefix == "1"){ $prefix='chien';}
    		elseif ($prefix == "2") { $prefix='chat';}
                             elseif ($prefix == "3") { $prefix='poisson';}
    		else {$prefix='';}
    }
     
    fclose($fichier); 
     
    echo $reference;
    echo $form_date;
    echo $form_time;
    echo $prefix;
    ?>
    echo $prefix; me retourne 1 au lieu de me retourner un animal !

    Merci d'avance

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 28
    Points : 30
    Points
    30
    Par défaut
    'Soir :

    Cela n'a surement rien à voir mais il manque une " là :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    else {$prefix='';}
    Edit : A non :p, l'affichage d'une " et de deux ' est absolument identique sur le fofo...

  3. #3
    Membre éclairé
    Avatar de djayp
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    295
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 295
    Points : 687
    Points
    687
    Par défaut
    Salut,

    Ton code semble correct, par contre tes echos ne sont pas placés dans la boucle ce qui peut expliquer le résultat que tu nous décrits...
    Par ailleurs, il est préférable d'utiliser switch pour faire ce genre de chose :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    switch($prefix) {
    	case 1 : $prefix='chien'; break;
    	case 2 : $prefix='chat'; break;
    	case 3 : $prefix='poisson'; break;
    	default: $prefix='';
    }
    A++

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 10
    Points : 5
    Points
    5
    Par défaut Merci de votre aide
    Bonjour,

    Merci encore de m'aider.

    J'ai essayé de faire comme tu dis, de placer les echos dans la boucle et d'utiliser un switch mais le résultat est pareil.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    switch($prefix) {
    	case 1 : $prefix='chien'; break;
    	case 2 : $prefix='chat'; break;
    	case 3 : $prefix='poisson'; break;
    	default: $prefix='';
    }
    ce code, avec la valeure default ne m'affiche rien car vide et le code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    switch($prefix) {
    	case 1 : $prefix='chien'; break;
    	case 2 : $prefix='chat'; break;
    	case 3 : $prefix='poisson'; break;
    }
    sans la valeure par défault m'affiche bien le chiffre mais sans le modifier.

    Est ce que cela viendrait de la fonction explode ?
    Je comprend pas, c'a a l'air simple mais...

  5. #5
    Expert confirmé
    Avatar de Thes32
    Homme Profil pro
    Développeur PHP, .Net, T-SQL
    Inscrit en
    Décembre 2006
    Messages
    2 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur PHP, .Net, T-SQL

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 379
    Points : 4 853
    Points
    4 853
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    switch( trim( $prefix ) ) {
    	case 1 : $prefix='chien'; break;
    	case 2 : $prefix='chat'; break;
    	case 3 : $prefix='poisson'; break;
    	default: $prefix='';
    }
    ?

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 10
    Points : 5
    Points
    5
    Par défaut ca ne marche tjrs as
    Bonjour,

    Je ne comprend pas ceci a l'air super simple mais marche pas.
    Meci de m'aider.

    Je laisse mon code et mon fichier txt si une personne pouvait tester ca sur son pc. Je me dis que j'ai peu-etre un probleme de version de quelque chose. (J'utilise xamp version telecharge sur le site y a quelques jours)

    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
     
    <?php
    $fichier = fopen("traitement.txt", "r+");
    while (!feof($fichier)) // feof = fonction testant si la fin du fichier est atteinte, c'est le teste de la boucle 'while'
    {
    $uneLigne = fgets($fichier, 1024); // fgets = récupère à chaque appel une nouvelle ligne du fichier
    $tableauValeurs = explode('#', $uneLigne);
     
       $reference = $tableauValeurs[0]; 
       $form_date = $tableauValeurs[1]; 
       $form_time = $tableauValeurs[2]; 
       $prefix = $tableauValeurs[3]; 
     
     
    switch( trim( $prefix ) ) {
    	case 1 : $prefix='chien'; break;
    	case 2 : $prefix='chat'; break;
    	case 3 : $prefix='poisson'; break;
    	default: $prefix='';
    }
     
    echo $form_time;
    echo $prefix;
     
    }
     
    fclose($fichier); 
    ?>
    et voici mon fichier txt :

    "test"#"bleu"#"eric"#"1"
    "test"#"rouge"#"aurelie"#"2"
    "test"#"vert"#"lizea"#"3"
    "test"#"jaune"#"sacha"#"1"

    A savoir que pareil, lorque je met une valeure par defaut ds le switch, rien ne s'affiche et sans valeures par defaut les chiffres s'affichent mais sans etre modifiés.

    J'avoue ne plus rien comprendre. Merci encore de votre aide

  7. #7
    Expert confirmé
    Avatar de Thes32
    Homme Profil pro
    Développeur PHP, .Net, T-SQL
    Inscrit en
    Décembre 2006
    Messages
    2 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur PHP, .Net, T-SQL

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 379
    Points : 4 853
    Points
    4 853
    Par défaut
    on dirait que t'as "1", ... au lieu de 1
    donc,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    switch( str_replace( '"', '', $prefix ) ) {
    //...

  8. #8
    Membre éclairé
    Avatar de djayp
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    295
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 295
    Points : 687
    Points
    687
    Par défaut
    Ou sinon tu utilises la fonction fgetcsv pour parser ton fichier :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    <?php
    $fichier = fopen("traitement.txt", "r+");
     
    while (($data = fgetcsv($fichier, 1024, "#")) !== FALSE) {
     
       $reference = $data[0]; 
       $form_date = $data[1]; 
       $form_time = $data[2]; 
       $prefix = $data[3]; 
     
    // (...)
     
    }

    A++

Discussions similaires

  1. Réponses: 1
    Dernier message: 06/04/2007, 19h17
  2. Stocker des variable suite a un fork
    Par gool42 dans le forum Programmation et administration système
    Réponses: 1
    Dernier message: 07/01/2007, 19h46
  3. Réponses: 3
    Dernier message: 13/04/2006, 21h55
  4. Modifier variable php suite à un clique
    Par budiste dans le forum Général JavaScript
    Réponses: 11
    Dernier message: 29/11/2005, 16h06
  5. [D6] Modifier variable environnement système !?
    Par Lung dans le forum API, COM et SDKs
    Réponses: 32
    Dernier message: 19/05/2005, 19h43

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