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 :

Contrôle date avant insertion dans base de données


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité
    Invité(e)
    Par défaut Contrôle date avant insertion dans base de données
    Bonjour,

    J'aimerai trouver une solution à mon problème car pour être honnête je n'ai absolument aucune idée vers où m'orienter pour le moment.

    Je dois importer le contenu d'un fichier.csv dans ma base de donnée MySQL, cependant je dois vérifier certaines choses avant.

    Le fichier type (car il y en aura plusieurs) est composé de deux colonnes : une colonne avec date & heure, et une autre colonne avec une valeur décimale. Il y a avant ce contenu, quelques lignes de texte et à la fin du fichier entre 3 et 4 lignes de texte aussi.

    En effet, j'aimerai faire une condition qui me permettrait de ne sélectionner que les données dates et numériques. Cependant, je ne sais pas comment effectuer ce contrôle (peut-être y a-t-il une fonction déjà existante ?).

  2. #2
    Expert confirmé

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 418
    Par défaut
    Essaies avec fgetcsv pour lire le contenu du fichier csv qui alimentera ta requête d'insertion.

    Il y a bien LOAD DATA INFILE qui serait plus optimisé (rapide) mais il faut des droits mysql sur les fichiers (qui ne sont jamais autorisés sur les serveurs mutualisés).

  3. #3
    Invité
    Invité(e)
    Par défaut
    Merci mais j'ai justement utilisé cette fonction fgetcsv. Maintenant comment identifier le contenu ? C'est cela le problème principal.

  4. #4
    Expert confirmé

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 418
    Par défaut
    C'est expliqué dans l'exemple de la doc de fgetcsv. Pour commenter cet exemple :
    $data renvoi un tableau indexé numériquement. Si tu veux les colonnes 2 et 3 de ta table tu pourras les récupérer avec $data[1] et $data[2]

  5. #5
    Membre Expert

    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2011
    Messages
    1 723
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2011
    Messages : 1 723
    Par défaut
    Pour t'aider encore un peu plus :

    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
    $row = 1;
    if (($handle = fopen("test.csv", "r")) !== FALSE) {
        while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
            $num = count($data);
            echo "<p> $num champs à la ligne $row: <br /></p>\n";
            $row++;
            for ($c=0; $c < $num; $c++) {
                echo $data[$c] . "<br />\n";
            }
        }
        fclose($handle);
    }
    ?>
    Réflexe de la doc http://www.php.net/manual/fr/function.fgetcsv.php

  6. #6
    Invité
    Invité(e)
    Par défaut
    Merci de cette réponse, mais je sais aussi cela

    Actuellement, mon code fonctionne. J'ai des lignes avec soit des chaines de caractères, soit des dates.
    Ce que je fais, c'est que je converti la première colonne de chaque ligne en cours en un tableau, et je regarde si les deux premiers caractères sont numériques. Comme il s'agit de dates, ma condition fonctionne.

    Cependant, je trouve que cela reste du bricolage, je souhaiterai vérifier qu'il s'agisse intégralement d'une date et non simplement de deux caractères numériques.

Discussions similaires

  1. Réponses: 2
    Dernier message: 23/11/2006, 10h37
  2. [VB.NET]Requete INSERT dans base de données access
    Par mael94420 dans le forum ASP.NET
    Réponses: 2
    Dernier message: 05/10/2006, 13h57
  3. Réponses: 6
    Dernier message: 09/06/2006, 12h17
  4. Réponses: 9
    Dernier message: 13/10/2005, 18h24
  5. Réponses: 8
    Dernier message: 11/05/2005, 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