php.de

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

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 22.07.2010, 18:07  
Neuer Benutzer
 
Registriert seit: 20.07.2010
Beiträge: 15
PHP-Kenntnisse:
Anfänger
Cool befindet sich auf einem aufstrebenden Ast
Standard Problem bei if mit } else {

Hi,
ich habe gerade ein Problem
ich will in einer Registrieren Seite einen Schutz einbauen das es jeden Benutzernamen nur 1 mal gibt.
PHP-Code:
while ($zeile mysql_fetch_array$db_ergMYSQL_ASSOC))
    {
$usernamenzeile  =  $zeile['SM-S_User'];
    if (
$username == $usernamenzeile)
    {
        echo 
"FEHLER User existiert schon";
    } else {
    
    
//Code zum einfügen in die Datenbank 
Das Problem ist jetzt das die Fehlermeldung (echo "FEHLER User existiert schon"; )
Angezeigt wird UND es in die Datenbank eingefügt wird.
also ignoriert der mein else

Geändert von Cool (22.07.2010 um 18:28 Uhr).
Cool ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 22.07.2010, 18:09  
da schreibt der ElePHPant
 
Benutzerbild von Flor1an
 
Registriert seit: 18.06.2008
Beiträge: 8.903
PHP-Kenntnisse:
Fortgeschritten
Flor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer Anblick
Standard

Wie sieht den dein Query aus, da ist ja nur die Hälfte an Code dabei ...
Flor1an ist offline  
Alt 22.07.2010, 18:24  
Moderator
 
Benutzerbild von Asipak
 
Registriert seit: 18.07.2005
Beiträge: 4.072
Asipak sorgt für eine eindrucksvolle AtmosphäreAsipak sorgt für eine eindrucksvolle Atmosphäre
Standard

http://www.php.de/php-einsteiger/464...verwenden.html (Bitte aussagekräftige Threadtitel verwenden)
Asipak ist offline  
Alt 22.07.2010, 18:26  
Neuer Benutzer
 
Registriert seit: 20.07.2010
Beiträge: 15
PHP-Kenntnisse:
Anfänger
Cool befindet sich auf einem aufstrebenden Ast
Standard

PHP-Code:
$username trim($_POST['username']);
$box trim($_POST['checkbox']);
$pw trim($_POST['PW']);
$email trim($_POST['email']);
if(
strlen($username) == 0){ //Überprüfung ob username forhanden
} else {
    if(
strlen($username) > 50){ //Überprüfung ob username zu lang
        
echo "Benutzername zu lang <br>";
    } else {
        if(
strlen($username) < 3){ //Überprüfung ob username zu kurtz
            
echo "Benutzername zu kurtz <br>";
        } else {
            if(
strlen ($box) < 1) {
                echo 
"Checkbox nicht aktiv <br>";
            } else {
                if(
strlen ($pw) < 6) {
                    echo 
"Passwort zu kurtz mindestens 6 Zeichen <br>";
                } else {
                    require_once (
'konfiguration.php');
                    
$db_link mysql_connect (MYSQL_HOSTMYSQL_BENUTZERMYSQL_KENNWORT);
                    
                    
// Nutzen von Datenbank - Name ist hinterlegt in
                    // Konstante MYSQL_DATENBANK
                    
$db_sel mysql_select_dbMYSQL_DATENBANK )
                       or die(
"Auswahl der Datenbank fehlgeschlagen");
                    
                    
$sql "SELECT * FROM `SM-Styles`";
                    
$db_erg mysql_query$sql );
                    if ( ! 
$db_erg )
                    {
                      die(
'Ungültige Abfrage: ' mysql_error());
                    }
                    while (
$zeile mysql_fetch_array$db_ergMYSQL_ASSOC))
                    {
                        
$usernamenzeile  =  $zeile['SM-S_User'];
                        if (
$username == $usernamenzeile)
                        {
                            echo 
"FEHLER User existiert schon";
                        } else {
                            
$datei "indexdata/email.txt";
                            
$fp fopen($datei"r+");
                            
$old fread($fp,filesize($datei));
                            
rewind($fp);
                            
fputs($fp"$email \n $old");
                            
fclose($fp);
                            
$eintrag "INSERT INTO `SM-Styles` ( `SM-S_User` , `SM-S_PW` , `SM-S_Box` ) VALUES ('$username', '$pw', '$box')";
                            
$eintragen mysql_query($eintrag);
                            
$mailtext 'MAILTEXT';
                            
                            
$empfaenger "$email"//Mailadresse
                            
$absender   "E-MAIL ADRESSE";
                            
$betreff    "BETREFF";
                            
$antwortan  "E-MAIL ADRESSE";
                            
mail$empfaenger,
                                  
$betreff,
                                  
$mailtext,
                                  
"From: $absender\nReply-To: $antwortan");
                            echo 
"Mail wurde gesendet!";
                        }
                    }
                }
            }
        }
    }
}
?> 
Das ist er ist sogar in anderen Teilen aufgetreten
bei der einlogg Seite

