php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Scripts > BRAINSTORMING PHP/SQL/HTML/JS/CSS
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


BRAINSTORMING PHP/SQL/HTML/JS/CSS Ihr habt eine Idee, aber keinen genauen Ansatz? Diskutiert mit anderen Usern des Forums über eure Gedankengänge um evtl. hilfreiche Ideen zu bekommen!
Normale Fragen bitte weiterhin in die entsprechenden Foren!

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 13-10-2006, 22:35
martinm79
 Registrierter Benutzer
Links : Onlinestatus : martinm79 ist offline
Registriert seit: Jan 2004
Ort: Deutschland
Beiträge: 744
martinm79 ist zur Zeit noch ein unbeschriebenes Blatt
Standard auto_increment - REPLACE

Ich möchte regelmäßig eine csv Datei in die DB einfügen.

Problem ist jedoch,
das die Inhalte der csv Datei nicht von mir kommen.
Deswegen weiß ich auch nicht,
welche Daten sich geändert haben und welche nicht.

Mein DB Aufbau sieht so aus:
id | feld1 | feld2 | usw.

Meine Überlegung war es jetzt,
hinter meinem Feld "id" noch ein Feld "kunde" anzulegen.
Und in diesem Feld würd die genaue Beschreibung des
einzufügenen Datensatzes gespeichert.
Das Feld "kunde" würde dann wie "id" funktionieren.
Denn würde meine id also
normal weiterlaufen.

csv Datei:
kunde | feld1 | feld2 | usw.

So wollte ich den Aufbau der DB machen:
id | kunde | feld1 | feld2 | usw.

Wenn man denn wieder eine csv Datei mittels REPLACE einfügen möchte,
dann würd die gesamte Datei ja wieder komplett eingefügt,
auch wenn es schon vorhanden ist, weil das Feld "kunde" ja nicht
verglichen wird, sondern nur "id".

Kann man REPLACE nur auf das Feld "kunde" anwenden, bzw.
gibt es eine andere Möglichkeit sowas zu lösen?

Ich hoffe ich konnte mein Gedanken einigermaßen formulieren.
__________________
Gut geraten ist halb gewußt.

Geändert von martinm79 (14-10-2006 um 12:17 Uhr)
Mit Zitat antworten
  #2 (permalink)  
Alt 31-10-2006, 05:46
highrise
 Member
Links : Onlinestatus : highrise ist offline
Registriert seit: Apr 2006
Ort: zu Hause *g*
Beiträge: 257
highrise ist zur Zeit noch ein unbeschriebenes Blatt
Standard

ja, das geht.. dafür musst du deinem feld "kunde" einen UNIQUE Index verpassen...

und natürlich dafür sorgen, dass in der csv schön brav überall eine 0 vorangestellt wird, um den index hochzuzählen....

das hat allerdings den effekt, dass die ID des alten datensatzes nach replace nicht mehr existiert, sondern eine neue vergeben wird..

replace macht keine echten ersetzungen, sondern löscht den alten datensatz und fügt dann den neuen ein.

insofern wird id (auto_increment) immer hochgezählt, egal ob ein update gemacht wird, oder neu angefügt wird..

greetz, high
__________________
Good programming is 40% experience, 20% skill, 20% RTFM, 15% caffeine, and 5% attention to detail.
When everything else fails, manipulate the data...
Beschriftungen / Großformatdruck / Werbemittel
Mit Zitat antworten
  #3 (permalink)  
Alt 31-10-2006, 13:37
martinm79
 Registrierter Benutzer
Links : Onlinestatus : martinm79 ist offline
Registriert seit: Jan 2004
Ort: Deutschland
Beiträge: 744
martinm79 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Mhh, meine Id sollte sich wenn Möglich nicht ändern. Zu jedem Datensatz werden Bilder angelegt, die id_nr.jpg heißen. Also der Bildernamen besteht aus der Id.

Denn kann ich ja noch ein feld kunden_id erstellen, wo die orginale id des jeweiligen Kunden drinne steht. Wenn ich das Feld auf UNIQUE Index setzte, bleibt meine id dann auch bestehen?

Beispiel:

id | kunden_id | kunde | feld1 | feld2 | usw
__________________
Gut geraten ist halb gewußt.
Mit Zitat antworten
  #4 (permalink)  
Alt 31-10-2006, 18:40
highrise
 Member
Links : Onlinestatus : highrise ist offline
Registriert seit: Apr 2006
Ort: zu Hause *g*
Beiträge: 257
highrise ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Nein, deine originale id wird in jedem fall hochgezählt..
das haben auto_increment felder so an sich.. darum heißen sie auch auto_increment.. da intern kein REPLACE sondern nacheinander ein DELETE alter eintrag und danach ein INSERT neuer eintrag durchgeführt wird, kannst du das hochzählen so nicht vermeiden..

greetz, high
__________________
Good programming is 40% experience, 20% skill, 20% RTFM, 15% caffeine, and 5% attention to detail.
When everything else fails, manipulate the data...
Beschriftungen / Großformatdruck / Werbemittel
Mit Zitat antworten
  #5 (permalink)  
Alt 31-10-2006, 19:43
martinm79
 Registrierter Benutzer
Links : Onlinestatus : martinm79 ist offline
Registriert seit: Jan 2004
Ort: Deutschland
Beiträge: 744
martinm79 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Hab mir das schon gedacht, das es nicht so leicht ist.



Danke erstmal. :-)

Aber da ich die Csv Datei eh einmal durchlaufe und umwandeln muß,
werd ich denn wohl folgendes machen.

Angenommen die Csv Datei kommt vom Kunden mit der Kunden Nr. 3

id | kunden_id | kunde | feld1 | feld2 |

SELECT id, kunden_id WHERE kunde = '3';

