SELFPHP: Version 5.8.2 Befehlsreferenz - Tutorial – Kochbuch – Forum für PHP Einsteiger und professionelle Entwickler

SELFPHP


Professional CronJob-Service

Suche



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



:: Buchempfehlung ::

Der CSS-Problemlöser

Der CSS-Problemlöser zur Buchempfehlung
 

:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 

Zurück   PHP Forum > SELFPHP > MySQLi/PDO/(MySQL)

MySQLi/PDO/(MySQL) Anfänger, Fortgeschrittene oder Experten können hier Fragen und Probleme rund um MySQLi/PDO/(MySQL) diskutieren

Antwort
 
Themen-Optionen Ansicht
  #11  
Alt 19.07.2006, 20:23:52
Benutzerbild von xabbuh
xabbuh xabbuh ist offline
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.
Mit Zitat antworten
  #12  
Alt 22.07.2006, 14:48:43
Mike² Mike² ist offline
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²
Mit Zitat antworten
  #13  
Alt 22.07.2006, 17:14:52
Andes Andes ist offline
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
Mit Zitat antworten
  #14  
Alt 22.07.2006, 17:28:50
Mike² Mike² ist offline
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?
Mit Zitat antworten
  #15  
Alt 22.07.2006, 17:36:24
Andes Andes ist offline
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)
Mit Zitat antworten
  #16  
Alt 22.07.2006, 17:38:29
Benutzerbild von xabbuh
xabbuh xabbuh ist offline
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)
Mit Zitat antworten
  #17  
Alt 22.07.2006, 17:47:04
Andes Andes ist offline
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
Mit Zitat antworten
  #18  
Alt 22.07.2006, 22:45:56
Mike² Mike² ist offline
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...
Mit Zitat antworten
  #19  
Alt 23.07.2006, 00:15:22
Andes Andes ist offline
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
Mit Zitat antworten
  #20  
Alt 23.07.2006, 00:22:38
Mike² Mike² ist offline
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.
Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen
Ansicht

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 aus.
[IMG] Code ist aus.
HTML-Code ist aus.

Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Doppelte Einträge durch Query nivram MySQLi/PDO/(MySQL) 0 20.02.2005 16:43:27
Doppelte Einträge finden pixelterror MySQLi/PDO/(MySQL) 4 22.07.2004 22:08:10
array values auf doppelte einträge prüfen flobee PHP Grundlagen 5 10.06.2004 02:36:52
doppelte Einträge in MySQL unterbinden? mad-boy PHP für Fortgeschrittene und Experten 12 31.08.2002 12:51:53
doppelte einträge vermeiden EraTor PHP für Fortgeschrittene und Experten 1 01.04.2002 08:39:57


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


Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.


© 2001-2024 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt