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 :

Jointure et PHP creant fichier .CSV [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2010
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2010
    Messages : 30
    Points : 25
    Points
    25
    Par défaut Jointure et PHP creant fichier .CSV
    Bonjour,

    Alors je souhaite creer un fichier .csv a partir des donnees stockees dans une BDD SQL :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    function createCsvFileIE($tabRef){
        $db = mysqli_connect("localhost","interns","41e","test_reporting");
     
        for($i = 0; $i <= sizeof($tabRef); $i++) {
            $sql = "SELECT DISTINCT reference.horizonIE, sku.vow_backorders, qty.vow_backorders, order_created_at.vow_backorders FROM horizonIE, vow_backorders WHERE reference.horizonIE = '" . $tabRef[$i] . "'";
            $result = mysqli_query($db, $sql);
            $csv = fopen('BackorderIE.csv', 'w');
     
            while($row = mysqli_fetch_assoc($result))  fputcsv($csv, $row);
        }
     
        echo 'BackorderIE.csv is created.<br/>';
        fclose($csv);
    }
    Cependant le fichier est vide, je suppose que ma jointure est fausse ou l'affectation aussi.

    Merci !

  2. #2
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Tu ouvres le fichier à l'intérieur de ta boucle for. Donc tu veux l'ouvrir autant de fois qu'il ya de tours de boucle. Et comme tu l'ouvres en mode "w", à chaque ouverture, il écrase le contenu du fichier.
    Donc, au mieux tu as les données correspondant au dernier tour de boucle for, au pire si il n'y a pas de données pour le dernier tour, tu as un fichier vide.

    Essaye en ouvrant le fichier à l'extérieur de la boucle :
    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
    function createCsvFileIE($tabRef){
        $db = mysqli_connect("localhost","interns","41e","test_reporting");
        // ouverture du fichier 
        $csv = fopen('BackorderIE.csv', 'w');
     
        for($i = 0; $i <= sizeof($tabRef); $i++) {
            $sql = "SELECT DISTINCT reference.horizonIE, sku.vow_backorders, qty.vow_backorders, order_created_at.vow_backorders FROM horizonIE, vow_backorders WHERE reference.horizonIE = '" . $tabRef[$i] . "'";
            $result = mysqli_query($db, $sql);
     
            while($row = mysqli_fetch_assoc($result))  fputcsv($csv, $row);
        }
     
        echo 'BackorderIE.csv is created.<br/>';
        fclose($csv);
    }
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2010
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2010
    Messages : 30
    Points : 25
    Points
    25
    Par défaut
    Non toujours rien malheuresement

  4. #4
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Dans ce cas, ça vient vraiment des données.
    Le plus simple est d'afficher les données qui sont trouvées en même temps que l'écriture CSV :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $sql = "SELECT DISTINCT reference.horizonIE, sku.vow_backorders, qty.vow_backorders, order_created_at.vow_backorders FROM horizonIE, vow_backorders WHERE reference.horizonIE = '" . $tabRef[$i] . "'";
    $result = mysqli_query($db, $sql);
     
    while($row = mysqli_fetch_assoc($result))  {
        var_dump($row);
        fputcsv($csv, $row);
    }
    Au passage, tu parles de jointure, mais je n'en vois aucune dans ta requête. Là, ce que tu as c'est un produit cartésien : ça va te renvoyer toutes les valeurs de la table B pour chaque valeur de la table A. ça n'explique pas pourquoi tu n'as rien dans ton fichier, mais je doute que ce soit ce que tu voulais faire.
    Y a-t-il une colonne permettant de faire la correspondance entre les deux tables ?
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2010
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2010
    Messages : 30
    Points : 25
    Points
    25
    Par défaut
    Voila ca marche, le fichier nest pas propre mais ca marche

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
        for($i = 0; $i <= sizeof($tabRef); $i++) {
            $sql = "SELECT shipment.order_id, vow_backorders.sku, vow_backorders.qty, vow_backorders.expected_delivery_date FROM `vow_backorders` LEFT JOIN shipment ON vow_backorders.kwos = shipment.KWOS";
            $result = mysqli_query($db, $sql);
     
            while($row = mysqli_fetch_assoc($result)) { fputcsv($csv, $row); }
        }

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

Discussions similaires

  1. [MySQL] php et fichier csv fusionner/grouper des lignes
    Par venus02 dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 21/03/2011, 15h28
  2. php et fichier csv
    Par pikaTuX dans le forum Langage
    Réponses: 0
    Dernier message: 25/11/2010, 12h13
  3. [CSV] Importer un fichier CSV ou OV2 dans une page PHP
    Par gpsevasion dans le forum Langage
    Réponses: 13
    Dernier message: 12/02/2009, 14h31
  4. [CSV] Créer un fichier csv depuis php
    Par jbidou88 dans le forum Langage
    Réponses: 5
    Dernier message: 07/05/2007, 17h41
  5. [CSV] Fichier CSV en PHP
    Par rimeh dans le forum Langage
    Réponses: 1
    Dernier message: 11/01/2007, 12h01

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