[PHP/Excel] Gegevens verwerking *

Pagina: 1
Acties:
  • 111 views sinds 30-01-2008
  • Reageer

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Bellerophon
  • Registratie: Februari 2002
  • Laatst online: 14-09 21:56

Bellerophon

Persona non grata

Topicstarter
(jarig!)
Hier de volgende vraag:

Een bedrijf heeft een lijst met producten erin en de daarbij behorende prijzen, deze lijst is opgemaakt in een excel bestand.

Deze excel pagina moet in een php pagina geladen worden.

Vraag: Hoe krijg je dit voor elkaar?

En is het dan ook mogelijk dat als men de excel pagina wijzigd dit wordt doorgevoerd in de php pagina?


Maar elke klant heeft een eigen kortings percentage over die producten, deze kortingspercentages moeten dus verwerkt worden in de php pagina.

Vraag: Hoe krijg je dit voor elkaar?


Aan de modjes, ik hoop dat de vraag correct is geformuleerd

PSN: Bellerophon-


Acties:
  • 0 Henk 'm!

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 18:44

gorgi_19

Kruimeltjes zijn weer op :9

Aan de modjes, ik hoop dat de vraag correct is geformuleerd
Geef via een TR even aan wat de volledige titel moet zijn :)

Zie trouwens ook http://www.experts-exchan...P_Windows/Q_20996390.html

en neem in overweging om een echtere database te nemen en MS Excel hier niet voor te misbruiken.

[ Voor 42% gewijzigd door gorgi_19 op 17-03-2005 09:59 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Acties:
  • 0 Henk 'm!

  • TERW_DAN
  • Registratie: Juni 2001
  • Niet online

TERW_DAN

Met een hamer past alles.

Is het niet mogelijk om een database op te zetten waarin deze gegevens ingevuld kunnen worden? Dat kost je nu 1 keer wat werk om dat excel bestand om te zetten maar weet je zeker dat het werkt.
Excel heeft een eigen opmaak en het is een stuk lastiger voor PHP om daar iets mee te kunnen doen.
Mocht je het toch willen doen in dat bestand zou ik het eerst om zetten naar plaintext, zodat je in ieder geval geen last hebt van de opmaak.

Acties:
  • 0 Henk 'm!

  • Bellerophon
  • Registratie: Februari 2002
  • Laatst online: 14-09 21:56

Bellerophon

Persona non grata

Topicstarter
(jarig!)
TR?

[PHP/Excel] Gegevens verwerking , dat moet dan de titel zijn.

Hoe bedoel je het gebruik van een database? De excel gegevens in een MySQL database plaatsen?

PSN: Bellerophon-


Acties:
  • 0 Henk 'm!

  • ReLight
  • Registratie: Augustus 2001
  • Laatst online: 16-09 09:32

ReLight

echo("What Now ? !")

mega lelijke oplossing misschien (weet het wel zeker) maar was het op win bakken niet mogelijk om een odbc koppeling te maken naar een excel sheet ? of ADO koppeling?

Mijn zoon & dochter zijn de toekomst, de rest is tijdsvermaak. Home assistant & & Nibe S2125-12/SMO-S40, RMU-s40 & Tado - Volvo C40 ER, SE


Acties:
  • 0 Henk 'm!

  • TERW_DAN
  • Registratie: Juni 2001
  • Niet online

TERW_DAN

Met een hamer past alles.

Bellerophon schreef op donderdag 17 maart 2005 @ 10:05:
TR?

[PHP/Excel] Gegevens verwerking , dat moet dan de titel zijn.

Hoe bedoel je het gebruik van een database? De excel gegevens in een MySQL database plaatsen?
Precies.
En desnoods even een formpje maken waarmee de gebruiker gegevens kan aanpassen in de MySQL database.

Acties:
  • 0 Henk 'm!

  • Bellerophon
  • Registratie: Februari 2002
  • Laatst online: 14-09 21:56

Bellerophon

Persona non grata

Topicstarter
(jarig!)
Terw_Dan schreef op donderdag 17 maart 2005 @ 10:07:
[...]


Precies.
En desnoods even een formpje maken waarmee de gebruiker gegevens kan aanpassen in de MySQL database.
Ok dus in de database een tabel aanmaken waarin alle artikelen geplaatst worden.
Een php pagina maken waarin een gebruiker deze gegevens kan wijzigen

En deze pagina kan dan gebruikt worden om aan de eindgebruiker te laten zien?
Maar hoe krijg ik dit dan voor elkaar? En is het dan mogelijk om per gebruiker een eigen kortings percentage mee te geven?

PSN: Bellerophon-


Acties:
  • 0 Henk 'm!

  • TERW_DAN
  • Registratie: Juni 2001
  • Niet online

TERW_DAN

Met een hamer past alles.

Bellerophon schreef op donderdag 17 maart 2005 @ 10:09:
[...]


Ok dus in de database een tabel aanmaken waarin alle artikelen geplaatst worden.
Een php pagina maken waarin een gebruiker deze gegevens kan wijzigen

En deze pagina kan dan gebruikt worden om aan de eindgebruiker te laten zien?
Maar hoe krijg ik dit dan voor elkaar? En is het dan mogelijk om per gebruiker een eigen kortings percentage mee te geven?
Ja hoor.
Maak een tabel met de standaard prijzen.
Daarnaast maak je een tabel met de gebruiker erin en evt het kortingspercentage.
Stel dat iemand 6% korting krijgt (ik noem maar wat) en dus 94% van de standaard prijs betaald. Dan geef je alle prijzen weer in de vorm van PRIJS * kortingspercentage.
Die kortingspercentage haal je uit de tabel gebruikers (en dat is te controleren aan de hand van een inlog systeem) en post je op het form dat de gebruiker te zien krijgt.

Ik weet niet hoe je dit met excel doet, maar zo is het zeker per gebruiker een goede manier om de prijzen weer te geven en kun je uiteraard zo complex maken als het maar kan. Daarnaast is het ook makkelijk te onderhouden.

Acties:
  • 0 Henk 'm!

  • Bellerophon
  • Registratie: Februari 2002
  • Laatst online: 14-09 21:56

Bellerophon

Persona non grata

Topicstarter
(jarig!)
Ok toch nog even wat meer informatie

Het gaat om een medisch bedrijf, dit bedrijf heeft een assortiment van meer dan 16.000 producten.

Deze prijzenlijst wordt door de moeder organisatie geleverd, deze heeft een SAP applicatie en die levert een excel document aan de organisatie hier.

Daarom is het best veel werk om de text over te typen in SQL.

Dus vandaar mijn vraag of het mogelijk is om de excel gegevens in te laden in een database.

Of is het zelfs mogelijk om met het SAP programma de gegevens in Access form of SQL form te leveren?

PSN: Bellerophon-


Acties:
  • 0 Henk 'm!

Verwijderd

Speciaal maar even een account voor je aangemaakt :) Ik heb voor mijn stage een tijd geleden een paar weken naar een oplossing gezocht en deze uiteindelijk goed kunnen implementeren. Ik zou je aanraden om elke keer dat je een excelfile krijgt deze eenmalig uit te lezen en alles in een echte database te zetten. Excel is niet echt stabiel in samenwerking met php.

