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

PHP & Base de données Discussion :

importer csv via bouton php sur phpmyadmin


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Inscrit en
    Janvier 2008
    Messages
    1 159
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 1 159
    Par défaut importer csv via bouton php sur phpmyadmin
    Bonsoir,

    j'ai un fichier excel pour une table de 20000lignes

    je souhaiterai créer un bouton php avec formulaire sur un site pour alimenter un table via un fichier csv.

    sachant que cette table est réliea tous le site elle est tres importantes.

    j aurai des ajout et suppression, modification sur cette table 2 fois par mois.

    je souhaiterai donc utiliser php mysql pdo.


    j'ai trouver cela
    https://gist.github.com/stavrossk/0f513ccbfe7882870ab1

    par contre on m'a indiquer que ovh n accepter plus cette fonction load et on m' a conseiller aussi plutot des insert et update je vouadrait avoir votre conseille et un code fonctionnel su possible.

    On m'a conseiller aussi une table temporaire par securite et de la renommer et tout ca en php.

    merci pour votre aide.

  2. #2
    Membre éprouvé
    Inscrit en
    Janvier 2008
    Messages
    1 159
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 1 159
    Par défaut
    après plusieurs recherche je suis tombé sur un code que j'ai modifier avec ma table le fichier csv est bien envoyé j'ai le pourcentage jusqu’à 100% mais aucun changement sur la table actuel et je tombe sur une page blanche.

    la page formualire :

    Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <form enctype="multipart/form-data" method="post" action="csvimport.php">
    <table border="1">
    <tr >
    <td colspan="2" align="center"><strong>Import CSV file</strong></td>
    </tr>
    <tr>
    <td align="center">CSV File:</td><td><input type="file" name="file" id="file"></td></tr>
    <tr >
    <td colspan="2" align="center"><input type="submit" value="submit"></td>
    </tr>
    </table>
    </form>

    la page de traitement :
    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
    if(isset($_POST['submit'])) {
     try {
     
      $pdo_extraParams = array(
             PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,    // rapport d'erreurs sous forme d'exceptions
             PDO::ATTR_PERSISTENT => true,             // Connexions persistantes
             PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"  // encodage UTF-8
             );
          // Instancie la connexion
      if(!isset($_FILES['file'])) throw new RuntimeException('Formulaire erronné');
      if($_FILES['file']['error'] !== 0) throw new RuntimeException("Erreur à la réception du fichier");
      $pdo = new PDO(xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx);
      $pdo->beginTransaction();
     
      $file = fopen($_FILES["file"]["tmp_name"], "r");
      fgetcsv($file, 767, ";");
     
      $stmt_select = $pdo->prepare('SELECT COUNT(*) FROM temporaire  WHERE adresse=:adresse and code_postal=:code_postal and commune=:commune and latitude=:latitude and longitude=:longitude');
     
      $stmt_insert = $pdo->prepare('INSERT INTO temporaire(competence_geographique,editeur,type_adresse,
    adresse,code_postal,commune,latitude,longitude,id_precision,type_accessibilite,telephone,fax,email) VALUES (:competence_geographique,:editeur,:type_adresse,
    :adresse,:code_postal,:commune,:latitude,:longitude,:id_precision,:type_accessibilite,:telephone,:fax,:email);');
      $stmt_update = $pdo->prepare('UPDATE temporaire SET 
    		competence_geographique:competence_geographique,
    		editeur:editeur,
    		type_adresse:type_adresse,
    		adresse:adresse,
    		code_postal:code_postal,
    		commune:commune,
    		latitude:latitude,
    		longitude:longitude,
    		id_precision:id_precision,
    		type_accessibilite:type_accessibilite,
    		telephone:telephone,
    		fax:fax,
    		email:email;');
            foreach([$stmt_select, $stmt_update, $stmt_insert] as $k => $stmt) {
                    $stmt->bindParam(':id_service_public', $id_service_public);
    		$stmt->bindParam(':competence_geographique', $competence_geographique);
    		$stmt->bindParam(':editeur', $editeur);
    		$stmt->bindParam(':type_adresse', $type_adresse);
    		$stmt->bindParam(':adresse', $adresse);
    		$stmt->bindParam(':code_postal', $code_postal);
    		$stmt->bindParam(':commune', $commune);
    		$stmt->bindParam(':latitude', $latitude);
    		$stmt->bindParam(':longitude', $longitude);
    		$stmt->bindParam(':id_precision', $id_precision);
    		$stmt->bindParam(':type_accessibilite', $type_accessibilite);
    		$stmt->bindParam(':telephone', $telephone);
    		$stmt->bindParam(':fax', $fax);
    		$stmt->bindParam(':email', $email);
     
     
       if($k == 0) continue;
       elseif($k == 2)
     
     
    		$stmt->bindParam(':competence_geographique', $competence_geographique);
    		$stmt->bindParam(':editeur', $editeur);
    		$stmt->bindParam(':type_adresse', $type_adresse);
    		$stmt->bindParam(':adresse', $adresse);
    		$stmt->bindParam(':code_postal', $code_postal);
    		$stmt->bindParam(':commune', $commune);
    		$stmt->bindParam(':latitude', $latitude);
    		$stmt->bindParam(':longitude', $longitude);
    		$stmt->bindParam(':id_precision', $id_precision);
    		$stmt->bindParam(':type_accessibilite', $type_accessibilite);
    		$stmt->bindParam(':telephone', $telephone);
    		$stmt->bindParam(':fax', $fax);
    		$stmt->bindParam(':email', $email);
     
     }
     while (($getData = fgetcsv($file, 767, ";")) !== FALSE) {
        echo '<p>ligne : '  . implode(';', $getData) . '</p>';
       list($id_service_public, $competence_geographique,$editeur,$type_adresse,$adresse,$code_postal,$commune,$latitude,$longitude,$id_precision,$type_accessibilite,$telephone,$fax,$email) = $getData;
       $stmt_select->execute();
       if($stmt_select->fetchColumn())
        $stmt_update->execute();
      else
        $stmt_insert->execute();
    }
    $pdo->commit();
    fclose($file);
    $msg = 'Succès';
    }
    catch(PDOException $ex) {
      if(isset($pdo) and ($pdo instanceof PDO) and $pdo->inTransaction())
       $pdo->rollBack();
     error_log($ex->getMessage());
     $msg = "Erreur dans la base de données";
    }
    catch(RuntimeException $ex) {
      $msg = $ex->getMessage();
    }
    echo $msg;
    }
    on m' a conseille que je récupère le code_postale depuis la liste déroulante la stocke sa valeur dans une variable javascript, puis la passer en paramètre dans $.ajax ?

  3. #3
    Membre éprouvé
    Inscrit en
    Janvier 2008
    Messages
    1 159
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 1 159
    Par défaut
    Après avoir ajouté un name a mon formulaire que j'avais oublié et mis les memes nom de colonnes que ceux de la base.

    La page blanche a disparu pour faire apparaitre un beau messsage d erreur :

    ligne : ;;LA DIRECTION DE L'INFORMATION L�GALE ET ADMINISTRATIVE (PREMIER MINISTRE);;RUE DU COLL�GE ;01600;REYRIEUX;4.814821;45.930657;;;04 81 91 91 30;;PLATEFORME@AUXLUCIOLES.FR;;LUNDI;LUNDI;09:30:00;12:30:00;T�L�PHONER POUR CONVENIR D'UN RENDEZ-VOUS AVANT DE SE RENDRE SUR PLACE POUR LES AUTRES JOURS.

    Erreur dans la base de données

    j'ai un id_service_public auto incrementer je ne sais pas si je dois le specifier dans update and insert je fais colonne vide dans le csv au début deja.
    De plus le update doit modifier si une seule des données est changé et l'insert si pas les meme debut de valeurs existe.
    Pensez-vous que c est coherent?

    Merci pour votre aide.

Discussions similaires

  1. mettre a jour bdd mysql via bouton php avec fichier csv
    Par kate59 dans le forum PHP & Base de données
    Réponses: 0
    Dernier message: 05/04/2019, 13h41
  2. importer un csv ou un word sur phpmyadmin
    Par hichamdeb dans le forum Administration
    Réponses: 1
    Dernier message: 06/01/2011, 14h11
  3. importation CSV via Wlanguage
    Par chapeau_melon dans le forum WinDev
    Réponses: 3
    Dernier message: 13/01/2009, 07h36
  4. Import csv via bulk insert
    Par DanaX dans le forum MS SQL Server
    Réponses: 14
    Dernier message: 15/11/2008, 19h03
  5. Import CSV et Erreur SQL0181N sur les dates
    Par bladerunners dans le forum DB2
    Réponses: 2
    Dernier message: 16/03/2007, 09h12

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