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 |
19.07.2006, 20:23:52
|
|
SELFPHP Guru
|
|
Registriert seit: May 2003
Beiträge: 7.187
|
|
AW: Doppelte Einträge vermeiden...
Zitat:
Zitat von Mike²
Und wenn ja, dann soll diese Zeile nur aktualisiert werden.
D.h.: Jeder "name" kann bei jeder "userid" vorkommen, aber jedesmal nur ein mal.
|
Also doch ein UNIQUE-Key über UserID und Name. Es muss letztendlich ja nur die Kombination aus beiden Spalten eindeutig sein.
|
22.07.2006, 14:48:43
|
Anfänger
|
|
Registriert seit: Jul 2006
Ort: Berlin
Alter: 43
Beiträge: 17
|
|
AW: Doppelte Einträge vermeiden...
Nachdem mir die Idee von xabbuh nicht so gefallen hat, hab ich noch ein wenig gelesen und gesucht.
Hier das fertige Ergebnis:
PHP-Code:
$query = "SELECT * FROM tabelle WHERE name = '".mysql_escape_string($Name)."' AND userid = '".mysql_escape_string($UserID)."'";
$result = mysql_query($query);
if(mysql_num_rows($result))
{
mysql_query("UPDATE tabelle SET 'first' = '".mysql_escape_string($First)."', 'last' = '".mysql_escape_string($Last)."', 'name' = '".mysql_escape_string($Name)."', 'type' = '".mysql_escape_string($Type)."', 'punkte' = '".mysql_escape_string($Punkte)."', 'summe' = '".mysql_escape_string($Summe)."' WHERE 'userid' = '".mysql_escape_string($UserID)."'");
echo "<br><br>! Eintrag aktualisiert !";
}
else
{
mysql_query("INSERT INTO tabelle (userid, first, last, name, type, punkte, summe) VALUES ('$UserID', '$First', '$Last', '$Name', '$Type', '$Punkte', '$Summe')");
echo "<br><br>! Eintrag hinzugefügt !";
Bis jetzt haben mal alle Tests funktioniert.
Vielen Dank an alle, die mir geholfen haben.
Gruß Mike²
|
22.07.2006, 17:14:52
|
Member
|
|
Registriert seit: Jun 2006
Ort: Bayern
Alter: 56
Beiträge: 930
|
|
AW: Doppelte Einträge vermeiden...
Zitat:
Zitat von Mike²
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?
|
Hast du überhaupt mal getestet was xabbuh geschrieben hat?
Bei einem Unique-Index über beide Spalten (UserID,Name) würden nur Einträge akzeptiert wo die Kombination aus UserID und Name eindeutig ist.
UserID | Name
1 Hans
2 Hans
Hier wäre jedes Paar eindeutig.
__________________
Grüße Andes
|
22.07.2006, 17:28:50
|
Anfänger
|
|
Registriert seit: Jul 2006
Ort: Berlin
Alter: 43
Beiträge: 17
|
|
AW: Doppelte Einträge vermeiden...
Zitat:
Zitat von Andes
Hast du überhaupt mal getestet was xabbuh geschrieben hat?
Bei einem Unique-Index über beide Spalten (UserID,Name) würden nur Einträge akzeptiert wo die Kombination aus UserID und Name eindeutig ist.
UserID | Name
1 Hans
2 Hans
Hier wäre jedes Paar eindeutig.
|
Ja aber hätten nicht alle anderen Einträge eine Fehlermeldung zur Folge?
|
22.07.2006, 17:36:24
|
Member
|
|
Registriert seit: Jun 2006
Ort: Bayern
Alter: 56
Beiträge: 930
|
|
AW: Doppelte Einträge vermeiden...
Wieso?
Replace würde solange einen neuen Datensatz anlegen, wie die Kombination aus UserId und Name nicht existiert. Ansonsten wird der Datensatz ersetzt.
Du scheinst noch davon auszugehen, dass der Unique-Index pro Spalte erstellt wird? Dann wäre es eine Schlüsselverletzung.
__________________
Grüße Andes
Geändert von Andes (22.07.2006 um 17:41:04 Uhr)
|
22.07.2006, 17:38:29
|
|
SELFPHP Guru
|
|
Registriert seit: May 2003
Beiträge: 7.187
|
|
AW: Doppelte Einträge vermeiden...
Das Problem kannst du auf zwei Wegen lösen:
1. Verwendung des Schlüsselwortes IGNORE: In diesem Fall erzeugt MySQL lediglich eine Warnung und keinen Fehler, wenn für einen UNIQUE-Index bereits ein Eintrag existiert, so dass das Script fehlerfrei weiterläuft. mysql_affected_rows() liefert in diesem Fall 0 eingetragene Datensätze.
2. Verwendung von INSERT ... ON DUPLICATE KEY UPDATE: In diesem Fall können optional Spalten angegeben werden, die für den Fall, dass bereits ein Datensatz mit diesem Key existiert, aktualisiert werden.
Geändert von xabbuh (22.07.2006 um 17:38:47 Uhr)
|
22.07.2006, 17:47:04
|
Member
|
|
Registriert seit: Jun 2006
Ort: Bayern
Alter: 56
Beiträge: 930
|
|
AW: Doppelte Einträge vermeiden...
Wieso können eigentlich verschiedene Leute dieselbe UserId haben? Ist es eigentlich nicht anders herum, mehrere Ids denselben Namen?
__________________
Grüße Andes
|
22.07.2006, 22:45:56
|
Anfänger
|
|
Registriert seit: Jul 2006
Ort: Berlin
Alter: 43
Beiträge: 17
|
|
AW: Doppelte Einträge vermeiden...
Zitat:
Zitat von Andes
Wieso können eigentlich verschiedene Leute dieselbe UserId haben? Ist es eigentlich nicht anders herum, mehrere Ids denselben Namen?
|
Es ging darum, das die selbe ID (also der gleiche User) nicht 2 mal den selben "Namen" einträgt.
Beim 2ten mal sollte nur noch ein Update ausgeführt werden...
|
23.07.2006, 00:15:22
|
Member
|
|
Registriert seit: Jun 2006
Ort: Bayern
Alter: 56
Beiträge: 930
|
|
AW: Doppelte Einträge vermeiden...
Um was es ging hatte ich schon gelesen. Ich wollte eigentlich nur den Sinn wissen. Ob das nur willkürliche Namen sind oder der Username?
__________________
Grüße Andes
|
23.07.2006, 00:22:38
|
Anfänger
|
|
Registriert seit: Jul 2006
Ort: Berlin
Alter: 43
Beiträge: 17
|
|
AW: Doppelte Einträge vermeiden...
Zitat:
Zitat von Andes
Um was es ging hatte ich schon gelesen. Ich wollte eigentlich nur den Sinn wissen. Ob das nur willkürliche Namen sind oder der Username?
|
Der User selber erhält eine eindeutige ID.
Die Namen sind willkürlich vom User selber in die DB eingetragen worden.
|
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 04:26:07 Uhr.
|