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 :

Ecrire sur la ligne suivante d'un fichier CSV


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Inscrit en
    Avril 2013
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Avril 2013
    Messages : 43
    Points : 25
    Points
    25
    Par défaut Ecrire sur la ligne suivante d'un fichier CSV
    Bonjour,

    J'ai un petit soucis, en effet je dispose d'un fichier CSV composé de deux colonnes du type:
    date | nombre de réservation

    J'ai déja créer le script PHP qui parcours ce fichier CSV cependant je ne trouve pas de solution a mon problème, en effet j'aimerais que si une des dates de mon fichier correspond avec une date que je retourne, alors le nombre de réservation + 1.

    Il faudrait donc en gros, que si la date corresponde, je puisse écrire sur la ligne suivante.

    Désolé si sa peut paraître sommaire, mais je débute.

    Merci à vous !

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    je puisse écrire sur la ligne suivante.
    Tu veux bien dire la ligne qui est après la ligne ayant la date cherchée ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Nouveau membre du Club
    Inscrit en
    Avril 2013
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Avril 2013
    Messages : 43
    Points : 25
    Points
    25
    Par défaut
    Tout mon fichier CSV n'est constitué que de 2 colonnes comme ça :

    date | nb de réservation
    date | nb de réservation
    date | nb de réservation
    date | nb de réservation
    ...

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Certes mais quand tu trouves la bonne date tu veux modifier la ligne d'après ou la ligne avec la bonne date ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Nouveau membre du Club
    Inscrit en
    Avril 2013
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Avril 2013
    Messages : 43
    Points : 25
    Points
    25
    Par défaut
    Je cherche à modifié la colonne suivante, c'est à dire :
    bonne date | nb de réservation +1

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Ne te mélange pas entre ligne et colonnes sinon on ne comprends plus rien

    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
    <?php
    $date_voulue = '2013-09-22';
    $new_file = '';
    $csv = new SplFileObject('test.csv', 'r+');
    $csv->setFlags(SplFileObject::READ_CSV);
    $csv->setCsvControl('|');
    foreach($csv as $ligne) {
     
    echo '<br/>';
    	if (!empty($ligne)) {
    		if ($ligne[0] == $date_voulue) {
    			$ligne[1]++;	
    		}
    		$new_file .= $ligne[0] . '|' . $ligne[1] . "\r\n";
    	}
    }
    file_put_contents('test.csv', $new_file);
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  7. #7
    Nouveau membre du Club
    Inscrit en
    Avril 2013
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Avril 2013
    Messages : 43
    Points : 25
    Points
    25
    Par défaut
    Merci de ton intérêt

    Je ne comprend pas trop ton code, voila le mien :

    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
     
    if($fp = fopen("fichier.csv","r+")){
     
     
    		for ($ligne = fgetcsv($fp, $taille, $delimiteur); !feof($fp); $ligne = fgetcsv($fp, $taille, $delimiteur)){
     
    			$j = sizeof($ligne);
     
    			for ($i = 0; $i < $j; $i++){
     
     
    				if (!empty($ligne)) {
    					if ($ligne[0] == $_POST['dates']) {
    						$ligne[1]++;	
    					}
    				$new_file .= $ligne[0] . ';' . $ligne[1] . "\r\n";
    				}
     
    			}			
     
    		}
     
    		fclose ($fp);

    Je n'arrive pas à faire marcher ton code, désolé, sûrement que je l'ai mal introduit dans mon code..

  8. #8
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    $new_file = '';
    if (($handle = fopen("fichier.csv", "r+")) !== FALSE) {
        while (($ligne = fgetcsv($handle, 1000, ",")) !== FALSE) {
            if (!empty($ligne)) {
    		if ($ligne[0] == $_POST['dates']) {
    			$ligne[1]++;	
    		}
    		$new_file .= $ligne[0] . ';' . $ligne[1] . "\r\n";
    	}
        }
        file_put_contents('fichier.csv', $new_file);
        fclose($handle);
    }
    Par contre $_POST['dates'], ça veut dire qu'il y a plusieurs dates ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  9. #9
    Nouveau membre du Club
    Inscrit en
    Avril 2013
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Avril 2013
    Messages : 43
    Points : 25
    Points
    25
    Par défaut
    Non désolé, je ne renvoie qu'une seule date !

    Parcontre maintenant j'ai cette erreur :
    Notice: Undefined offset: 1
    pour la ligne :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    $new_file .= $ligne[0] . ';' . $ligne[1] . "\r\n";

  10. #10
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Dans mon exemple le séparateur est ",".
    Il faut l'adapter à ton cas.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

Discussions similaires

  1. ecrire sur deux ligne pour le caption d'un bouton
    Par tomy7 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 11/03/2008, 14h00
  2. Reporter valeur enregistrement sur plusieurs lignes suivantes
    Par oarnold dans le forum Requêtes et SQL.
    Réponses: 8
    Dernier message: 06/03/2008, 17h52
  3. FlexGrid ecrire sur plusieur ligne dans une cellule
    Par label55 dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 05/02/2008, 14h54
  4. ecrire sur deux ligne dans une button
    Par zidenne dans le forum Delphi
    Réponses: 5
    Dernier message: 27/07/2006, 10h23

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