Und beim durchlaufen der Csv Datei setzte ich denn einfach die ID ein.

PHP-Code:
if ($row['kunden_id'] == '$IdVomKunden') { // ...Oder in_array(); oder so...
    // Wenn die id bei mir schon gespeichert ist,
    // dann setze ich meine id ein.
    // Der Datensatz wird aktualisiert.
    
$id $row['id'];
    
} else {
    
// Seine ID steht bei mir nicht in der db
    // Das Feld id leer lassen, damit es eine neue id bekommt
    
$id '';
}

// In die csv
$id$kunden_id$kunde$feld1$feld2 
Wenn ich den Datensatz schon habe, bleibt meine id und wenn nicht
bekommt er eine neue id zugewiesen.
So denke ich mir das jedenfals.

Würdet Ihr das auch so machen, oder wie sollte man sonst am besten vorgehen?
__________________
Gut geraten ist halb gewußt.
Mit Zitat antworten
  #6 (permalink)  
Alt 31-10-2006, 19:52
highrise
 Member
Links : Onlinestatus : highrise ist offline
Registriert seit: Apr 2006
Ort: zu Hause *g*
Beiträge: 257
highrise ist zur Zeit noch ein unbeschriebenes Blatt
Standard

um da was konkretes zu sagen, weiß ich zu wenig über das, was passieren soll...

aber ich kann ja mal einen denkanstoß in den raum werfen...

UPDATE -> guggen ob 0 oder 1 zeile verändert wurden
falls 0, INSERT

greetz, high
__________________
Good programming is 40% experience, 20% skill, 20% RTFM, 15% caffeine, and 5% attention to detail.
When everything else fails, manipulate the data...
Beschriftungen / Großformatdruck / Werbemittel
Mit Zitat antworten
  #7 (permalink)  
Alt 31-10-2006, 20:54
martinm79
 Registrierter Benutzer
Links : Onlinestatus : martinm79 ist offline
Registriert seit: Jan 2004
Ort: Deutschland
Beiträge: 744
martinm79 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Ja stimmt ja.
Wenn ich jetzt eh alle ID vorher aus der DB holen muß, denn brauch ich auch kein REPLACE mehr.


Wenn ich die ID oder NULL (je nach dem, ob es den Datensatz schon gibt) in die Csv Datei eintrage, denn kann ich doch auch einfach INSERT nehmen. Oder nicht?
Müßt ich mal probieren.

Und zu dem was passieren soll:
Ich möchte jeden Tag den Datenbestand aktuallisieren.
Das heißt jeden Tag einmal eine neue Csv Datei einfügen.
- neue Zeilen sollen eingelesen werden
- bestehende Zeilen sollen aktualisiert werden (fals sie verändert wurden)
- alte Zeilen soll entfernt werden

__________________
Gut geraten ist halb gewußt.
Mit Zitat antworten
  #8 (permalink)  
Alt 31-10-2006, 21:04
highrise
 Member
Links : Onlinestatus : highrise ist offline
Registriert seit: Apr 2006
Ort: zu Hause *g*
Beiträge: 257
highrise ist zur Zeit noch ein unbeschriebenes Blatt
Standard

wenn du alte zeilen ersatzlos entfernen willst, musst du sowieso noch ganz anders abfragen... da wirst du dir noch ein wenig den Kopf zerbrechen müssen, wie du das am geschicktesten löst.

greetz, high
__________________
Good programming is 40% experience, 20% skill, 20% RTFM, 15% caffeine, and 5% attention to detail.
When everything else fails, manipulate the data...
Beschriftungen / Großformatdruck / Werbemittel
Mit Zitat antworten
  #9 (permalink)  
Alt 31-10-2006, 21:15
martinm79
 Registrierter Benutzer
Links : Onlinestatus : martinm79 ist offline
Registriert seit: Jan 2004
Ort: Deutschland
Beiträge: 744
martinm79 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von highrise
wenn du alte zeilen ersatzlos entfernen willst, musst du sowieso noch ganz anders abfragen... da wirst du dir noch ein wenig den Kopf zerbrechen müssen, wie du das am geschicktesten löst.

greetz, high
Jup.
Ich denke mal, ich werde die Id's vergleichen und
einsetzten. (in die Csv Datei)
Nach dem ich sie eingesetzt habe, werde ich die id aus dem Array löschen.
Wenn ID's nicht aus dem Array gelöscht wurden, heißt das ja,
das sie nicht mehr im Datensatz vorhanden sind und die Zeilen werden
denn gelöscht.

Mein erster Ansatz mit Replace war noch nicht durchdacht.

__________________
Gut geraten ist halb gewußt.
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre 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


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

PHP Server Monitor

PHP Server Monitor ist ein Skript, das prüft, ob Ihre Websites und Server betriebsbereit sind.

11.09.2018 Berni | Kategorie: PHP/ Security
PHP WEB STATISTIK ansehen PHP WEB STATISTIK

Die PHP Web Statistik bietet Ihnen ein einfach zu konfigurierendes Script zur Aufzeichnung und grafischen und textuellen Auswertung der Besuchern Ihrer Webseite. Folgende zeitlichen Module sind verfügbar: Jahr, Monat, Tag, Wochentag, Stunde Folgende son

28.08.2018 phpwebstat | Kategorie: PHP/ Counter
Affilinator - Affilinet XML Produktlisten Skript

Die Affilinator Affilinet XML Edition ist ein vollautomatisches Skript zum einlesen und darstellen der Affili.net (Partnerprogramm Netzwerk) Produktlisten und Produktdaten. Im Grunde gibt der Webmaster seine Affilinet PartnerID ein und hat dann unmittelb

27.08.2018 freefrank@ | Kategorie: PHP/ Partnerprogramme
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 23:18 Uhr.