BlackBoard » Design, Programmierung & Entwicklung » Programmieren » PHP UNIQUE feld! » Hallo Gast [Anmelden|Registrieren]
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | An Freund senden | Thema zu Favoriten hinzufügen
Neues Thema erstellen Antwort erstellen
Zum Ende der Seite springen UNIQUE feld!
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
ColdFire ColdFire ist männlich
BlackBoarder


Dabei seit: 08.06.2002
Beiträge: 986

geschockt UNIQUE feld!       Zum Anfang der Seite springen

Hy ! nochmals muss ich die php coder nerfen...

ich habe ein problem und zwar sollte man ja keinen user 2 mal in der datenbank haben ... da hab ich doch gelesen das wenn man sein (userfeld) UNIQUE macht das das nicht vorkommen kann ?

ist das von vorteil oder sollte ich mit php zuerst mein db auslesen ob user vorhanden und dann reagieren ?

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
.....
$selectuser = mysql_query("select * from $tabelle where user='$user'");
....
else if($user == $selectuser)
            {
             echo "<div align=\"center\"><br><br>Username bereits vorhanden!<br>";
             echo "<a href=\"javascript:history.back()\">Zurück</a></div>";
            }


kann ich das so lösen ? nicht oder großes Grinsen
15.12.2005 22:12 ColdFire ist offline E-Mail an ColdFire senden Beiträge von ColdFire suchen
LX LX ist männlich
El Comandante en Jefe


images/avatars/avatar-2290.gif

Dabei seit: 25.11.2001
Beiträge: 5.372
Herkunft: Berliner Bronx

Achtung       Zum Anfang der Seite springen

Das UNIQUE stellt sicher, dass Einträge in dieser Spalte einzigartig sind, allerdings eben nur auf der Datenbankebene. Wenn du versuchst, mittels PHP einen weiteren Datensatz einzufügen, bei dem ein mit einem UNIQUE-Index versehenes Feld einen Wert bekommt, der in der Tabelle schon vorhanden ist, wird dir mySQL einen Fehler zurückgeben. Den musst du mit PHP dann aber wieder verarbeiten, du hast also keine Ersparnis im Vergleich zu einem vorherigen Check, ob ein Wert bereits auftaucht.

Prüfen kannst du das z.B. wie folgt:

php:
1:
2:
3:
4:
5:
6:
7:
// ... mySQL-Zugangszeug

$blubb mysql_query 'SELECT id FROM tabelle WHERE name="' $whatever '"' );
if ( mysql_num_rows $blubb ) > )
  // Wert vorhanden
else
  // Wert nicht vorhanden


__________________
JS-Games.de - Misled Scripting Skills Gone Mad | Meine Filmkritiken | Urban Photography
Kommt mal in den IRC-Channel: irc.eu.freenode.net | Port 6667 | #blackboard

"Ever tried. Ever failed. No matter.
Try again. Fail again. Fail better."
- Samuel Beckett

15.12.2005 22:35 LX ist offline E-Mail an LX senden Homepage von LX Beiträge von LX suchen
Misel Misel ist männlich
Hüter des Kitkat


images/avatars/avatar-2084.png

Dabei seit: 02.11.2002
Beiträge: 1.203
Herkunft: live://home.berlin.d e

      Zum Anfang der Seite springen

Das Problem ist aber, wenn Du vorher prüfst, ob die Daten drin sind, hast Du im Durchschnitt mehr Datenbank abfragen. Das mag einigen am Hintern vorbeilaufen, aber manche brauchen nun mal Performance und versuchen die Datenbankzugriffe zu minimieren.

Im schlimmsten Fall des von LX beschriebenen Weges hast Du zwei Datenbankzugriffe (Prüfung der Daten und Insert der Daten).

Wenn Du einen Insert machst, kannst Du Die Fehlerbehandlung auch gleich darum basteln. Damit hast Du dann immer einen Datenbankzugriff.

__________________
LAUFT! Ich spiele KILLERSPIELE!
16.12.2005 10:47 Misel ist offline E-Mail an Misel senden Homepage von Misel Beiträge von Misel suchen
ColdFire ColdFire ist männlich
BlackBoarder


Dabei seit: 08.06.2002
Beiträge: 986

Themenstarter Thema begonnen von ColdFire
      Zum Anfang der Seite springen

@ Misel
Du meinst wenn ich den result den ich bekomme ( SQL seitig) umwandle


z.b. if Fehlermeldung= 10010 then
echo ("User schon vorhanden !");

lg CF
16.12.2005 16:46 ColdFire ist offline E-Mail an ColdFire senden Beiträge von ColdFire suchen
Misel Misel ist männlich
Hüter des Kitkat


images/avatars/avatar-2084.png

Dabei seit: 02.11.2002
Beiträge: 1.203
Herkunft: live://home.berlin.d e

      Zum Anfang der Seite springen

welche Fehlermeldung die Datenbank genau zurückliefert kann ich nicht sagen, aber ja, auf sowas wollte ich hinaus.

__________________
LAUFT! Ich spiele KILLERSPIELE!
16.12.2005 19:31 Misel ist offline E-Mail an Misel senden Homepage von Misel Beiträge von Misel suchen
Baumstruktur | Brettstruktur
Gehe zu:
Neues Thema erstellen Antwort erstellen
BlackBoard » Design, Programmierung & Entwicklung » Programmieren » PHP UNIQUE feld!

Forensoftware: Burning Board 2.3.6, entwickelt von WoltLab GmbH