csv et construction requete

Invité
Invité n'ayant pas de compte PHPfrance

10 avr. 2007, 14:34

Bonjour à tous,
J'utilise fgetcsv pour récupérer le contenu d'un fichier csv.
Tout ce passe bien et j'obtiens un tableau contenant des infos sur un client (nom, prénom, adresse, code postal...).
Ca donne ceci:
8 fields in line 1:
GINOUX
Jean-Marc
R�sidence Les Glycines B�timent B
83000
Toulon
France
[email protected]

8 fields in line 2:
GORIN
Nicolas
9, rue V. Gaillard
80110
Moreuil
France
[email protected]
Je voudrais insérer ces éléments à la volée dans une table clients.
Mon pb est que je ne vois pas comment préciser quelle donnée doit aller dans quel champ de la table.
Quelle est la meilleure solution pour y arriver?
Voici mon code:
while ($data = fgetcsv($fichier, filesize($uploaddir), ";")) {
    $num = count($data);
    //echo "<p> $num fields in line $row: <br /></p>\n";
    $row++;
    for ($c=0; $c < $num; $c++) {
        echo $data[$c] . "<br />\n";
    }

}

fclose($fichier);

Eléphant du PHP | 80 Messages

10 avr. 2007, 14:41

Vous voulez dire afficher les données sous forme d'un tableau ?

Faites ainsi :
echo "<table border=\"2\">\n";

while ($data = fgetcsv($fichier, filesize($uploaddir), ";")) {
    $num = count($data);
    $row++;
    echo "<tr>\n";
    for ($c=0; $c < $num; $c++) {
        echo "<td>" . $data[$c] . "</td>\n";
    }
    echo "</tr>\n";
}

echo "</table>\n";

fclose($fichier); 

Invité
Invité n'ayant pas de compte PHPfrance

10 avr. 2007, 14:46

Bonjour et merci pour la réponse.
En fait je ne voudrais pas insérer les données dans un tableau, mais plutôt une base de données mysql.

Eléphant du PHP | 80 Messages

10 avr. 2007, 14:56

Pardon. J'ai mal compris.

La solution la plus simple (mais peu optimisée) que je vois consiste à construire un array avec les valeurs récupérées à partir du fichier pour ensuite les enregistrer dans la base de données :
while ($data = fgetcsv($fichier, filesize($uploaddir), ";")) {
    $num = count($data);
    //echo "<p> $num fields in line $row: <br /></p>\n";
    $row++;
    $ar_temp = array(); // Cree un nouveau vecteur
    for ($c=0; $c < $num; $c++)
    {
        $arr_temp[] = $data[$c]; // Ajoute au vecteur des valeurs successives
    }
    // Requete a la base de donnees
    mysql_query("INSERT INTO nom_tableau (nom, prenom, adresse, cp, ville, pays, mail)
        VALUES ('" . $ar_temp[0] . "', '" . $ar_temp[1] . "', '" . $ar_temp[2] . "', '" . $ar_temp[3] . "', '" . $ar_temp[4] . "', '" . $ar_temp[5] . "', '" . $ar_temp[6] . "')", $link);
    unset($ar_temp); // Supprime le vecteur
}

fclose($fichier);

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

10 avr. 2007, 15:02

Ou il existe LOAD DATA INFILE
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer