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 :

recuperer variables fonction fgetcsv


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 26
    Points : 13
    Points
    13
    Par défaut recuperer variables fonction fgetcsv
    bonjour a tous,

    voilà j'ai un petit script et je n'arrive pas a faire ce que je veux, non mais desfois,...

    alors j'ai déjà un csv qui contient par exemple les 2 lignes suivantes :
    1 "Musée Baccarat" "Magique, et brillant"
    2 "ruse de " "coyotte qui , est moins malin que..."
    le document csv est construit de la sorte :
    utf8, spérateur tab, séparateur de texte"

    Un script php qui est le suivant :
    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
    	$ligne = 0;
    	$handle = fopen("test.csv", "r");
    	while (($data = fgetcsv($handle, 0, chr(9),'"')) !== FALSE) {
        $ligne++;
        $num = count($data);
     
        for ($c=0; $c < $num; $c++) {
          echo 'Col ['.$ligne.', '.$c.'] = '.$data[$c].'<br />'; 
     
    	} 	
    }
     
    ?>
    cela m'affiche bien :

    Col [1, 0] = 1
    Col [1, 1] = Musée Baccarat
    Col [1, 2] = Magique, et brillant
    Col [2, 0] = 2
    Col [2, 1] = ruse de
    Col [2, 2] = coyotte blablabla...

    Ce que je souhaite c'est récupérer chaque morceau dans une variable c'est à dire par exemple :
    la $var_id va contenir le 1 et le 2
    la $var_text1 va contenir 'musée bacarat' et ruse de
    etc ...etc..
    le tout étant de me permettre ensuite de transmettre chaque contenu de ces variable dans un base mysql
    id
    text1
    text2

    voilà j'espère avoir été assez clair
    j'imagine que cela ne dois pas être complioqué, mais j'avoue que je bloque dessus et je commence à craquer.

    dans l'attente je vous remercie

  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
    Bonjour et bienvenu sur le forum,

    et pourquoi pas simplement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <?php
    	$ligne = 0;
    	$handle = fopen("test.csv", "r");
    	while (($data = fgetcsv($handle, 0, chr(9),'"')) !== FALSE) {
                 $sql = "INSERT INTO table (id, texte1, texte2) VALUES (" . $data[0] . ",'" . $data[1] . "','" . $data[2] . "')";
                 ........
    	} 	
    ?>
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 26
    Points : 13
    Points
    13
    Par défaut
    merci pour cette réponse rapide,

    le pb qui se pose c'est que je veux dégager chaque champs car je risque d'avoir encore des manip a faire dessus avant de les envoyer dans la base de données du style coupé le text1 (prendre un certain nombre de caractères) et l'inserer dans un champs type resume et l'ensemble du text1 dans fulltext.


    Est ce que je suis clair, j'ai tellement la tête comme un choux que je me demande si je suis clair.

    je cherche actuellement sur explode mais je bute encore

  4. #4
    Membre averti
    Profil pro
    Développeur Web
    Inscrit en
    Septembre 2004
    Messages
    352
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Septembre 2004
    Messages : 352
    Points : 434
    Points
    434
    Par défaut
    Pourquoi tu ne stockerais pas ces résultats dans un tableau multi-dimensionnel ? :o

  5. #5
    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
    le pb qui se pose c'est que je veux dégager chaque champs car je risque d'avoir encore des manip a faire dessus avant de les envoyer dans la base de données du style coupé le text1
    Rien n'empeche de le faire dans la boucle :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <?php
    	$ligne = 0;
    	$handle = fopen("test.csv", "r");
    	while (($data = fgetcsv($handle, 0, chr(9),'"')) !== FALSE) {
                 $data[1] = substr($data[1], 0, 1);
                 ............
                 $sql = "INSERT INTO table (id, texte1, texte2) VALUES (" . $data[0] . ",'" . $data[1] . "','" . $data[2] . "')";
                 ........
    	}
    ?>
    Je ne verrais pas l'interet de reconstruire un tableau pour le reparcourir.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 26
    Points : 13
    Points
    13
    Par défaut
    bonjour,

    et merci pour ces réponse je me disais bien aussi qu'il était stupide de refaire une boucle pour recréer un tableau que j'ai déjà avec la fonction fgetcsv
    je vais continuer à avancer dans mon travail et peut être aurais je encore besoin de conseil

    merci bien.

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 26
    Points : 13
    Points
    13
    Par défaut
    bonjour a tous,

    tout d'abord merci de votre aide.
    Je rencontre un problème avec ma requête sql, apparement elle n'est executée qu'une seule fois ce qui me semble bizarre puisqu'elle est dans une boucle
    voilà le 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
    <?php
    	mysql_connect("localhost","root",""); // declaration de la connexion
        mysql_select_db("interieu");
    	$ligne = 0;
    	$handle = fopen("test.csv", "r");
    	while (($data = fgetcsv($handle, 0, chr(9),'"')) !== FALSE) {
        $ligne++;
        $num = count($data);
     
        for ($c=0; $c < $num; $c++) {
          //echo 'Col ['.$ligne.', '.$c.'] = '.$data[$c].'<br />'; 
    	  echo $data[$c].'<br />';
    	  //$data[2] = substr($data[2], 0, 20);
    	  //$var1 = $data[2];
    	  $query = "INSERT INTO jos_content (id, title, alias) VALUES (" . $data[0] . ",'" . $data[1] . "','" . $data[2] . "')";
    	  mysql_query($query);
    	  } 
     }
     
    ?>
    ce que j'ai mis en commentaire son juste des essaie car je veux par la suite comme je crois l'avoir déjà dis décomposer encore plus un champs du fichier csv.

    Ma requête est bien dans la boucle pourquoi n'est-elle exécuté qu'une seule fois ?

    je ne comprends pas c'est un peu dur pour un débbuttant que je suis mais je vais perséverer jusqu'au jour où je pourrais moi aussi aider les autres
    merci de votre attention.

  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
    Ton while parcours la table de haut en bas.
    Ta boucle for parcours chaque ligne horizontalement.

    Tu comprendras donc que ton INSERT ne doit pas être dans la boucle for.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 26
    Points : 13
    Points
    13
    Par défaut
    ce qui voudrais donc dire que si je veux insérer l'ensemble de la ligne il faut la placer la requête dans le while ?
    C'est ce que j'ai fait mais je n'ai toujours que la première ligne qui est insérée
    J'ai aussi par curiosité essayé de la sortir et du while et du for mais là rien, même pas la première ligne.

    Là j'avoue que je bloque
    la requête est bonne puisque la première ligne est bien insérée,
    Dois refaire une boucle quelque part pour cette requête ?
    Mais pourtant sii elle est dans le while, cela veut bien dire tant que il y a des lignes insert les données dans la table non ?

  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
    Tu devrais faire un
    dans ta boucle while pour voir exactement ce que tu envoies comme requete.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 26
    Points : 13
    Points
    13
    Par défaut
    voila ce que ca renvoi
    1
    Musée Baccarat
    Magique, et brillant
    INSERT INTO jos_content (id, title, alias) VALUES (1,'Musée Baccarat','Magique, et brillant')
    2
    ruse de
    coyotte qui ce casse les dents
    INSERT INTO jos_content (id, title, alias) VALUES (2,'ruse de ','coyotte qui ce casse les dents')

    c'est marrant cela a l'air de marcher il y a bien les 2 insert qui sont les bons
    là je reste perplexe.

    merci pour la façon de vérifier la requête je n'y aurais pas pensé

  12. #12
    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
    Essaie de lancer la deuxieme requete dans phpmyadmin.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  13. #13
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 26
    Points : 13
    Points
    13
    Par défaut
    la requete passe dans phpMyadmin
    INSERT INTO jos_content (id, title, alias) VALUES (2,'ruse de ','coyotte qui ');
    en ajoutant le ;

    le problème viendrais peut être de là ?

  14. #14
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 26
    Points : 13
    Points
    13
    Par défaut
    nonje raconte n'importe quoi ça peut pas venir du ";"

  15. #15
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 26
    Points : 13
    Points
    13
    Par défaut
    je sèche carrément sur ce problème.
    La requête s'effectue bien comme j'ai peux le vérifier avec la méthode de "sabotage".
    Mais pas moyen qu'elle fasse réellement l'insert dans la base de données.

  16. #16
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 26
    Points : 13
    Points
    13
    Par défaut
    incroyable je n'ai rien changé et tout d'un coup c'est rentré dans la base ?
    Allez comprendre !?
    Enfin ça marche aujoud'hui c'est déjà ça
    merci sabotage pour toute ton aide

  17. #17
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 26
    Points : 13
    Points
    13
    Par défaut
    Ca y est ça marche, je n'est miraculeusement rien changé ni modifié sur le code précedent.
    Ca a marcher puis ça n'aplus remarché, puis remarché.


    Ayant tous de même re-eu le même problème ce matin

    Entre temps j'ai coupé le serveur couper le navigateur et il me semblerait bien que ce soit un problème de cache de la mémoire. Peut être qu'au redémarrage du serveur et du navigateur, cela ré-initialise la chose et à ce moment les nouveaux paramètre son pris en compte.

    Enfin ça marche c'est l'essentiel

    Merci pour tout et pour les astuces.

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

Discussions similaires

  1. recuperation variable fonction
    Par Devilju69 dans le forum Langage
    Réponses: 9
    Dernier message: 22/05/2009, 10h26
  2. [FLASH MX2004] Recuperation variable dans URL
    Par Bibicmoi dans le forum Flash
    Réponses: 11
    Dernier message: 20/08/2005, 14h05
  3. [FLASH MX2004] Recuperation variable de PHP
    Par gchanteux dans le forum Flash
    Réponses: 11
    Dernier message: 10/05/2005, 19h16
  4. [langage] Recupération variables d'environnement
    Par Ludo167 dans le forum Langage
    Réponses: 2
    Dernier message: 19/07/2004, 14h48

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