CronJob-Service
bei SELFPHP mit ...
|
+ minütlichen Aufrufen
+ eigenem Crontab Eintrag
+ unbegrenzten CronJobs
+ Statistiken
+ Beispielaufrufen
+ Control-Bereich
Führen Sie mit den CronJobs von
SELFPHP zeitgesteuert Programme
auf Ihrem Server
aus. Weitere Infos
|
:: Anbieterverzeichnis ::
Globale Branchen
Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP
:: Newsletter ::
Abonnieren Sie hier den kostenlosen
SELFPHP Newsletter!
|
MySQLi/PDO/(MySQL) Anfänger, Fortgeschrittene oder Experten können hier Fragen und Probleme rund um MySQLi/PDO/(MySQL) diskutieren |
17.07.2006, 21:58:04
|
Anfänger
|
|
Registriert seit: Jul 2006
Ort: Berlin
Alter: 43
Beiträge: 17
|
|
Doppelte Einträge vermeiden...
Hallo Zusammen,
nachdem ich mich jetzt ein wenig durch die Suche gearbeitet habe, hänge ich immer noch an meinem Problem fest.
Ich lasse mir in meinen PHP-Script durch folgenden Code Eintragungen in meine DB machen:
PHP-Code:
mysql_query("INSERT INTO tabelle (userid, first, last, name, type, punkte, summe) VALUES ('$UserID', '$First', '$Last', '$Name', '$Type', '$Punkte', '$Summe') or die("<br>Fehler beim verarbeiten der Datenbank. Fehlermeldung: ".mysql_error());
Funktioniert auch optimal.
Nur ist das Problem, das bei jedem Eintrag eine komplett neue Zeile eingefügt wird.
Die Variable '$Name' soll aber in Zusammenhang mit der '$UserID' nur einmal vorkommen.
D. h. die Datenbank sollte zuerst überprüft werden, ob der Wert '$Name' bereits vorhanden ist.
Und wenn ja, dann nur ein UPDATE der Zeile ausfüren und nicht die Zeile zusätzlich einfügen.
Ich hoffe, ich konnte es verständlich rüberbringen.
Gruß Mike²
Geändert von Mike² (22.07.2006 um 15:54:56 Uhr)
|
17.07.2006, 23:04:07
|
Anfänger
|
|
Registriert seit: Jul 2006
Ort: Berlin
Alter: 43
Beiträge: 17
|
|
AW: Doppelte Einträge vermeiden...
Ja, das habe ich bereits.
Doch es wird immer von einem Unique im Feld gesprochen.
Dies kann ich ja aber wegen den verschiedenen UserID´s nicht machen. Oder?
Ich hab mir so was in etwa vorgestellt:
PHP-Code:
if(??? UserID & Name bereits vorhanden ???)
{
mysql_query("UPDATE tabelle (userid, first, last, name, type, punkte, summe) VALUES ('$UserID', '$First', '$Last', '$Name', '$Type', '$Punkte', '$Summe')");
}
else
{
mysql_query("INSERT INTO tabelle (userid, first, last, name, type, punkte, summe) VALUES ('$UserID', '$First', '$Last', '$Name', '$Type', '$Punkte', '$Summe')");
}
Ist das auch so realisierbar???
Geändert von Mike² (17.07.2006 um 23:04:29 Uhr)
|
18.07.2006, 08:48:15
|
Member
|
|
Registriert seit: Mar 2006
Alter: 39
Beiträge: 599
|
|
AW: Doppelte Einträge vermeiden...
Klar ist das so realisierbar. Du musst dann blos vorher durch die Tabelle laufen und nach dem Datensatz suchen. Wenn du ein leeres Ergebnis zurück bekommst, "INSERT" sonst "UPDATE".
__________________
In der Ruhe liegt die Kraft!
|
18.07.2006, 10:03:35
|
|
SELFPHP Guru
|
|
Registriert seit: May 2003
Beiträge: 7.187
|
|
AW: Doppelte Einträge vermeiden...
Was spricht dagegen einen UNIQUE-Index über die Spalte name zu legen?
|
18.07.2006, 16:37:49
|
Anfänger
|
|
Registriert seit: Jul 2006
Ort: Berlin
Alter: 43
Beiträge: 17
|
|
AW: Doppelte Einträge vermeiden...
Zitat:
Zitat von KTB
Klar ist das so realisierbar. Du musst dann blos vorher durch die Tabelle laufen und nach dem Datensatz suchen. Wenn du ein leeres Ergebnis zurück bekommst, "INSERT" sonst "UPDATE".
|
Jetzt ist nur noch die Frage, wie ich sowas realisiere? Kleiner Denkanstoß?
Zitat:
Zitat von xabbuh
Was spricht dagegen einen UNIQUE-Index über die Spalte name zu legen?
|
Wenn ich nen Unique über die Spalte "name" lege, kann der Wert ja nur einmal komplett gleich vorhanden sein.
Ich möchte es aber in Abhänigkeit der UserID, d.h. jeder User kann den Wert einmal besitzen.
|
18.07.2006, 18:49:28
|
|
SELFPHP Guru
|
|
Registriert seit: May 2003
Beiträge: 7.187
|
|
AW: Doppelte Einträge vermeiden...
Zitat:
Zitat von Mike²
Wenn ich nen Unique über die Spalte "name" lege, kann der Wert ja nur einmal komplett gleich vorhanden sein.
Ich möchte es aber in Abhänigkeit der UserID, d.h. jeder User kann den Wert einmal besitzen.
|
Du willst also, dass lediglich die Kombination aus UserID und Name eindeutig sein muss? Dann lege doch einen UNIQUE-Index über diese beiden Spalten:
Code:
CREATE UNIQUE INDEX id_name ON tabelle (UserID, Name);
|
19.07.2006, 18:32:23
|
Anfänger
|
|
Registriert seit: Jul 2006
Ort: Berlin
Alter: 43
Beiträge: 17
|
|
AW: Doppelte Einträge vermeiden...
Zitat:
Zitat von xabbuh
Du willst also, dass lediglich die Kombination aus UserID und Name eindeutig sein muss? Dann lege doch einen UNIQUE-Index über diese beiden Spalten:
Code:
CREATE UNIQUE INDEX id_name ON tabelle (UserID, Name);
|
Also das ist wohl nicht ganz das, was ich suche.
Es soll ganz einfach ein Unique des "Name"-Wertes vorhanden sein der sich auf die UserID bezieht.
Vielleicht bringe ich das nicht verständlich genug rüber... :-(
Aber ohne ne Abfrage wird das nicht klappen.
Wirklich niemand nen Ansatz?
|
19.07.2006, 18:43:35
|
|
SELFPHP Guru
|
|
Registriert seit: May 2003
Beiträge: 7.187
|
|
AW: Doppelte Einträge vermeiden...
Zitat:
Zitat von Mike²
Es soll ganz einfach ein Unique des "Name"-Wertes vorhanden sein der sich auf die UserID bezieht.
Vielleicht bringe ich das nicht verständlich genug rüber... :-(
|
Scheinbar nicht. Woran machst du fest, ob ein Name eindeutig ist? Am besten zeigst mal ein paar Beispieldatensätze, was bei dir Eindeutigkeit bedeuten würde und was nicht.
|
19.07.2006, 19:37:26
|
Anfänger
|
|
Registriert seit: Jul 2006
Ort: Berlin
Alter: 43
Beiträge: 17
|
|
AW: Doppelte Einträge vermeiden...
Eigentlich ist es ganz simpel:
Die Daten werden durch einen Parser ausgelesen und sollen in die DB geschrieben werden.
In etwa sieht das dann so aus:
Code:
userid | name | gebdatum | ort | famstand
-----------------------------------------------------------------
12110 | ottowalkes | 10.01.2000 | koeln | ledig
12110 | sylversterstallone | 15.06.1981 | berlin | verheiratet
12110 | armoldschwarzenegger | 27.12.2005 | stuttgart | verwitwet
12110 | michaeljackson | 05.04.1955 | newyork | verliebt
12110 | rudivoeller | 11.11.2000 | bagdad | geschieden
12110 | angelamerkel | 01.01.1891 | potsdam | offen für alles
12110 | oliverkahn | 19.07.2006 | muenchen | ledig
Sollte ein ander User eventuell gleiche Daten eingeben (BSP):
Code:
userid | name | gebdatum | ort | famstand
-----------------------------------------------------------------
18451 | ottowalkes | 10.01.2000 | koeln | ledig
18451 | sylversterstallone | 15.06.1981 | berlin | verheiratet
Dann erscheint das ganze in der DB so:
Code:
userid | name | gebdatum | ort | famstand
-----------------------------------------------------------------
12110 | ottowalkes | 10.01.2000 | koeln | ledig
12110 | sylversterstallone | 15.06.1981 | berlin | verheiratet
12110 | armoldschwarzenegger | 27.12.2005 | stuttgart | verwitwet
12110 | michaeljackson | 05.04.1955 | newyork | verliebt
12110 | rudivoeller | 11.11.2000 | bagdad | geschieden
12110 | angelamerkel | 01.01.1891 | potsdam | offen für alles
12110 | oliverkahn | 19.07.2006 | muenchen | ledig
18451 | ottowalkes | 10.01.2000 | koeln | ledig
18451 | sylversterstallone | 15.06.1981 | berlin | verheiratet
Hat jetzt aber User 12110 seine Daten aktuallisiert und füttert die DB erneut mit (BSP):
Code:
userid | name | gebdatum | ort | famstand
-----------------------------------------------------------------
12110 | ottowalkes | 10.01.2000 | dortmund | ledig (Umgezogen von Köln nach Dortmund)
12110 | rudivoeller | 11.11.2000 | bagdad | verliebt (Nicht mehr geschieden sondern verliebt)
Erscheint es in meiner DB so:
Code:
userid | name | gebdatum | ort | famstand
-----------------------------------------------------------------
12110 | ottowalkes | 10.01.2000 | koeln | ledig
12110 | sylversterstallone | 15.06.1981 | berlin | verheiratet
12110 | armoldschwarzenegger | 27.12.2005 | stuttgart | verwitwet
12110 | michaeljackson | 05.04.1955 | newyork | verliebt
12110 | rudivoeller | 11.11.2000 | bagdad | geschieden
12110 | angelamerkel | 01.01.1891 | potsdam | offen für alles
12110 | oliverkahn | 19.07.2006 | muenchen | ledig
18451 | ottowalkes | 10.01.2000 | koeln | ledig
18451 | sylversterstallone | 15.06.1981 | berlin | verheiratet
12110 | ottowalkes | 10.01.2000 | dortmund | ledig
12110 | rudivoeller | 11.11.2000 | bagdad | verliebt
Doch ich hätte die beiden Zeilen gerne nur aktualisiert:
Code:
userid | name | gebdatum | ort | famstand
-----------------------------------------------------------------
12110 | ottowalkes | 10.01.2000 | dortmund | ledig
12110 | sylversterstallone | 15.06.1981 | berlin | verheiratet
12110 | armoldschwarzenegger | 27.12.2005 | stuttgart | verwitwet
12110 | michaeljackson | 05.04.1955 | newyork | verliebt
12110 | rudivoeller | 11.11.2000 | bagdad | verliebt
12110 | angelamerkel | 01.01.1891 | potsdam | offen für alles
12110 | oliverkahn | 19.07.2006 | muenchen | ledig
18451 | ottowalkes | 10.01.2000 | koeln | ledig
18451 | sylversterstallone | 15.06.1981 | berlin | verheiratet
Es müßte also vor jedem Eintrag überprüft werden, ob der Name bereits vorhanden ist.
Und wenn ja, dann soll diese Zeile nur aktualisiert werden.
D.h.: Jeder "name" kann bei jeder "userid" vorkommen, aber jedesmal nur ein mal.
Ich hoffe es ist jetzt verständlich...
PS:
Die Daten hab ich mal schnell erfunden, also keine Sorge.
Angela ist nicht so alt :-)
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
Themen-Optionen |
|
Ansicht |
Linear-Darstellung
|
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.
HTML-Code ist aus.
|
|
|
Alle Zeitangaben in WEZ +2. Es ist jetzt 16:56:19 Uhr.
|