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 :

Importer fichier csv vers bdd mysql [POO]


Sujet :

Langage PHP

  1. #21
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2019
    Messages
    101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2019
    Messages : 101
    Points : 45
    Points
    45
    Par défaut
    [QUOTE=laurentSc;11437790]Tu ne précises quel problème ; néanmoins en exécutant le code, j'ai vu. J'ai du rajouter la colonne ville_id dans la table, puis modifier le code :

    meteo_city.sql :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    CREATE TABLE `meteo_city` (
      `ville_id` smallint(11) AUTO_INCREMENT NOT NULL,
      `dates` date NOT NULL,
      `ville_name` varchar(30) NOT NULL,
      `period` varchar(30) NOT NULL,
      `to_summarize` text NOT NULL,
      `id_to_summarize` int(11) NOT NULL,
      `minimum_temperature` int(11) NOT NULL,
      `maximum_temperature` int(11) NOT NULL,
      `vitesse_vent` varchar(30) NOT NULL,
      `commentaire` text NOT NULL
    ) ENGINE=MyISAM DEFAULT CHARSET=utf8;

    méthode get_meteo :
    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
    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
     
     
        public function getMeteo() {
     
            $mysqli = new mysqli('localhost', 'root', '', 'meteo');
            $mysqli->set_charset("utf8");
     
            if($mysqli->connect_errno) {
     
                echo 'Erreur de connexion. Message d\'erreur : ' . $mysqli->connect_error;
     
                exit;
            }
     
            $query = 'SELECT ville_id, dates, ville_name, period, to_summarize, id_to_summarize,
    		minimum_temperature, maximum_temperature, vitesse_vent,commentaire FROM meteo_city';
     
            $result = $mysqli->query($query);
     
            if(!$result) {
     
                echo 'Erreur au niveau de la requête. Message d\'erreur ' . $mysqli->error;
     
                return false;
            }
            else {
     
                while($row = $result->fetch_array()) {
                    $ville_id=$row['ville_id'];
                    $dates = $row['dates'];
                    $ville_name = $row['ville_name'];
                    $period = $row['period'];
                    $to_summarize = $row['to_summarize'];
                    $id_to_summarize = $row['id_to_summarize'];
                    $minimum_temperature = $row['minimum_temperature'];
                    $maximum_temperature = $row['maximum_temperature'];
                    $vitesse_vent = $row['vitesse_vent'];
                    $commentaire = $row['commentaire'];
     
                    $meteo_city[$ville_id]['dates'] = $dates;
                    $meteo_city[$ville_id]['Nom de la ville'] = $ville_name;
                    $meteo_city[$ville_id]['La période de la journée'] = $period;
                    $meteo_city[$ville_id]['Le résumer'] = $to_summarize;
                    $meteo_city[$ville_id]['L\'id du résumer'] = $id_to_summarize;
                    $meteo_city[$ville_id]['La température minimum'] = $minimum_temperature;
                    $meteo_city[$ville_id]['La température maximum'] = $maximum_temperature;
                    $meteo_city[$ville_id]['Le commentaire'] = $commentaire;
                }
     
                return $meteo_city;
            }
     
            $mysqli->close();
        }

    son appel :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     
    <ul>
        <?php $files = new Meteo();
        $meteo = $files->getMeteo();
         if(!empty($meteo)) :
             foreach($meteo as $name) :?>
                <li><?= $name['dates'];?> </li>
            <?php endforeach;
         endif; ?>
    </ul>

    Le code fonctionne mais heureusement qu'on utilise pas les variables affectées aux lignes 42 à 47 de la méthode car pas bon de mettre des espaces, des anti-slashes ou des apostrophes dans les noms d'index...[/QUO

    ce matin j'ai voulu refaire le test en vidant la table et au moment de choisir le fichier sur le formulaire pour de nouveau envoyer dans la base, j'ai ce message d'erreur -> Notice: Undefined variable: meteo_city in C:\wamp64\www\php-avance\05-devoir-2-refait\class\Meteo.php on line 103

  2. #22
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 468
    Points : 5 826
    Points
    5 826
    Billets dans le blog
    1
    Par défaut
    Peux-tu poster ton code car dans ma version de meteo.php, la ligne 103 est $minimum_temperature = $row['minimum_temperature']; ? ...

  3. #23
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2019
    Messages
    101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2019
    Messages : 101
    Points : 45
    Points
    45
    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
    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
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    class Meteo {
     
    	public function __construct() {
     
    	}
     
    	public function insertMeteo($filename) {
     
    		$mysqli = new mysqli('localhost', 'root', '', 'meteo');
    		$mysqli->set_charset("utf8");
     
    		if($mysqli->connect_errno) {
     
    			echo 'Erreur de connexion. Message d\'erreur : ' . $mysqli->connect_error;
     
    			exit;
    		}
     
    		$filename = $_FILES["upload"]["tmp_name"];
     
    		if($_FILES["upload"]["size"] > 0) {
     
    			$file = fopen($filename, "r");
     
    			while(($column = fgetcsv($file, 10000, ";")) !== FALSE) {
     
    				$query = 'INSERT INTO meteo_city(dates, ville_name, period, to_summarize, id_to_summarize,
    				minimum_temperature, maximum_temperature, commentaire) VALUES("' . $column[0] . '","' . $column[1] . '",
    				"' . $column[2] . '","' . $column[3] . '","' . $column[4] . '","' . $column[5] . '","' . $column[6] . '",
    				"' . $column[7] . '")';
     
    				$result = $mysqli->query($query);
    			}
     
    			fclose($file);
    		}
     
    		if(!empty($result)) {
     
    			return true;
    		}
    		else {
     
    			return false;
     
    			$mysqli->close(); 
    		}
     
    		header('Location: index.php');
     
    		exit;
    	}
     
    	public function getMeteo() {
     
    		$mysqli = new mysqli('localhost', 'root', '', 'meteo');
    		$mysqli->set_charset("utf8");
     
    		if($mysqli->connect_errno) {
     
    			echo 'Erreur de connexion. Message d\'erreur : ' . $mysqli->connect_error;
     
    			exit;
    		}
     
    		$query = 'SELECT ville_id, dates, ville_name, period, to_summarize, id_to_summarize,
    		minimum_temperature, maximum_temperature, commentaire FROM meteo_city';
     
    		$result = $mysqli->query($query);
     
    		if(!$result) {
     
    			echo 'Erreur au niveau de la requête. Message d\'erreur ' . $mysqli->error;
     
    			return false;
    		}
    		else {
     
    			while($row = $result->fetch_array()) {
     
    				$ville_id = $row['ville_id'];
    				$dates = $row['dates'];
    				$ville_name = $row['ville_name'];
    				$period = $row['period'];
    				$to_summarize = $row['to_summarize'];
    				$id_to_summarize = $row['id_to_summarize'];
    				$minimum_temperature = $row['minimum_temperature'];
    				$maximum_temperature = $row['maximum_temperature'];
    				$commentaire = $row['commentaire'];
     
    				$meteo_city[$ville_id]['Dates'] = $dates;
    				$meteo_city[$ville_id]['Nom de la ville'] = $ville_name;
    				$meteo_city[$ville_id]['La periode'] = $period;
    				$meteo_city[$ville_id]['Le resume'] = $to_summarize;
    				$meteo_city[$ville_id]['id du resume'] = $id_to_summarize;
    				$meteo_city[$ville_id]['La temperature minimum'] = $minimum_temperature;
    				$meteo_city[$ville_id]['La temperature maximum'] = $maximum_temperature;
    				$meteo_city[$ville_id]['Le commentaire'] = $commentaire;
    			}
     
    			return $meteo_city;
     
    			$mysqli->close();
    		}
    	}	
    }

  4. #24
    Membre actif Avatar de Trehinos
    Homme Profil pro
    Analyste développeur PHP
    Inscrit en
    Novembre 2012
    Messages
    100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Analyste développeur PHP
    Secteur : Distribution

    Informations forums :
    Inscription : Novembre 2012
    Messages : 100
    Points : 232
    Points
    232
    Par défaut
    Votre variable $meteo_city n'est pas déclarée... Si le code entrait dans le while ça ne poserait pas de problème...
    Visiblement, votre requête ne renvoie aucun résultat.

    Ajoutez $meteo_city = []; pour déclarer la variable juste avant le while supprimera cette erreur. Ensuite il faudra comprendre pourquoi votre SELECT ne retourne aucun résultat.


    Attention, aussi : vous faites le return $meteo_city; avant une autre instruction. Cette dernière ne sera jamais exécutée puisque le return sort de la fonction. Placez votre return après $mysqli->close();.
    Même remarque pour l'insertion. Le return doit toujours être la dernière instruction de la fonction (ou du "chemin de code", une fonction pouvant avoir plusieurs return).

  5. #25
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2019
    Messages
    101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2019
    Messages : 101
    Points : 45
    Points
    45
    Par défaut
    Merci bien ça marche bonne soirée

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Importer fichier csv vers excel avec vba
    Par Freudsw dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 16/09/2015, 17h01
  2. [XL-2010] Importer fichier CSV vers MYSQL en VBA Excel
    Par 6116d dans le forum Macros et VBA Excel
    Réponses: 14
    Dernier message: 17/06/2014, 16h40
  3. importation fichier csv vers mysql par php
    Par frboyer dans le forum Langage
    Réponses: 4
    Dernier message: 26/05/2009, 09h21
  4. [CSV] exporter des données d'un fichier CSV vers BD Mysql
    Par samsso2006 dans le forum Langage
    Réponses: 2
    Dernier message: 04/05/2007, 22h25
  5. [XML][MYSQL] Importation données XML vers BDD MySql
    Par Ben-o dans le forum XQUERY/SGBD
    Réponses: 2
    Dernier message: 04/05/2006, 18h13

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