inporteren van data uit exel naar mysql

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Peter spek

peter spek

08/02/2012 13:39:57
Quote Anchor link
is het mogenlijk (en hoe) om data te inporteren uit een exelsheet naar meerdere verschillende tabellen in een mysql database door middel van php?
 
PHP hulp

PHP hulp

08/11/2024 20:41:52
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

08/02/2012 14:42:04
Quote Anchor link
Ja dat is mogelijk, bv met PHPExcel of eerst csv te exporteren vanuit excel en daarna inlezen met PHP of rechtstreeks in MYSQL.
 
Peter spek

peter spek

08/02/2012 14:57:51
Quote Anchor link
wat voor php codes zou ik dan moeten gebruiken om een csv uit telezen en in meerdere bestaande tabellen te plaatsen ik heb al gevonden hoe het werkt voor 1tabel maar niet voor meerdere
 
Kris Peeters

Kris Peeters

08/02/2012 15:00:49
Quote Anchor link
Kijk hier eens
http://php.net/manual/en/function.fgetcsv.php


Hoe ziet de data er uit?
Wat moet er in welke tabel komen?
Waarom in meer dan 1 tabel?
Gewijzigd op 08/02/2012 15:02:23 door Kris Peeters
 
Peter spek

peter spek

08/02/2012 15:10:34
Quote Anchor link
het is 1 exell sheat met meerdere collommen de meeste collommen moetten in 1 tabel in de database komen alleen 2 van de collommen van het exel sheat moetten in een andere tabel komen.
 
Kris Peeters

Kris Peeters

08/02/2012 15:45:52
Quote Anchor link
Dan lijkt het me vrij simpel.

Je zult wel ergens een lus hebben, iets als (zie mijn link, Example #1)

while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {


Dan is $data[0] de eerste kolom, $data[1] de tweede ...

Dan kan je ies doen als
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?php
...
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
  
  mysql_query("INSERT INTO mijntabel1 (kolom1, kolom2) VALUES ('" . $data[0] . "', '" . $data[1] . "') ");
  mysql_query("INSERT INTO mijntabel2 (foo) VALUES ('" . $data[5] . "') ");

}
...

?>


Wat waarschijnlijk wel nog beter is, is om de sql-string op te bouwen en in 1 keer te laten uitvoeren, in plaats van telkens mysql aan te spreken.

Iets in die aard:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
...
$sql_tabel1 = "INSERT INTO mijntabel1 (kolom1, kolom2) VALUES ";
$sql_tabel2 = "INSERT INTO mijntabel2 (foo) VALUES ";
$i=0;
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
  if ($i++ > 0) {  // dit voegt een komma toe tussen elk record, (niet na de laatste record)
    $sql_tabel1 .= ", ";
    $sql_tabel2 .= ", ";
  }

  $sql_tabel1 .= "('" . $data[0] . "', '" . $data[1] . "') ";
  $sql_tabel2 .= "('" . $data[5] . "') ";
}

if ($i > 0) {
  mysql_query($sql_tabel1);
  mysql_query($sql_tabel2);
}
...

?>
Gewijzigd op 08/02/2012 15:47:52 door Kris Peeters
 
Peter spek

peter spek

08/02/2012 15:50:03
Quote Anchor link
ik heb het uitgeprobeert maar er gebeurt helemaal niks. dit zijn de eerste paar regels van mijn csv:

Artikel;Artikelomschrijving;Art. lev. 1;Art. lev. 2;Vrij;Tech;Geres; Inkoopprijs ; Verkoopprijs
48201035;"10"" 8port 10/100 Mbps switch incl paneel";ZFS3008S;;0;0;0; 26,43 ; 54,00
45054001;"10"" power strip 3x on/off switch";14.0005;;0;0;0; 16,29 ; 30,00
44951012;"10""Patchpaneel UTP 8 port CAT.5e LSA";010.12.705001;;0;0;0; 19,79 ; 29,00
48953010;10/100 Multi-Mode SC;DN-82020-1;;2;2;0; 16,33 ; 39,00

het is de bedoelling dat artikel, artikelomschrijving, vrij in een tabel komen van mijn database en dat inkoopprijs / verkoopprijs in een andere tabel komen gekoppelt aan het artikelnummer



maar hoe moet ik dat maken ik heb al een heleboel uitgeprobeert maar nog niks doet het
Gewijzigd op 10/02/2012 10:49:24 door peter spek
 
Peter spek

peter spek

10/02/2012 16:06:17
Quote Anchor link
fout gevonden in mijn csv staat het niet met een , maar met een ; als schijdingsteken

while (($data = fgetcsv($handle, 1000, ","))
moet zijn:
while (($data = fgetcsv($handle, 1000, ";"))
Gewijzigd op 10/02/2012 16:06:54 door peter spek
 
Kris Peeters

Kris Peeters

10/02/2012 16:21:10
Quote Anchor link
(EDIT: Ik zie dit juist; en ik zie dat je net tot de zelfde conclusie bent gekomen)
Het zal aan de delimiter liggen. Ik zie dat ze bij jou een puntkomma is.

Dat wordt dus
fgetcsv($handle, 1000, ";")

in plaats van
fgetcsv($handle, 1000, ",")
Gewijzigd op 10/02/2012 16:22:23 door Kris Peeters
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.