CSV import PHP

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Jan Jaap van der Sluijs

Jan Jaap van der Sluijs

12/10/2012 16:30:06
Quote Anchor link
Hallo,

Ik heb de volgende vraag: heeft iemand nog een script voor het importeren van een CSV file in PHP? Ik krijg wel de CSV geimporteerd, maar wil graag de dubbele quotes replacen voor bijvoorbeeld een TD en nog mooier zou zijn dat ik één van de rijen kan optellen.

Dit is wat ik al heb:

Quote:
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
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<?php

echo fgetcsv_PHP();
 
function
fgetcsv_PHP()
{

    if (($handle = fopen("Betalingen.csv", "r")) !== FALSE)
    {

        $length = 1000;
        $delimiter = "|";
        echo "<table>\n";
        echo "<td><b>Naam</b></td><td><b>Bedrag</b></td><td><b>Dossiernummer</b></td>";
 
        $i = 0; // ADDED
        while ( ( $data = fgetcsv( $handle, $length, $delimiter ) ) !== FALSE )
        {

        if( $i == 0 || $i == 3 ) // ADDED
        {
                $num = count($data);
                echo "<tr>\n";
 
                for ($c=0; $c < $num; $c++)
                {

                    echo "<td>".$data[$c]."</td>\n";
                }
    
                echo "</tr>\n";
        }

        $i++; // ADDED
        }
        echo "</table>";
        fclose($handle);
    }
}

?>


Bedankt!
Gewijzigd op 12/10/2012 16:31:11 door Jan Jaap van der Sluijs
 
PHP hulp

PHP hulp

19/04/2024 18:30:21
 
Eddy E

Eddy E

12/10/2012 18:09:20
Quote Anchor link
Geef eens een stukje van die .csv (regel of 10 of zo).
Ik heb vaker teksten/csv/txt zo ingeladen. Je bent aardig op weg, alleen mis ik de logica. Probeer het terug te brengen naar minder code: door de juiste functies te gebruiken.
Vooral EXPLODE() en LIST() etc.
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

12/10/2012 21:18:57
Quote Anchor link
Je weet toch dat csv staat voor Comma Separated Values!
 
Mebus  Hackintosh

Mebus Hackintosh

13/10/2012 00:12:08
 
Jan Jaap van der Sluijs

Jan Jaap van der Sluijs

13/10/2012 09:21:30
Quote Anchor link
@Ger: Ja dat klopt, ik zou even kort uitleggen wat het probleem is.

Ik maak gebruik van een Filemaker applicatie (in het verleden door iemand ontwikkeld). In deze applicatie moet er een betalingsoverzicht gemaakt worden met onderaan een optelling van een bepaalde kolom. Nu kan ik deze data exporteren als CSV of XML. @Ger: de CSV word gexporteerd met dubbele quotes i.p.v. kommas.

Ik bedenk me nu wel dat ik de data kan exporteren naar een MySQL database en daar vanuit de data weer kan uitlezen en optellen (bedankt mebus). Ik denk dat ik het tot zover wel even red.

Bedankt!
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

13/10/2012 10:01:28
Quote Anchor link
Ik zie in jouw code $delimiter = '|'
Hoe dan ook, je kan met mysql via LOAD DATA INFILE in één keer alle data uit een csv bestand in tabel pleuren, das veel handiger dan dat zeer omslachtig gedoe in dat script van Mebus
Gewijzigd op 13/10/2012 10:01:58 door Ger van Steenderen
 
Mebus  Hackintosh

Mebus Hackintosh

13/10/2012 10:45:40
Quote Anchor link
Ger van Steenderen op 13/10/2012 10:01:28:
Ik zie in jouw code $delimiter = '|'
Hoe dan ook, je kan met mysql via LOAD DATA INFILE in één keer alle data uit een csv bestand in tabel pleuren, das veel handiger dan dat zeer omslachtig gedoe in dat script van Mebus


Bedankt dat je ons op die MySQL functie wijst, maar het zo erg moeten afkraken van mijn script had niet gehoeven hoor? In mijn ogen is het gewoon een creatieve oplossing dat ik snel nodig had en andere mensen ook eventueel kunnen gebruiken.
 
Eddy E

Eddy E

13/10/2012 11:32:28
Quote Anchor link
Werkt prima.
Ik vind het wel handig dat Mebus de $delimiter los opgeeft. De | vervangen door een , is niet moeilijk en kan iedereen. Gewoon handig. Ik doe het ook vaak zo hoor, zeker als je nog wat aan de data wilt veranderen/filteren.
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

13/10/2012 11:54:19
Quote Anchor link
Mebus, wellicht dat ik me wat bot heb uitgedrukt, en met alle respect voor jou creatieve oplossing, maar LOAD DATA INFILE is op zijn minst 10x sneller in vergelijking met jou oplossing. Die overigens ook een stuk sneller had gekund als je de standaard INSERT syntax had gebruikt, nl een multiple insert in één statement:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
INSERT INTO tabel (co11,col2)
VALUES (11,21),(12,22)

@Eddy
Filters heb je maar zelden nodig, en voor de rest kan je alles regelen in LOAD DATE INFILE (delimiter, veld omsluitingen, etc.)
 



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.