Hieronder heb ik een knipsel uit mijn eigen code gezet. Alle queries van mezelf heb ik eruit gelaten.

Allereerst maak je verbinding met excel. Dit moet allemaal op dezelfde computer staan btw. Je moet dus een webserver hebben waar je ook daadwerkelijk achter zit, bijvoorbeeld van je workstation tijdelijk een workstation maken.

Hierna ga je regel voor regel door de excel file. Hierbij haal ik nu uit kolom 1 tm 4 informatie. In kolom 4 heb ik een datum gezet en deze wordt ook nog voor je geconverteerd naar een timestamp(14)

Aan het einde wordt er in een savekolom informatie gezet in de excel file, bijvoorbeeld of het importeren gelukt is ja of nee.

Veel succes!

code:
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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
<?php   
  //file for converting from excel to mysql.
    
  //setting the variables used for opening of the application
    $xlfile         = "c:\\sisdb\\contracts.xls";       //path to local xls file
    $visible        = 1;                    //visible yes or no on the server
    $alerts         = 0;                    //alerts yes or no
    $savekolom      = 17;                   //kolom where the result will be stored in the xls file
    $worksheet      = 1;                    //worksheet of the xls file
    $beginrow       = 2;                    //watch out for the headers. Let it start at two if you have one.
    $endrow         = 16000;                //endrow

    //load the excel application
    $excel = new COM("excel.Application") or die("Unable to start Excel"); 
    echo "Loaded Excel Version ($excel->Version)<br>"; 
    
    //set visible to the visiblevar (look higher)
    $excel->Application->Visible=$visible;      
    
    //set alerts to the alertsvar (look higher)
    $excel->Application->DisplayAlerts = $alerts; 
    
    //open the workbook (look higher)
    $workbook = $excel->Workbooks->Open($xlfile); 
    
    //open the worksheet (look higher)
    $worksheet = $workbook->Worksheets($worksheet); 

    //check the max location id, used later when inserting into the db
    $connection = connectdbextern();
    mysql_select_db($db);       
    

    //going from beginrow till endrow
    for($i=$beginrow;$i<$endrow;$i++){
        //these blocks will get the information from a kolom. $i is the rownumber. The names
        //speak for themselves. Addslashes is need when a cell contains a / or\ or ' or " for example
        
            $excontract = $worksheet->Cells($i,1); 
        $excontract -> activate; 
        $contract = $excontract -> value;
        $contract = addslashes($contract);

        $excustomer = $worksheet->Cells($i,2); 
        $excustomer -> activate; 
        $customer = $excustomer -> value;
        $customer = addslashes($customer);
        $customer = ltrim($customer,"0");
        
        $exuser = $worksheet->Cells($i,3); 
        $exuser -> activate; 
        $user = $excustomer -> value;
        $user = addslashes($user);
        $user = ltrim($user,"0");

        $exenddate = $worksheet->Cells($i,4); 
        $exenddate -> activate; 
        $enddate = $exenddate -> value;
        
            //converting of a excel date to mysql date
        $enddate = trim($enddate);

        if(strlen($enddate)==5){
            (int) $l = $enddate + 68569 + 2415019;
            (int) $n = (int)(( 4 * $l ) / 146097);
            $l = $l - (int)(( 146097 * $n + 3 ) / 4);
            (int) $t = (int)(( 4000 * ( $l + 1 ) ) / 1461001);
            $l = $l - (int)(( 1461 * $t ) / 4) + 31;
            (int) $j = (int)(( 80 * $l ) / 2447);
            $day = $l - (int)(( 2447 * $j ) / 80);
            $l = (int)($j / 11);
            $month = $j + 2 - ( 12 * $l );
            $year = 100 * ( $n - 49 ) + $t + $l;
            if(strlen($month)==1){
                $month="0".$month;
            }
            if(strlen($day)==1){
                $day="0".$day;
            }
            $year = substr($year,2,2);
            $enddate=$day."/".$month."/".$year;     
        }       

        $enddate = explode("/", $enddate);

        $day        = $enddate[0];
        $month      = $enddate[1];
        $year       = $enddate[2];

        if(strlen($day)==1){
            $day="0".$day;
        }
        if(strlen($month)==1){
            $month="0".$month;
        }
        if(strlen($year)==2){
            if($year=="88"){$year="1988";}
            if($year=="89"){$year="1989";}
            if($year=="90"){$year="1990";}
            if($year=="91"){$year="1991";}
            if($year=="92"){$year="1992";}
            if($year=="93"){$year="1993";}
            if($year=="94"){$year="1994";}
            if($year=="95"){$year="1995";}
            if($year=="96"){$year="1996";}
            if($year=="97"){$year="1997";}
            if($year=="98"){$year="1998";}
            if($year=="99"){$year="1999";}
            if($year=="00"){$year="2000";}
            if($year=="01"){$year="2001";}
            if($year=="02"){$year="2002";}
            if($year=="03"){$year="2003";}
            if($year=="04"){$year="2004";}
            if($year=="05"){$year="2005";}
            if($year=="06"){$year="2006";}
            if($year=="07"){$year="2007";}
            if($year=="08"){$year="2008";}
        }
        $enddate    = $year.$month.$day."000000";
        $enddate    = addslashes($enddate);

        
        //blablabla, all sorts of queries, not important for you.

        
        //set the savekolom with the result of the checksystem
        if($resultcheck_id){
            $data = $worksheet->Cells($i,$savekolom); 
            $data -> activate; 
            $data -> value="Goed";
        }else{
            $data = $worksheet->Cells($i,$savekolom); 
            $data -> activate; 
            $data -> value="Fout";
        }
    }
