Import fichier csv Erreur de syntaxe prsè de ...à la ligne 1

Discussion dans 'Développement d'un site Web ou d'une appli mobile' créé par hx.jonathan, 6 Novembre 2008.

  1. hx.jonathan
    hx.jonathan WRInaute discret
    Inscrit:
    2 Mars 2005
    Messages:
    159
    J'aime reçus:
    0
    Salut tout le monde,

    Je tente désepérément d'importer le contenu de mon fichier csv dans ma BDD. Je parviens à lire le fichier, à l'uploader sur mon serveur mais lorsqu'il s'agit d'enregistrer les infos du fichier csv, j'ai cette erreur :

    Erreur de syntaxe près de 'Excursion,,Ne pas oublier d'apporter son maillot de bain
    )' à la ligne 1



    Remarque : j'utilise le "; " comme séparateur. Voic le code de ma page :

    Code:
    <?php
    
    echo '<p>';
    include_once 'fonctions.php';
    connexion_DB('amisphere_main');
    
    if(isset($_FILES['fichier']))
          {
    $dest_dossier = 'Zones_Admin/programme/';
       
    $fichier_source = basename($_FILES['fichier']['name']);// récupère le contenu de la variable fichier du formulaire
    
    move_uploaded_file($_FILES["fichier"]["tmp_name"],$dest_dossier.$fichier_source);
    
    echo 'Le nouveau programme ' .$_FILES['fichier']['name']. ' a été importé avec succès';
    echo '<p><span class="gras">Redirection automatique...</span></p>';
    }
    else {
    
    echo 'Impossible de charger le nouveau programme';
    
    }
    
    echo '</p>';
    
    	
     $myFile = fopen("Zones_Admin/programme/".$_FILES['fichier']['name'],'r');//on ouvre le fichier uplodé !!
       $i =0;
           while (!feof($myFile)){
                 $i++;
                 $myLine=fgets($myFile);//met la ligne dans la variable "$myline"
                $tab = explode(";", $myLine);
       
                if ($i > 1 && strlen($tab[0]) >0){ //plus grand que 1 et si la taille de la chaine de caractere est >0
                  $type_activ=$tab[0];
                  $date_debut=$tab[4];
    			  $date_fin=$tab[8];
    			  $prix=$tab[9];
    			  $heure=$tab[10];
    			  $resume=$tab[11];
    			  $details=$tab[12];
    			  $autres=$tab[13];
    			  
                  /* echo  $type_activ.' | ';
    			  echo  $date_debut.' | ';
    			  echo  $date_fin.' | ';
    			  echo  $prix.' | ';
    			  echo  $heure.' | ';
    			  echo  $resume.' | ';
    			  echo  $details.' | ';
    			  echo  $autres.'<br/>'; */
    			  
    			  
    			  //INSERTION DANS BDD
    					$sql="INSERT INTO test(type_activ,date,date_fin,prix,heure,resume,details,autre) VALUES($type_activ,$date_debut,$date_fin,$prix,$heure,$resume,$details,$autres)";
    mysql_query($sql) or die(mysql_error());
    
                 }
              }
    		  
    unlink("Zones_Admin/programme/".$_FILES['fichier']['name']);//on supprimme le fichier importé du répertoire du serveur.
    		  
    fclose($myFile);
    
    
    ?>
    Quelqu'un aurait-il une solution svp ?

    John
     
  2. KOogar
    KOogar WRInaute accro
    Inscrit:
    16 Novembre 2004
    Messages:
    4 523
    J'aime reçus:
    57
  3. hx.jonathan
    hx.jonathan WRInaute discret
    Inscrit:
    2 Mars 2005
    Messages:
    159
    J'aime reçus:
    0
    Ben j'ai cherché des sources avec fgetcsv. Je parviens à afficher le contenu de mon fichier csv mais il faudrait que je puisse stocker chaque colonne dans une variables séparéé histoire que je puisse enregistrer les champs que je veux dans la BDD.

    Une idée ??

    Merci
     
  4. KOogar
    KOogar WRInaute accro
    Inscrit:
    16 Novembre 2004
    Messages:
    4 523
    J'aime reçus:
    57
    Tu dois traiter chaque ligne séparement. Ton fichier cvs en sortie doit avoir ce format

    aaaaaaaa;bbbbbbbbb;cccccccccc
    2222222;33333333;44444444

    1° Passes chaque ligne dans une variable que tu vas traiter simplement avec la fonction explode()

    Code:
    $chaine = 'aaaaaaaa;bbbbbbbbb;cccccccccc';
    $champ = explode(";", $chaine);

    2° Le resultat se trouve dans le tableau "champ", a chaque traitement de ligne tu inserts un nouvelle enregistrement dans ta table

    Code:
    INSERT INTO tatable (champ1,champ2,champ3) VALUE($champ[0],$champ[1],$champ[2]);
     
  5. UsagiYojimbo
    UsagiYojimbo WRInaute accro
    Inscrit:
    23 Novembre 2005
    Messages:
    11 877
    J'aime reçus:
    73
    Ce serait pas un bête problème de quote ? Il faut penser à "protéger" les chaînes avant insertion dans le base de données.
     
Chargement...
Similar Threads - Import fichier csv Forum Date
[Prestashop] Import fichier csv de magasins e-commerce 3 Février 2015
importer un fichier excel et enregistrer son contenu dans ma base de données mysql Développement d'un site Web ou d'une appli mobile 15 Mars 2015
backup sql, importer un fichier dump pour recréer une table sql Administration d'un site Web 31 Mars 2014
Message d'alerte google : le fichier robot txt bloque une page importante Crawl et indexation Google, sitemaps 19 Décembre 2011
Import fichier excel dans BDD Développement d'un site Web ou d'une appli mobile 21 Mars 2010
Exploiter un fichier xml OU l'importer dans une bdd ? Développement d'un site Web ou d'une appli mobile 2 Août 2009
Importer les rapports Google Analytics sur une admin privée Google Analytics 19 Janvier 2020
Chute importante sur Google Analytics pour quelques heures Référencement Google 17 Décembre 2019
Ecart trop important entre Analytics & PrestaShop Google Analytics 30 Juillet 2019
Pages importantes et liens internes Débuter en référencement 21 Mai 2019
  1. Ce site utilise des cookies. En continuant à utiliser ce site, vous acceptez l'utilisation des cookies.
    Rejeter la notice