php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger

PHP Einsteiger PHP Problemlösungen für Spracheinsteiger
Archive: 2004, 2004/2, 2005, 2005/2, 2006, 2007, 2008, 2009, 2010,

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 07.09.2011, 19:27  
Benutzer
 
Registriert seit: 12.04.2011
Beiträge: 43
PHP-Kenntnisse:
Fortgeschritten
Steeno befindet sich auf einem aufstrebenden Ast
Standard [Erledigt] Excel und Datenbank

Ich würde gerne mal ein paar Meinungen von euch hören.
Nehmen wir mal an, wir haben eine Excelfile mit ID's in der ersten Spalte und weiteren Spalten mit Werten, vielleicht höchstens 100 Zeilen.
Dazu gibt es eine Datenbanktabelle mit genau den gleichen Feldern, auch nur höchstens 100 Zeilen mit der entsprechenden Abfrage.
Die Daten des Excelfiles sollen in die Datenbank gespeichert werden, aber nur dann, wenn Werte größer 0.

Mein Lösungsweg:
Ich würde dazu erstmal die entsprechenden ID's aus der Datenbank in ein Array speichern.
Anschließend in ein anderes Array (Arrayaufbau = Datenbankfelder) die Daten aus dem Excelfile, aber immer nur dann, wenn die Werte größer 0 sind.

