MySQL Suche in zwei Spalten

Funky_MF

Erfahrenes Mitglied
Hallo, folgende Abfrage ist Teil einer Funktion, ich checke damit ein Formulareingabefeld:

PHP:
function check() 
{ 
if( $_POST['email'] == "" ){
      $error['email']		= "Geben Sie bitte eine Email-Adresse ein !";
      } 
elseif( !eregi('^([0-9A-Z_\.-]{1,100})+@([0-9A-Z_-]{1,50}[\.])+([A-Z]{2,4})$',$_POST['email']) ){
      $error['email'] 	= "Geben Sie bitte eine gültige Email-Adresse ein !";  
      }
else{ 
  $return = my_query("select m_email from cc_members where UCASE(m_email) ='".strtoupper($_POST['email'])."'"); 
  if($return[0]['m_email'] != ""){
        $error['email'] 	= "Diese Email-Adresse ist schon vorhanden. Bitte überprüfen Sie Ihre Eingabe !";
        } 
   } 
return $error; 
 
}

Soweit so gut, eine Emailadresse darf nicht nochmal eingeben werde, wenn diese schon in einer Mysql-Tabelle vorhanden ist. Jetzt möchte ich die Abfrage so erweitern, dass überprüft wird ob in einer weiteren Spalte bereits ein bestimmter Wert drinsteht, nämlich der String Mitglied, erst wenn dies nicht der Fall ist, soll die Fehlermeldung erscheinen.

Ungefähr so:
PHP:
$return = my_query("SELECT m_email,m_status FROM cc_members WHERE UCASE(m_email) ='".strtoupper($_POST['email'])."' AND m_status ='Mitglied'");

Wie muss ich das in die if-Abfrage miteinbauen ?
 
Zuletzt bearbeitet:
ähm ich würde mal sagen du musst beide Bedingungen mit AND verknüpfen :-)

Allerdings gebe ich zu bedenken, dass du mit deinem "Versuchs"-query nur die Einträge rausfilterst, wo die Email-Adresse UND der Mitgliedsname schon vorhanden sind.

Somit ist es also möglich sich unter selbem Namen aber mit anderer eMail-Addy anzumelden (darum würde ich da empfehlen von AND zu OR zu wechseln)

shutdown
 
Ich habe mich wohl nicht richtig ausgedrückt, ich möchte nur die Bedingung ändern, bzw erweitern, wann die Fehlermeldung erscheint, im Moment erscheint sie immer wenn die Email schon in der Tabelle steht:
PHP:
if($return[0]['m_email'] != "")
Kannst du mir einen konkreten Tip geben, wie ich diese Bedingung erweitern kann ? Die jetzige Abfrage, also Fehlermeldung bei vorhandener Emailadresse aber nichtvorhandem Eintrag Mitglied, soll weiterhin funktionieren, aber erst dann wenn zusätzlich auch die Spalte m_status abgefragt wurde und diese keinen Eintrag hat.
 
Also nochmal von vorne, vielleicht ist ja auch mein erster Ansatz völlig falsch.
Beim Eintrag eines Datensatzes in eine MySql-Tabelle wird zuerst überprüft, ob dieser Eintrag schon vorhanden ist und zwar anhand des Wertes in der Spalte A, wenn dieser Wert schon vorhanden ist, erscheint eine Fehlermeldung, wenn er nicht vorhanden ist, erfolgt der Eintrag.
Das hat auch mit der beschriebenen Funktion immer geklappt.
Jetzt möchte ich das Ganze wie folgt ändern .bzw. erweitern:
Wenn der Eintrag in Spalte A schon vorhanden ist soll zunächst geprüft werden, ob innerhalb der gleichen Zeile in Spalte B ein bestimmter Wert vorhanden ist, erst wenn dies auch nicht der Fall ist, kommt die Fehlermeldung.
Es gibt also 3 Fälle:
1. Spalte A enthält den einzutragenden Wert und Spalte B ist leer -> Fehlermeldung
2. Spalte A enthält den einzutragenden Wert nicht -> O.K.
3. Spalte A enthält den einzutragenden Wert und Spalte B den gesuchten Wert -> O.K.

Der einzutragenden Wert für Spalte A erhalte ich über ein Formular mittels $_POST.

Kann mir vielleicht jetzt irgendwer helfen ?
 
if ( Spalte A = POST[blabal] AND Spalte B = "")
{
Fehlermeldung
}

(um Syntax hab ich mir jetzt keine Gedanken gemacht)

Eine AND -Verknüpfung gibt nur dann den Wert wahr zurück, wenn beide Bedingungen erfüllt sind.

Das heißt, nur wenn sowohl Spalte A den übergebenen Wert enthält UND gleichzeitig Spalte B leer ist, dann wird die Fehlermeldung ausgegeben.

Ansonsten ist alles in Ordnung und läuft normal ab.

Und wo war da jetzt das Problem? :suspekt:

shutdown :)
 
Danke, da waren mal wieder zuviel Bäume in dem Wald... :rolleyes:

Zur Info: hab das Ganze jetzt so gelöst:
PHP:
else 
			{ 
				//$return = my_query("select m_email from cc_members where UCASE(m_email) ='".strtoupper($_POST['email'])."'"); 
				$return = my_query("SELECT m_email,m_status FROM cc_members WHERE UCASE(m_email) ='".strtoupper($_POST['email'])."'"); 
        
        if($return[0]['m_email'] != "" AND $return[0]['m_status'] != "Mitglied" ){
        $error['email'] 	= "Diese Email-Adresse ist schon vorhanden. Bitte überprüfen Sie Ihre Eingabe !";
        }
        elseif($return[0]['m_email'] != "" AND $return[0]['m_status'] = "Mitglied" ){
        $error['status'] 	= "1";
      	} 
			}
Funktioniert !
 
Zurück