csv et construction requete

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : csv et construction requete

par zeus » 10 avr. 2007, 15:02

Ou il existe LOAD DATA INFILE

par MainMa » 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);

par Invité » 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.

par MainMa » 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); 

csv et construction requete

par Invité » 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);