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 ::

Webseiten professionell erstellen

Webseiten professionell erstellen 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)
Hilfe Community Kalender Heutige Beiträge Suchen

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

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 06.11.2006, 08:32:22
Benutzerbild von juergen
juergen juergen ist offline
Junior Member
 
Registriert seit: Nov 2004
Ort: Schmitten
Alter: 65
Beiträge: 318
in einer Tabelle nach Übereinstimmung suchen

Hallo Forum,

ich habe eine Tabelle in der ich die Registrierten User mit Ihren Daten speichere. Es sollen nun keine Doppelanmeldungen bezüglich der E-Mailadressen zustande kommen.

Meine Datenbank:
PHP-Code:
DROP TABLE IF EXISTS `user`; 
CREATE TABLE `user` ( 
  `
user_idint(10NOT NULL auto_increment
  `
namevarchar(255NOT NULL default ''
  `
vornamevarchar(255NOT NULL default ''
  `
emailvarchar(255NOT NULL default ''
  
PRIMARY KEY  (`user_id`) 
TYPE=MyISAM AUTO_INCREMENT=32 


# Daten für Tabelle `user` 


INSERT INTO `user` (`user_id`, `name`, `vorname`, `email`) VALUES  
(1'Mustermann''Jürgen''admin@localhost.de'); 
Wenn sich nun ein neuer User eintragen will darf er das nicht mit der E-Mailadresse = admin@localhost.de sondern muß eine andere wählen.
Frage:
Wie muß das Statement aussehen um nach der E-Mailadresse zu suchen? Mach ich das über "SELECT" oder gibt es da eine spezielle Lösung? Hat vieleicht jemand einen Codeschnipsel für mich den ich dan an meine Sache anpassen kann? Das wäre super!!

Vielen Dank für Eure Hilfe
__________________
--------------------------------
Gruß Jürgen

www.kenyasafaris.de
Mit Zitat antworten
  #2  
Alt 06.11.2006, 08:45:42
BenniG. BenniG. ist offline
Member
 
Registriert seit: Oct 2006
Beiträge: 610
AW: in einer Tabelle nach Übereinstimmung suchen

Absolut sicher bist du, wenn du einen unique-index auf die email-Adresse anlegst:
Code:
ALTER TABLE `user` ADD UNIQUE `uq_email` ( `email` )
im Php machst du dann:
PHP-Code:
$sql="INSERT INTO `user` (`user_id`, `name`, `vorname`, `email`) VALUES  
(1, 'Mustermann', 'Jürgen', 'admin@localhost.de')"
;

//Versuchen den Datensatz einzufügen
$result mysql_query($sql);

//Fehler 1062 bedeutet Schlüsselverletzung
if (!$result && mysql_errno()==1062) {
    echo 
"Eintrag schon vorhanden";
} else if (!
$result) {
   echo 
"Unbekannter Fehler: $sql <br>" mysql_error();

Edit: Hatte $ bei $result vergessen

Geändert von BenniG. (06.11.2006 um 08:57:04 Uhr)
Mit Zitat antworten
  #3  
Alt 06.11.2006, 08:51:36
Benutzerbild von meikel (†)
meikel (†) meikel (†) ist offline
SELFPHP Guru
 
Registriert seit: Dec 2003
Ort: Erfurt
Alter: 75
Beiträge: 4.001
AW: in einer Tabelle nach Übereinstimmung suchen

Zitat:
Zitat von juergen Beitrag anzeigen
Es sollen nun keine Doppelanmeldungen bezüglich der E-Mailadressen zustande kommen.
Dann wäre die Spalte email genaugenommen Dein primary key.

Zitat:
Wie muß das Statement aussehen um nach der E-Mailadresse zu suchen? Mach ich das über "SELECT" oder gibt es da eine spezielle Lösung?
Entweder so:
Code:
SELECT user_id FROM user WHERE email = 'admin@localhost.de'
Dann kannst Du mit mysql_num_rows() prüfen, ob 0 oder 1 Datensatz gefunden wurden.
oder so:
Code:
SELECT COUNT(*) AS anzahl FROM user WHERE email = 'admin@localhost.de'
Hier ist die Ergebnismenge immer ein Datensatz. Im Feld anzahl steht dann entweder 0 oder 1 drin.

EDIT:
die Methode von BenniG. ist natürlich wesentlich eleganter.

EDIT2:
id -> user_id

Geändert von meikel (†) (06.11.2006 um 13:09:42 Uhr)
Mit Zitat antworten
  #4  
Alt 06.11.2006, 13:03:37
Benutzerbild von juergen
juergen juergen ist offline
Junior Member
 
Registriert seit: Nov 2004
Ort: Schmitten
Alter: 65
Beiträge: 318
AW: in einer Tabelle nach Übereinstimmung suchen

Hallo Meikel,

Code:
SELECT id FROM user WHERE email = 'admin@localhost.de'Dann kannst Du mit mysql_num_rows() prüfen, ob 0 oder 1 Datensatz gefunden wurden.

Frage:
Was ist in dem Fall id? Ist das vieleicht meine user_id ?
Code:
INSERT INTO `user` (`user_id`, `name`, `vorname`, `email`) VALUES
(1, 'Mustermann', 'Jürgen', 'admin@localhost.de');
__________________
--------------------------------
Gruß Jürgen

www.kenyasafaris.de

Geändert von juergen (06.11.2006 um 13:09:54 Uhr)
Mit Zitat antworten
  #5  
Alt 06.11.2006, 13:11:46
KTB KTB ist offline
Member
 
Registriert seit: Mar 2006
Alter: 38
Beiträge: 599
AW: in einer Tabelle nach Übereinstimmung suchen

ID ist in diesem Fall ein Platzhalter für etwas was du dann ggf. ausgeben möchtest (z.B. Name). Wird aber denk ich mal nicht von Interesse sein.
__________________
In der Ruhe liegt die Kraft!

Geändert von KTB (06.11.2006 um 13:12:15 Uhr)
Mit Zitat antworten
  #6  
Alt 06.11.2006, 13:17:21
Benutzerbild von meikel (†)
meikel (†) meikel (†) ist offline
SELFPHP Guru
 
Registriert seit: Dec 2003
Ort: Erfurt
Alter: 75
Beiträge: 4.001
AW: in einer Tabelle nach Übereinstimmung suchen

Zitat:
Zitat von juergen Beitrag anzeigen
Frage:
Was ist in dem Fall id?
Das ist ein peinlicher Fehler. Gemeint ist natürlich user_id. Im Prinzip kannst Du in der Spaltenliste alles mögliche angeben, weil Du bei dem Beispiel ja nur die Anzahl der Zeilen in der Ergebnismenge brauchst.

Aber teste lieber das Beispiel von BenniG. Das kommt nämlich mit einer Abfrage aus.
Wenn das INSERT keinen SQL Fehler produziert, ist der Eintrag drin, weil er korrekt ist. Existiert die email schon, gibt es den genannten SQL Fehler.

Geändert von meikel (†) (06.11.2006 um 13:17:37 Uhr)
Mit Zitat antworten
  #7  
Alt 06.11.2006, 13:43:21
Benutzerbild von xabbuh
xabbuh xabbuh ist offline
SELFPHP Guru
 
Registriert seit: May 2003
Beiträge: 7.187
AW: in einer Tabelle nach Übereinstimmung suchen

Ich würde allerdings das Beispiel von BenniG noch um das Schlüsselwort IGNORE erweitern, so dass MySQL keinen Fehler meldet (sondern eine Warnung) und die Überprüfung anschließend mit mysql_affected_rows() vorgenommen werden kann.
Mit Zitat antworten
  #8  
Alt 06.11.2006, 14:26:40
Benutzerbild von juergen
juergen juergen ist offline
Junior Member
 
Registriert seit: Nov 2004
Ort: Schmitten
Alter: 65
Beiträge: 318
AW: in einer Tabelle nach Übereinstimmung suchen

Hallo meikel,

ich werde aber dennoch Meikels Lösung einbauen da ich die Abfrage ob die Mailadresse schon vorhanden ist schon bei der Registrierung bzw. Überprüfung ob er auch nicht das @ Zeichen vergessen hat, des Users benötige. Dann kann ich dem User das schon mal sagen das Seine E-Mailadresse vorhanden ist und er eine andere Braucht. Wenn die Abfrage dannach kommt, ist die Registrierung eigendlich schon abgeschlossen und ich schreibe nur noch die Überprüften Daten in die Datenbank und sende eine Bestätigungsmail. Das wäre dann so als überprüfe ich das Wechselgeld wenn ich schon wieder zu Hause wäre.
Ne ne das mach ich so wie meikel es vorgeschlagen hat.

Danke für alles.
__________________
--------------------------------
Gruß Jürgen

www.kenyasafaris.de
Mit Zitat antworten
  #9  
Alt 15.11.2006, 10:52:08
Benutzerbild von juergen
juergen juergen ist offline
Junior Member
 
Registriert seit: Nov 2004
Ort: Schmitten
Alter: 65
Beiträge: 318
AW: in einer Tabelle nach Übereinstimmung suchen

Hallo Meikel,

ich mache eine Abfrage mit:
SELECT * FROM user WHERE objekt = 'Kunde'

Ich prüfe dann mit $ergebnis = mysql_num_rows() ob Datensätze vorhanden sind.
if ($ergebnis < "1"){

}else{
//Anschließend lasse ich mir die Daten mittels einer Schleife ausgeben.
for schleife

}

Wenn ein Kunde gefunden wird ist alles gut und der Datensatz wird angezeigt wenn aber kein Datensatz gefunden wird bleibt der Ladevorgang genau bei der Selectabfrage stehen und der Rest der Seite wird nicht mehr weiter geladen. Ich habe versucht mir die Variable $ergebnis mit echo anzeigen zu lassen aber bis dahin kommt der Browser nicht. Wenn ein Datensatz gefunden wird zeigt mir echo $ergebnis an wie viele Datensätz er gefunden hat.

Wo kann der Fehler liegen?
Danke für Deine Hilfe
__________________
--------------------------------
Gruß Jürgen

www.kenyasafaris.de
Mit Zitat antworten
  #10  
Alt 15.11.2006, 10:55:19
BenniG. BenniG. ist offline
Member
 
Registriert seit: Oct 2006
Beiträge: 610
AW: in einer Tabelle nach Übereinstimmung suchen

Nicht immer alles in quotes scheiben!
so prüft man Zahlenwerte:
PHP-Code:
if ($ergebnis 1){ 
Poste mehr code, vielleicht ein exit, die, return in der Abfrage?
Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

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
Datensatz in Tabelle einlesen nate10er PHP Grundlagen 0 07.04.2006 15:29:24
Tabelle 100% in der Höhe ? davinci HTML, CSS und JavaScript Help! 6 12.03.2006 15:54:11
Problem dynamische Tabelle aber wie? Pixelschubser PHP für Fortgeschrittene und Experten 1 08.10.2005 18:16:24
auto_increment zuückgeben oder Tabelle sperren -TC- MySQLi/PDO/(MySQL) 2 17.08.2004 13:55:54
MySQL - tabelle in tabelle Gweilo PHP für Fortgeschrittene und Experten 4 09.11.2002 18:41:57


Alle Zeitangaben in WEZ +2. Es ist jetzt 09:57:42 Uhr.


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


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