PHP-Code:
<?php
$username 
trim($_POST['username']);
$pw trim($_POST['PW']);
require_once (
'konfiguration.php');
$db_link mysql_connect (MYSQL_HOSTMYSQL_BENUTZERMYSQL_KENNWORT);

// Nutzen von Datenbank - Name ist hinterlegt in
// Konstante MYSQL_DATENBANK
$db_sel mysql_select_dbMYSQL_DATENBANK )
   or die(
"Auswahl der Datenbank fehlgeschlagen");

$sql "SELECT * FROM `SM-Styles`";

$db_erg mysql_query$sql );
if ( ! 
$db_erg )
{
  die(
'Ungültige Abfrage: ' mysql_error());
}

while (
$zeile mysql_fetch_array$db_ergMYSQL_ASSOC))
{
  if (
$username == $zeile['SM-S_User'])
  {
      if (
$pw == $zeile['SM-S_PW'])
    {
        echo 
"<script type='text/javascript'>".
            
"window.location.replace('ZIELADRESSE');".
            
"</script>";
    } else {
        echo 
"Passwort ist FALSCH";
    }
  } else {
      if (
$username == 0)
    {
    } else {
          echo 
"User Existiert Nicht";
    }
  }
}

mysql_free_result$db_erg );
?>
Cool ist offline  
Alt 22.07.2010, 18:29  
Neuer Benutzer
 
Registriert seit: 17.07.2010
Beiträge: 7
PHP-Kenntnisse:
Fortgeschritten
klug_mario befindet sich auf einem aufstrebenden Ast
Standard

Irgendwie hat das Konzept einen Fehler...

PHP-Code:
$sql "SELECT * FROM `SM-Styles`";
                    
$db_erg mysql_query$sql );
                    if ( ! 
$db_erg )
                    {
                      die(
'Ungültige Abfrage: ' mysql_error());
                    }
                    while (
$zeile mysql_fetch_array$db_ergMYSQL_ASSOC))
                    {
                        
$usernamenzeile  =  $zeile['SM-S_User'];
                        if (
$username == $usernamenzeile)
                        {
                            echo 
"FEHLER User existiert schon";
                        } else { 
Hier werden alle (ich nehme an User) aus der Tabelle SM-Styles gelesen und in der Schleife wird jeder extra durchgegangen.

Wenn der Name aus der Datenbank nicht der aktuelle ist, wird der User eingetragen und eine E-Mail versendet.
Wenn doch, wird der Fehler geschrieben.

Das ganze passiert aber für jeden Eintrag in der Datenbank und deshalb treten beide Fälle ein.

Offtopic: kurtz schaut etwas komisch aus
__________________
Kostenlose Domain inkl. E-Mail Adressen?
http://domain4free.net
klug_mario ist offline  
Alt 22.07.2010, 18:34  
Moderator¹
 
Registriert seit: 28.03.2010
Beiträge: 7.470
PHP-Kenntnisse:
Fortgeschritten
ChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer Anblick
Standard

Es ist absolut unsinnig, alle Datensätze abzufragen, wenn du lediglich wissen willst, ob ein bestimmter Wert schon in der Datenbank steht.
Mache eine Abfrage, die gezielt nach einem Datensatz sucht, in dem die entsprechende Spalte diesen Wert hat - und ziehe aus der Anzahl der Ergebniszeilen den logischen Schluss.
(Wenn du jetzt gleich fragen willst, „und wie geht das?“ - dann schau bitte in ein Grundlagen-Tutorial.)


Darüber hinaus ist dieses Abfragen-dann-Einfügen auch eher schlecht. Da kann dir nämlich ein anderer Prozess dazwischen kommen, und dann ist der gerade noch als nicht vergeben ermittelte Name doch schon vergeben, wenn du dann deinen neuen Datensatz einfügen willst.
Deshalb macht man das sinnvoller so, dass man einen Unique Index auf die betreffende Spalte legt - der sorgt dafür, dass die Datenbank jeden Wert nur genau ein mal akzeptiert.
Und dann macht man das INSERT einfach, ohne vorher groß zu prüfen; und wenn das einen Fehler gibt, dann fragt man ab, welchen - und kann dann, wenn es sich um eine Verletzung dieses Unique Index handelte, dem Nutzer eine entsprechende Fehlermeldung präsentieren.


Und insgesamt sieht dein Code noch reichlich chaotisch aus - alle möglichen Bedingungen wild zusammengewürfelt und abenteuerlich verschachtelt, so als hättest du jede einzelne dann eingebaut, wenn sie dir eingefallen ist.
Du solltest dir angewöhnen, erst mal den Ablauf eines Scriptes zu planen, bevor du anfängst wirklich Code zu schreiben. Das kann man auch bspw. erst mal auf einem Blatt Papier machen.
__________________
RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
ChrisB ist offline  
Alt 22.07.2010, 18:34  
Neuer Benutzer
 
Registriert seit: 20.07.2010
Beiträge: 15
PHP-Kenntnisse:
Anfänger
Cool befindet sich auf einem aufstrebenden Ast
Standard

Ok werds mal versuchen

Geändert von Cool (22.07.2010 um 18:48 Uhr).
Cool ist offline  
Alt 22.07.2010, 18:37  
da schreibt der ElePHPant
 
Benutzerbild von Flor1an
 
Registriert seit: 18.06.2008
Beiträge: 8.903
PHP-Kenntnisse:
Fortgeschritten
Flor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer Anblick
Standard

Im Query eine Bedingung einbauen dass er nur den User mit dem gewünschten Usernamen ausliest. Kommt nen Ergebnis zurück, existiert der User mit so einem Namen schon, kommt kein Ergebnis ist der Name frei ...
Flor1an 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
Auf Array zugreifen bringt fehler SteiniKeule PHP Tipps 2010 10 08.04.2010 15:13
[Erledigt] Irrtümlich ausgeführter ELSE Schmuse PHP Tipps 2010 3 13.03.2010 22:11
http_class verwenden hans213 PHP Tipps 2009 27 15.01.2010 03:07
Login-Script in Ordnung? Silent PHP Tipps 2009 73 26.11.2009 01:02
JS-Kalender funktioniert nicht im IE8 ToxicToast JavaScript, Ajax und mehr 4 18.11.2009 16:26
variable mit onclick an php drombusch PHP Tipps 2009 8 30.08.2009 14:45
Vorlagen Manko10 Wiki Diskussionsforum 22 08.10.2008 15:15
Voraussetzungen für dieses Thumbnail Skript Plague PHP Tipps 2008 9 19.09.2007 13:35
Problem und Frage zu Listenfeldauswertung .... bp158 PHP Tipps 2006 2 10.07.2006 22:37
Fehler: 2mal else hintereinander thokon89 PHP Tipps 2006 4 03.07.2006 02:23
If/ else if/ else bedingung richtig trotzdem falsch?!? seejay PHP Tipps 2005 8 09.02.2005 12:59
if else im else von if else *~* PHP Tipps 2004 3 20.09.2004 20:47
probleme mit if und else PHP Tipps 2004 3 19.08.2004 02:56

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
if else, kein betreff einfügen, if else eine zeile php

Alle Zeitangaben in WEZ +2. Es ist jetzt 21:08 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