php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2006

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 04.10.2006, 14:48  
Erfahrener Benutzer
 
Registriert seit: 09.02.2005
Beiträge: 256
Matthiasnet
Standard Doppelte E-Mail bei der Anmweldung vermeiden

Hi,

ich bin dabei ein Anmeldescript zu schreiben und möchte dopellte E-Mails bei der Anmeldung vermeiden. Deshalb checke ich die angegebene E-Mail mit den E-Mails in der DB ab aber ich erhalte immer einen Fehler, obwohl ich genau den gleichen Code für den Benutzernamen verwende.
Hier der Code:
PHP-Code:
$sqlab  "
      select
         COUNT(*) as anzahl
      from
         benutzer
      where
         e-mail = '$mail'
    "
;
$res mysql_query($sqlab);
$anzahl mysql_result($res,"anzahl"); //Hier kriege ich imemr folgende Fehlermeldung: Warning: mysql_result(): supplied argument is not a valid MySQL result resource in /www/htdocs/w0074849/kp/anmeldung.php on line 34
if ($anzahl=='1') {
echo 
"Die E-Mail ist bereits angemeldet";
 }

else if (
$anzahl=='0'){ 
Ich wäre Dankbar für Tipps und Hilfe

Grüße

Matthias[/php]
Matthiasnet ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 04.10.2006, 14:56  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.987
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

kann ja eigentlich nur in $mail was drinstehen, was da nicht reingehört. oder muß der spaltenbezeichner e-mail wegen des bindestrichs vielleicht in hochkommata??
hmm...
nikosch ist offline  
Alt 04.10.2006, 15:04  
Erfahrener Benutzer
 
Registriert seit: 09.02.2005
Beiträge: 256
Matthiasnet
Standard

Ja stimmt, danke, es müsste `e-mail` lauten
Matthiasnet ist offline  
Alt 04.10.2006, 15:07  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Mit SELECT COUNT(*) bekommst du immer ein Ergebnis und sei es 0.
Und wenn du zu mysql_result mal ins Handbuch schaust:
http://de.php.net/mysql_result
Zitat:
mixed mysql_result ( resource Ergebnis-Kennung, int Datensatz [, mixed Feld] )
siehst du auch, dass als 2. Parameter der Datensatz Index (in deinem Fall 0) erwartet wird. "anzahl" wird aber in INT konvertiert alles andere als 0

Lange Rede kurzer Sinn:
PHP-Code:
<?php
if (mysql_result($res0) > 0) {
  
// E-Mail bereits angemeldet
} else {
  
// noch frei
}
?>
Zergling-new ist offline  
Alt 05.10.2006, 13:09  
Moderator
 
Benutzerbild von agrajag
 
Registriert seit: 02.10.2006
Beiträge: 3.820
PHP-Kenntnisse:
Fortgeschritten
agrajag wird schon bald berühmt werdenagrajag wird schon bald berühmt werden
Standard

Zitat:
Zitat von Zergling
Und wenn du zu mysql_result mal ins Handbuch schaust:
http://de.php.net/mysql_result
Zitat:
mixed mysql_result ( resource Ergebnis-Kennung, int Datensatz [, mixed Feld] )
siehst du auch, dass als 2. Parameter der Datensatz Index (in deinem Fall 0) erwartet wird. "anzahl" wird aber in INT konvertiert alles andere als 0
Das stimmt nicht. Hättest DU (richtig) ins Manual geschaut wäre dir aufgefallen, dass dort "mixed" steht...:
Zitat:
Zitat von Manual
mysql_result() liefert den Inhalt eines Felds aus einem Anfrageergebnis. Das Argument Feld kann der Feldname, der Feldoffset ein Bezeichner in der Form 'Tabellenname.Feldname.' sein. Wenn das Feld einen Alias besitzt ('select foo as bar from...') muss der Alias anstatt des Feldnamens verwendet werden.
__________________
Today you...Tomorrow me.
agrajag ist offline  
Alt 05.10.2006, 13:30  
Erfahrener Benutzer
 
Registriert seit: 18.07.2004
Beiträge: 2.162
PHP-Kenntnisse:
Fortgeschritten
Basti
Standard

Hättet ihr beide mal ins richtige Manual und nicht in die seit Jahren konstant fehlerhafte Übersetzungen geschaut, hättet ihr folgendes gelesen: *g

Code:
string mysql_result ( resource result, int row [, mixed field] )
"Zergling"s Vorschlag funktioniert dank Typenumwandlung natürlich trotzdem. Schöner wäre natürlich eine eplizite Umwandlung. *g

Und vom field-Parameter war doch gar keine Rede.

Basti
Basti ist offline  
Alt 05.10.2006, 13:34  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Das habe ich doch auch gepostet..
Zitat:
Zitat von Zergling
Und wenn du zu mysql_result mal ins Handbuch schaust:
http://de.php.net/mysql_result
Zitat:
mixed mysql_result ( resource Ergebnis-Kennung, int Datensatz [, mixed Feld] )
Im Gegensatz zur Anwendung
Zitat:
mysql_result($res,"anzahl")
Zergling-new ist offline  
Alt 05.10.2006, 13:59  
Erfahrener Benutzer
 
Registriert seit: 18.07.2004
Beiträge: 2.162
PHP-Kenntnisse:
Fortgeschritten
Basti
Standard

Hi.

Ich bezog mich auf den Rückgabewert bzw. eben den Kommentar von wegen "richtig ins Manual schauen" (und dabei selbst die Parameter verwechseln). Allerdings muss ich mich auch korrigieren. In dem Fall ist das Original buggy, denn bei einem Zugriff auf einen nicht existierenden Datansatz wird nicht etwa abgebrochen oder NULL zurückgegeben, sondern eine Warnung ausgespuckt, dann aber einfach (bool) false zurückgegeben (mixed wäre also richtig - ich guck gleich mal, ob das schon im Bugtracker steht).

PHP macht manchmal richtig Spaß!

Bei COUNT() ist die Sache mit dem Rückgabewert aber ja eh Wurscht - da kommt definitiv ein String mit der Zahl drinnen zurück.

Basti

PS:
http://bugs.php.net/bug.php?id=6679

Scheint also noch nicht wirklich behoben zu sein. Hat jemand Ahnung, wo die Manual-Daten im CSV liegen? Ich find die nicht...
Basti ist offline  
Alt 05.10.2006, 15:08  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Vom Rückgabewert hab ich doch nie geredet sondern vom 2. Parameter, der einfach kein String sein darf, da er für die Zeilenauswahl zuständig ist und da macht nunmal "auswahl" keinen Sinn.
Glaub da ham wir alle aneinander vorbeigeredet
Zergling-new ist offline  
Alt 05.10.2006, 15:50  
Moderator
 
Benutzerbild von agrajag
 
Registriert seit: 02.10.2006
Beiträge: 3.820
PHP-Kenntnisse:
Fortgeschritten
agrajag wird schon bald berühmt werdenagrajag wird schon bald berühmt werden
Standard

Ja, da hab ich im Gedanken einen Elfmeter verwandelt und eigentich ein Eigentor geschossen - um's mal fußballerisch auszudrücken.

'tschuldigkeit, da hab ich wohl nicht aufgepasst.
__________________
Today you...Tomorrow me.
agrajag ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
dateien aus verzeichnis einzeln als mail attachment versenden mathes PHP Tipps 2008 5 17.07.2008 19:45
Doppelte mails vermeiden ... irgendwo ist ein bug... joghurt PHP Tipps 2008 15 03.10.2007 18:45
Unterschied zwischen mail() und popen(/usr/sbin/sendmail)... DonTermi PHP Tipps 2007 8 27.03.2007 13:25
Funktion Mail() verwenden bendigo PHP Tipps 2006 2 05.05.2006 11:44
mail() und boundary Problem Gef PHP Tipps 2006 4 02.03.2006 00:47
doppelte ausgabe vermeiden imported_kremser Datenbanken 2 17.11.2005 18:35
Mail mit mail() kommt nicht an center PHP Tipps 2005-2 5 18.08.2005 13:02
keine doppelte mail und keine doppelten usernamen...., wie?? PHP Tipps 2005-2 23 31.07.2005 20:26
Mail adresse überprüfen? PHP Tipps 2005-2 6 16.06.2005 11:53
Mit der PHP mail() Funktion eine HTMl mail verschicken? PHP Tipps 2005 6 09.05.2005 07:13
php mail() header &amp;amp;amp;amp;amp;amp; Spam Problem PHP-Fortgeschrittene 4 04.05.2005 12:31
[Erledigt] Error Mail() function PHP Tipps 2005 3 14.04.2005 03:32
Mail versenden - Fehler 553 Anuschka PHP Tipps 2004-2 7 13.12.2004 19:54
mehrere Atachement mit HTML Mime mail class??? 18inch PHP Tipps 2004-2 1 28.11.2004 23:58
mail() - mail header PHP-Fortgeschrittene 2 28.09.2004 15:35

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php doppelregistrierung vermeiden, php login kein doppelter benutzername, php doppelte emails vermeiden, mailing doppelte adresse vermeiden, php doppelte benutzername vermeiden, php login doppeltes senden vermeiden, php doppelte user anmeldung vermeiden, php datensatzindex, php mail doppelte mail

Alle Zeitangaben in WEZ +2. Es ist jetzt 14:14 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.