Jetzt würde ich mit array_intersect die Arrays vergleichen (ID's) und bei Übereinstimmung die Daten in der Datenbank aktualisieren, also mit einer foreach-Schleife ... VALUES ...

Würdet ihr das auch so machen, oder denke ich wieder zu kompliziert?
Was sagt die Performance dazu? Sind ja immerhin drei Schleifen.
Steeno ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 07.09.2011, 19:30  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.987
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Zitat:
Was sagt die Performance dazu? Sind ja immerhin drei Schleifen.
*Hust*

Zitat:
mit genau den gleichen Feldern, auch nur höchstens 100 Zeilen mit der entsprechenden Abfrage.
Die Daten des Excelfiles sollen in die Datenbank gespeichert werden, aber nur dann, wenn Werte größer 0.
Das sagt nichts darüber aus, was „die gleichen“ mit irgendwelchen „Werten größer 0“ gemein hat.
Schnöde eintragen kann man auch einfach über die DB regeln, die ID ist dann halt ein unique Schlüssel.
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline   Mit Zitat antworten
Alt 07.09.2011, 19:54  
Benutzer
 
Registriert seit: 12.04.2011
Beiträge: 43
PHP-Kenntnisse:
Fortgeschritten
Steeno befindet sich auf einem aufstrebenden Ast
Standard

Datenbanktabelle:
ID Key Wert1 Wert2 Wert3 ... Datum

Excelfile:
Key Wert1 Wert2 Wert3 ... Datum

Mit:
Zitat:
aber nur dann, wenn Werte größer 0
war die Spalte Wert1 gemeint.
Der Key kann mehrmals in der DB vorkommen, aber nur einmal am Tag.
Der Key in der Datenbankabfrage wird aber aus einer anderen Datenbanktabelle geholt, er wird nur benötigt, um die Übereinstimmung im Excelfile zu finden.

Wenn eine Übereinstimmung gefunden wurde, soll der alte Datenbankeintrag gelöscht und ein neuer Eintrag vorgenommen werden.
Wird keiner gefunden, wird nur ein neuer Datenbankeintrag vorgenommen.
Steeno ist offline   Mit Zitat antworten
Alt 07.09.2011, 21:02  
Moderator
 
Benutzerbild von Chriz
 
Registriert seit: 11.05.2008
Beiträge: 6.267
Chriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer Anblick
Standard

Und wer sagt, dass es irgendwann nicht doch mehr als 100 werden? Unter 1000 ist es fast egal, wie du es machst.

Ich würde es wohl auch billig machen, wenn es ein Einwegskript ist, dann ist die Laufzeit ja auch egal.

Wenn es mehr Daten werden könnten, würde ich das Excel in eine temporäre DB-Tabelle speichern und die Arbeit auf die Datenbank abwälzen.
__________________
"Nuschel ich?" - "Was?"
Chriz ist offline   Mit Zitat antworten
Alt 08.09.2011, 17:57  
Benutzer
 
Registriert seit: 12.04.2011
Beiträge: 43
PHP-Kenntnisse:
Fortgeschritten
Steeno befindet sich auf einem aufstrebenden Ast
Standard

Das mit der temporären DB-Tabelle werd ich mir mal genauer betrachten.

Und was ist eigentlich performanter, ein delete und anschließend insert befehl oder ist an sich update besser?
Steeno ist offline   Mit Zitat antworten
Alt 08.09.2011, 18:19  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.987
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Na was denkst Du wohl?
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline   Mit Zitat antworten
Alt 08.09.2011, 18:38  
Benutzer
 
Registriert seit: 12.04.2011
Beiträge: 43
PHP-Kenntnisse:
Fortgeschritten
Steeno befindet sich auf einem aufstrebenden Ast
Standard

na wahrscheinlich der update, weil ist ja nur eine anfrage
Steeno ist offline   Mit Zitat antworten
Alt 08.09.2011, 20:02  
Erfahrener Benutzer
 
Registriert seit: 01.06.2011
Beiträge: 390
PHP-Kenntnisse:
Anfänger
achtelpetit befindet sich auf einem aufstrebenden Ast
Standard

Das könnte auch helfen: http://dev.mysql.com/doc/refman/5.1/...duplicate.html
achtelpetit ist offline   Mit Zitat antworten
Alt 09.09.2011, 09:50  
Benutzer
 
Registriert seit: 12.04.2011
Beiträge: 43
PHP-Kenntnisse:
Fortgeschritten
Steeno befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
INSERT ... ON DUPLICATE KEY UPDATE
wird so nicht funktionieren, weil der PRIMARY KEY auf ID liegt, nicht auf KEY.

Der Key ist eine Zahlenkombination zwischen 0 und 100.
Jede Zahl kann nur einmal pro Tag auftreten.

Geändert von Steeno (09.09.2011 um 09:53 Uhr).
Steeno ist offline   Mit Zitat antworten
Alt 09.09.2011, 11:44  
Moderator
 
Registriert seit: 06.06.2008
Beiträge: 4.945
PHP-Kenntnisse:
Fortgeschritten
Wolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer Anblick
Wolla eine Nachricht über ICQ schicken
Standard

Ich vermute mal, dass du da keine Excel-Datei 'daten.xls' hast, sondern eine CSV-Datei 'daten.csv' ?
Da würde ich eine Schleife mit while ( $row = fgetcsv(...) ) {} aufsetzen und ohne weitere Prüfung einen DELETE FROM auf den key fahren, danach dann INSERT INTO. Wenn das einmal pro Tag laufen soll, dann ist es m.E. Wurscht, ob das Script 3 Sekunden oder 10 braucht.
__________________
Warum denkt mein Hund eigentlich immer dann, wenn es an der Tür klingelt, es sei für ihn?
Wolla ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[Erledigt] Datensätze von einer MySQL in eine andere MySQL Datenbank abgleichen Marvin75 Datenbanken 7 10.06.2011 18:00
Mehrere Querys klappen in PhpMyAdmin aber nicht in PHP djscaleo Datenbanken 36 15.05.2011 02:00
Excel Export aus Datenbank mit PHP jonesdollar Datenbanken 12 31.03.2011 22:53
[Mitmachquiz] Gästebuch mit beliebiger Datenbank Asipak Off-Topic Diskussionen 69 02.03.2011 11:03
[Erledigt] Datensatz von Datenbank A nach Datenbank B kopieren GruenerQuark Datenbanken 2 17.01.2011 17:19
Variablenname aus Datenbank auswerten Eratech PHP Tipps 2010 6 04.05.2010 18:09
Allgemein Werte in Datenbank updaten chunky PHP Tipps 2010 1 08.04.2010 22:35
Datenbank richtig aufgebaut? bageleudi Datenbanken 2 31.03.2010 21:01
Excel Export mit Content-type bawumme PHP Tipps 2009 6 05.08.2009 10:31
excel spreadsheet writer - excel 03 formatierung ok - andere excel 03 keine formatier taurus PHP Tipps 2009 4 03.02.2009 18:25
String in Datenbank finden Pimbolie1979 Datenbanken 11 13.10.2006 15:37
Mehrere Anwendungen eine Datenbank... Datenbanken 5 15.08.2005 11:22
mysql datenbank anlegen...aber WIE??? Datenbanken 0 05.08.2005 19:33
[Erledigt] mysql datenbank anlegen...aber WIE??? PHP Tipps 2005-2 0 05.08.2005 19:33
mysql datenbank anlegen...aber WIE??? Datenbanken 0 05.08.2005 19:32

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
excel als datenbank, neuer datenbankeintrag share, excel für datenbanken, schlüssel datenbank excel, excel array nur dann wenn größer null, excel datenbank array, größer als für datenbanken excel, schlüsseldatenbank excel, db-tabelle mit excel file in php vergleichen, id key wert1 wert2 wert3 ... datum

Alle Zeitangaben in WEZ +2. Es ist jetzt 16:04 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum