php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > SQL / Datenbanken
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


SQL / Datenbanken Probleme mit SQL? Hier könnt ihr eure Fragen zu SQL (MySQL, PostgreSQL, MS-SQL und andere ANSI-SQL Server) los werden.

Antwort
 
LinkBack Themen-Optionen Bewertung: Bewertung: 1 Stimmen, 5,00 durchschnittlich.
  #1 (permalink)  
Alt 27-09-2006, 12:02
sk4r
 Junior Member
Links : Onlinestatus : sk4r ist offline
Registriert seit: Sep 2005
Beiträge: 84
sk4r ist zur Zeit noch ein unbeschriebenes Blatt
Standard SQL Tabellen updaten

Hallo liebe Community,
es wird wieder Zeit bei euch um Rat zu fragen.

Ich hab folgendes Script:

PHP-Code:
for ($i 0$i sizeof($fcontents); $i++)
{
    
$line trim($fcontents[$i]);
    echo 
"<tr bgcolor=\"#D3D3D3\"><td colspan=\"3\">$line <br></td></tr>";
    
$arr explode(";" $line);
    
#Wenn die CSV Datei TAB separiert ist, muss "," durch "/t" ersetzt werden
    
$sql "insert into printer values ('"implode("','",$arr) ."')";
    
#TABELLENNAME durch den Namen der Tabelle in der Datenbank ersetzen
    
    
mysql_query($sql);
    echo 
"<tr bgcolor=\"#32CD32\"><td colspan=\"3\">" $sql "<br>\n</td></tr>";
    
    if(
mysql_error())
    {
        echo 
"<tr bgcolor=\"red\"><td colspan=\"3\">" mysql_error() . "<br>\n</td></tr>";
    }

Die für meine Frage relevante Zeile ist die hier:

PHP-Code:
$sql "insert into printer values ('"implode("','",$arr) ."')"
Mein Problem ist folgendes.
Ich möchte eine CSV-Datei uploaden und diese durch dieses Script in die Datenbank einschleusen. Das geht ja nur, wenn die Datenbank vorher keine gleichen Einträge enthält. Wenn die Datenbank diese Einträge schon enthält, dann wird das wohl schlecht gehen, dass ich versuche die Datenbank mit dem geupdatetem Inhalt fülle.

Gibt es da ne möglichkeit diese Tabellen upzudaten, ohne, dass ich diese vorher löschen muss?

edit: Eins hab ich noch vergessen. Sollten diese Inhalte nicht vorhanden sein, so soll er einen neuen Datensatz anlegen (Zeile).
So das wars glaub ich. Ich hab so ziemlich alles probiert, was ich in der Dokumentation gefunden habe. Aber irgendwie will es nicht klappen. Scheinbar bin ich noch nicht so fit in solchen Sachen. Ich hoffe aber, dass ihr mir helfen könnt.

MfG
Sk4r

Geändert von sk4r (27-09-2006 um 12:08 Uhr)
Mit Zitat antworten
  #2 (permalink)  
Alt 27-09-2006, 12:27
sternm
 Banned
Links : Onlinestatus : sternm ist offline
Registriert seit: Sep 2006
Beiträge: 103
sternm ist zur Zeit noch ein unbeschriebenes Blatt
Standard

gibt es nicht INSERT... ON DUPLICATE KEY UPDATE... ?

eine traditionellere Variante ist, zuerst ein SELECT zu machen, und dann jennach Zweck und Aufgabenstellung ein INSERT, ein UPDATE oder nichts.
Mit Zitat antworten
  #3 (permalink)  
Alt 27-09-2006, 12:27
wahsaga
  Moderator
Links : Onlinestatus : wahsaga ist offline
Registriert seit: Sep 2001
Beiträge: 25.236
wahsaga befindet sich auf einem aufstrebenden Ast
Standard Re: SQL Tabellen updaten

REPLACE
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
Mit Zitat antworten
  #4 (permalink)  
Alt 27-09-2006, 12:31
sk4r
 Junior Member
Links : Onlinestatus : sk4r ist offline
Registriert seit: Sep 2005
Beiträge: 84
sk4r ist zur Zeit noch ein unbeschriebenes Blatt
Standard Re: Re: SQL Tabellen updaten

Zitat:
Original geschrieben von wahsaga
REPLACE
Sehr gute Antwort. Eigentlich das wonach ich gesucht habe. Jetzt hab ich aber ein anderes Problem. Wie binde ich das ein?


EDIT: Ah habs gefunden. Vielen Dank. Funktioniert perfekt. Sag ich doch. Genau das, was ich gesucht habe.

EDIT2: Thread kann geschlossen werden. Vielen Dank

MfG
sk4r

Geändert von sk4r (27-09-2006 um 12:36 Uhr)
Mit Zitat antworten
  #5 (permalink)  
Alt 27-09-2006, 12:48
sk4r
 Junior Member
Links : Onlinestatus : sk4r ist offline
Registriert seit: Sep 2005
Beiträge: 84
sk4r ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von sternm
gibt es nicht INSERT... ON DUPLICATE KEY UPDATE... ?

eine traditionellere Variante ist, zuerst ein SELECT zu machen, und dann jennach Zweck und Aufgabenstellung ein INSERT, ein UPDATE oder nichts.
Wie stellt man das bei 1,4 Millionen Einträgen an?
Mit Zitat antworten
  #6 (permalink)  
Alt 27-09-2006, 12:53
sk4r
 Junior Member
Links : Onlinestatus : sk4r ist offline
Registriert seit: Sep 2005
Beiträge: 84
sk4r ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Verdammt. Ich hab ein neues Problem. Stellt euch vor ich hab gestern 151 Einträge gehabt und heute ist einer dieser Einträge weggefallen. D.h. ich hab nur noch 150. Jedoch bleibt der 151. noch in der Datenbank. Gibt es da auch ein Möglichkeit, dies zu lösen?
Mit Zitat antworten
  #7 (permalink)  
Alt 27-09-2006, 13:06
sternm
 Banned
Links : Onlinestatus : sternm ist offline
Registriert seit: Sep 2006
Beiträge: 103
sternm ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von sk4r
Wie stellt man das bei 1,4 Millionen Einträgen an?
kommt ja nicht darauf an wieviele in der Datenbank sind, sondern wieviele zu updaten sind. Wenn es 1,4 Millionen updates sind, ist das egal ob replace oder sonstwie vielleicht eine zeitaufwändige Sache. wenn es nur 150 sind auf 1,4 Millionen ist es auch egal mit welcher Methode.


Falls Du mit deinem Einwand gemeint hast ,es brauche eine 'SELECT * from table' ohne WHERE liegst du falsch.
Mit Zitat antworten
  #8 (permalink)  
Alt 27-09-2006, 13:14
sk4r
 Junior Member
Links : Onlinestatus : sk4r ist offline
Registriert seit: Sep 2005
Beiträge: 84
sk4r ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von sternm
Falls Du mit deinem Einwand gemeint hast ,es brauche eine 'SELECT * from table' ohne WHERE liegst du falsch. [/B]
Nene, damit hatte das nichts zutun. Vielen Dank für die Erklärung.
Mit Zitat antworten
  #9 (permalink)  
Alt 27-09-2006, 13:18
kuddeldaddeldu
 Registrierter Benutzer
Links : Onlinestatus : kuddeldaddeldu ist offline
Registriert seit: Sep 2006
Beiträge: 437
kuddeldaddeldu ist zur Zeit noch ein unbeschriebenes Blatt
Question

Zitat:
Verdammt. Ich hab ein neues Problem. Stellt euch vor ich hab gestern 151 Einträge gehabt und heute ist einer dieser Einträge weggefallen. D.h. ich hab nur noch 150. Jedoch bleibt der 151. noch in der Datenbank. Gibt es da auch ein Möglichkeit, dies zu lösen?
Äh, wie meinen?
<BeimQuizmitmach>
Du hast einen Eintrag unter den Tisch fallen lassen und suchst jetzt nach der Kehrschaufel?
</beimQuizmitmach>
Mit Zitat antworten
  #10 (permalink)  
Alt 27-09-2006, 13:23
sk4r
 Junior Member
Links : Onlinestatus : sk4r ist offline
Registriert seit: Sep 2005
Beiträge: 84
sk4r ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von kuddeldaddeldu
Äh, wie meinen?
<BeimQuizmitmach>
Du hast einen Eintrag unter den Tisch fallen lassen und suchst jetzt nach der Kehrschaufel?
</beimQuizmitmach>
<BeimQuizmitmachVerloren>
NEIN
</BeimQuizmitmachVerloren>

Also nochmal. Meine CSV Datei enthielt gestern 151 Einträge. Heute musste ich einen dieser Einträge entfernen, da dieser Artikel nicht mehr aufgelistet werden soll. So nun hab ich den Salat. Dieser Artikel wird immer noch angezeigt.

D.h. dieser 151. Artikel muss entfernt werden.
Mit Zitat antworten
  #11 (permalink)  
Alt 27-09-2006, 13:30
kuddeldaddeldu
 Registrierter Benutzer
Links : Onlinestatus : kuddeldaddeldu ist offline
Registriert seit: Sep 2006
Beiträge: 437
kuddeldaddeldu ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Die Frage ist: Enthält Deine CSV-Datei die komplette Datenbank? Wenn ja, speichere in Deiner Schleife
eine Liste mit den IDs in einem Array und mach danach ein DELETE FROM tabelle WHERE <id nicht in Positivliste>
Syntax musst Du mal nachschlagen ("NOT (id in (..)", "id NOT IN (..)" ..?)
Mit Zitat antworten
  #12 (permalink)  
Alt 27-09-2006, 13:31
sk4r
 Junior Member
Links : Onlinestatus : sk4r ist offline
Registriert seit: Sep 2005
Beiträge: 84
sk4r ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Genau da sind wir bei meinem Problem angelangt. Ich hab insgesamt 6 Dateien. Das dürfte als Schilderung reichen.
Mit Zitat antworten
  #13 (permalink)  
Alt 27-09-2006, 13:37
kuddeldaddeldu
 Registrierter Benutzer
Links : Onlinestatus : kuddeldaddeldu ist offline
Registriert seit: Sep 2006
Beiträge: 437
kuddeldaddeldu ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Das dürfte als Schilderung reichen.
Das sehe ich anders
Wieso hast Du 6 Dateien und vor allem: bilden die dann zusammen die komplette Datenbank? Sind die bzgl. der Datensätze disjunkt?
Werden die in einem Scriptdurchlauf eingelesen? Tut mir leid, aber ich habe absolut keine Ahnung, was du vorhast.
Mit Zitat antworten
  #14 (permalink)  
Alt 27-09-2006, 13:42
sk4r
 Junior Member
Links : Onlinestatus : sk4r ist offline
Registriert seit: Sep 2005
Beiträge: 84
sk4r ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Also es sind 6 Dateien. Es sind Spezifikationen von Druckern (infos und bla bla). Jede dieser einzelnen Dateien wird vom User hochgeladen und danach per Tastendruck in die Datenbank verfrachtet. D.h. wenn der "blöde" User einen neuen Drucker in die Datei "Thermodrucker.csv" einfügt, erweitert sich ja die ID und er muss es ja in allen Dateien verändern, da es fortlaufend ist.

Es wäre auch möglich alles in eine Datei zu packen. Aber dann würde der DAU die Übersicht verlieren.
Mit Zitat antworten
  #15 (permalink)  
Alt 27-09-2006, 13:50
kuddeldaddeldu
 Registrierter Benutzer
Links : Onlinestatus : kuddeldaddeldu ist offline
Registriert seit: Sep 2006
Beiträge: 437
kuddeldaddeldu ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Lieber sk4r,

meine Glaskugel ist gerade leider verkratzt, zerbrochen, einfach weg...
Was ist in diesen 6 Dateien?
Kommt das alles in eine Tabelle? Woher sollen wir denn wissen, welche Datensätze in Deiner
Tabelle gelöscht werden können? Vielleicht kannst Du das mal in Worte fassen.
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

Top-Side Guestbook

Gästebuch auf Textbasis (kein MySQL nötig) mit Smilies, Ip Sperre (Zeit selbst einstellbar), Spamschutz, Captcha (Code-Eingabe), BB-Code, Hitcounter, Löschfunktion, Editierfunktion, Kommentarfunktion, Kürzung langer Wörter, Seiten- bzw. Blätterfunktion, V

22.10.2018 webmaster10 | Kategorie: PHP/ Gaestebuch
ebiz-trader 6.0 - Das professionelle PHP Marktplatz Script ansehen ebiz-trader 6.0 - Das professionelle PHP Marktplatz Script

Mit unserer Lösungen können Sie nahezu jeden B2B / B2C Marktplatz betreiben den Sie sich vorstellen können. Ganz egal ob Sie einen Automarktplatz, Immobilenportal oder einfach einen Anzeigenmarkt betreiben möchten. Mit ebiz-trader können Sie Ihre Anforder

11.10.2018 Berni | Kategorie: PHP/ Anzeigenmarkt
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
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 17:51 Uhr.