?>

Acties:
  • 0 Henk 'm!

  • Bellerophon
  • Registratie: Februari 2002
  • Laatst online: 14-09 21:56

Bellerophon

Persona non grata

Topicstarter
(jarig!)
Enorm bedankt voor de hulp iedereen.

Maar ik heb daarnet even een bericht doorgekregen van het bedrijf hier, de moeder organisatie in duitsland is in staat om de productlijst (Deze wordt geleverd via het SAP programma) in SQL te leveren.

Deze gegevens moeten dus alleen nog in de MySQL database geplaatst worden en hierover moeten dan de kortingspercentages berekend worden.

Maar volgens mij zorgt dit er wel voor dat de data heel wat sneller en beter kan worden ingevoerd, ipv de excel data.

PSN: Bellerophon-


Acties:
  • 0 Henk 'm!

  • TERW_DAN
  • Registratie: Juni 2001
  • Niet online

TERW_DAN

Met een hamer past alles.

Bellerophon schreef op donderdag 17 maart 2005 @ 11:53:
Enorm bedankt voor de hulp iedereen.

Maar ik heb daarnet even een bericht doorgekregen van het bedrijf hier, de moeder organisatie in duitsland is in staat om de productlijst (Deze wordt geleverd via het SAP programma) in SQL te leveren.

Deze gegevens moeten dus alleen nog in de MySQL database geplaatst worden en hierover moeten dan de kortingspercentages berekend worden.

Maar volgens mij zorgt dit er wel voor dat de data heel wat sneller en beter kan worden ingevoerd, ipv de excel data.
Ik zou de gegevens anders wel realtime bewerken (dus zodra deze opgevraagd worden vanuit de database). Het idee hierachter is dat je niet voor iedere klant een aparte database op hoeft te gaan zetten.

Maar een SQL koppeling maken is heel simpel, op die manier gisteren een database overgezet van de ene naar de andere server. gegevens blijven 100% intact en het is best snel.
Pagina: 1