Mit PHP bestimmte Daten aus SQL auslesen

fuschel

Grünschnabel
Hallo,

ich bin auf dem Gebiet sql mit php auslesen noch ein ziemlicher Neuling! Ich habe ein LogIn programmiert und dazu ein Registrierungsformular. Wenn man dieses ausfüllt und abschickt bekommt man eine Mail in der man auf einen Aktivierungslink klicken muss. Nun möchte ich aber das, nachdem man diesen Link betätigt hat, eine weitere Mail bekommt in der man begrüß wird. Nun weiß ich aber nicht mit welchem Befehl ich den Absender deklariere. Hier ein Versuch von mir ;)

PHP:
<?php
 
 $DatabaseHost = "***";
 $DatabaseUser = "***";
 $DatabasePassword = "*******";
 $Database = "****";
 $TableAktivierung = "users";
 $Absender = "Ihr-Team@neuerPlanet.de";
 
 if($_REQUEST['Aktivierungscode'])
 {
      

     
     $DatabasePointer = mysql_connect($DatabaseHost, $DatabaseUser, $DatabasePassword);
     mysql_select_db($Database, $DatabasePointer);
 
     $ResultPointer = mysql_query("SELECT UserID FROM $TableAktivierung WHERE Aktivierungscode='".$_REQUEST['Aktivierungscode']."' LIMIT 1", $DatabasePointer);
     if(mysql_num_rows($ResultPointer)>0)
     
     {
         @mysql_query("UPDATE $TableAktivierung SET Aktiviert='Ja' WHERE Aktivierungscode='".$_REQUEST['Aktivierungscode']."'", $DatabasePointer);
         echo"Vielen Dank! Ich Account wurde nun Aktiviert. Sie können sich nun einloggen.";
     mail($email, "Wilkommen bei neuerPlanet.de", "Wilkommen $name,\n\du hast jetzt einen Account bei neuerPlanet.de\n\nUser Team wünscht dir viel Spaß!\nFür Inormationen zum Spiel klicke hier -> http://www.neuerPlanet.de/Anleitung.php", "FROM: $Absender");
     }
 }
 
 ?>



Ich möchte also den Wert "$email" und "$name" aus dem Anmeldeformular übernehmen. Aber da man in der Mail auf einen Link klicken muss weiß ich nicht wie ich das machen kann! Dann kam mir die Idee das über den Aktivierungscode aus sql auszulesen. Kam aber auch nicht viel weiter.

Könnt ihr mir helfen?

Gruß
fuschel
 
Hi
weise mysql_num_rows($ResultPointer)
einfach ein array() zu, dann kannst du assoc mässig (Nach Spaltenindex) auslesen.

$daten = mysql_num_rows($ResultPointer);
Zum Beispiel

dann
$daten['Spaltenname']

oder gar bestens gehst du das ganze mit mysql_fetch_assoc() an

Schau mal hier -> http://de3.php.net/mysql_fetch_assoc

PS Hier noch ein Beispiel

User
---------------------------------------------
user_name | user_rang | user_email |

PHP:
$result=mysql_query("SELECET * FROM User WHERE user_name = 'Michael' LIMIT 1");
while($row = mysql_fetch_assoc($result)){
echo $row['user_name']; // Trägt die Spalte user_name
echo $row['user_rang']; // Trägt die Spalte user_rang
echo $row['user_email']; // Trägt die Spalte user_email
}
 
Zuletzt bearbeitet von einem Moderator:
Hi
weise mysql_num_rows($ResultPointer)
einfach ein array() zu, dann kannst du assoc mässig (Nach Spaltenindex) auslesen.

$daten = mysql_num_rows($ResultPointer);
Zum Beispiel

dann
$daten['Spaltenname']

oder gar bestens gehst du das ganze mit mysql_fetch_assoc() an

Schau mal hier -> http://de3.php.net/mysql_fetch_assoc

PS Hier noch ein Beispiel

User
---------------------------------------------
user_name | user_rang | user_email |

PHP:
$result=mysql_query("SELECET * FROM User WHERE user_name = 'Michael' LIMIT 1");
while($row = mysql_fetch_assoc($result)){
echo $row['user_name']; // Trägt die Spalte user_name
echo $row['user_rang']; // Trägt die Spalte user_rang
echo $row['user_email']; // Trägt die Spalte user_email
}

Auch ein if ist Möglich
PHP:
$result=mysql_query("SELECET * FROM User WHERE user_name = 'Michael' LIMIT 1");
if (mysql_fetch_assoc($result) > 0) {
while($row = mysql_fetch_assoc($result)){
echo $row['user_name']; // Trägt die Spalte user_name
echo $row['user_rang']; // Trägt die Spalte user_rang
echo $row['user_email']; // Trägt die Spalte user_email
}
echo "Sie sind jetzt aktiviert";
} else { echo "Sie sind bei uns nicht verzeichnet!"; }
 
Erstmal DANKE für die schnelle Antwort

Ich hab das gleich versucht umzusetzten. Nun sieht es folgendermaßen aus:

PHP:
 if($_REQUEST['Aktivierungscode'])
 {
      

     $code = $_REQUEST['Aktivierungscode'];
     $DatabasePointer = mysql_connect($DatabaseHost, $DatabaseUser, $DatabasePassword);
     mysql_select_db($Database, $DatabasePointer);
 
     $ResultPointer = mysql_query("SELECT * FROM $TableAktivierung WHERE Aktivierungscode = $code LIMIT 1");
     
     if (mysql_fetch_assoc($ResultPointer) > 0) {
     while($row = mysql_fetch_assoc($ResultPointer)){
         @mysql_query("UPDATE $TableAktivierung SET Aktiviert='Ja' WHERE Aktivierungscode='".$_REQUEST['Aktivierungscode']."'", $DatabasePointer);
         echo"Vielen Dank! Ich Account wurde nun Aktiviert. Sie können sich nun einloggen.";
     mail($row['eMail'], "Wilkommen bei neuerPlanet.de", "Wilkommen $row['UserName'],\n\du hast jetzt einen Account bei neuerPlanet.de\n\nUser Team wünscht dir viel Spaß!\nFür Inormationen zum Spiel klicke hier -> http://www.neuerPlanet.de/Anleitung.php", "FROM: $Absender");
     }
 }
 }
 ?>

Ein bisschen durcheinander vielleicht ;)

Momentan kommt, wenn ich die Seite aufrufe:
Parse error: parse error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in /mnt/be1/02/378/00000019/htdocs/admin/registrierung-abschliessen.php on line 24

Habe ich etwas übersehen?

Gruß
fuschel
 
... Aktivierungscode = $code ...

...Aktivierungscode = '$code'...

PHP:
$ResultPointer = mysql_query("SELECT * FROM $TableAktivierung WHERE Aktivierungscode = '$code' LIMIT 1");

Achte auch immer auf die korrekte Auschreibung der Tabellen und Spaltennamen und auch nicht Groß - kleinschreibung ausser Acht lassen!

Gruss!
 
Zuletzt bearbeitet von einem Moderator:
Aber der Fehler
Parse error: parse error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in /mnt/be1/02/378/00000019/htdocs/admin/registrierung-abschliessen.php on line 24

kommt immer noch :(..
 
PHP:
<?php
 
 $DatabaseHost = "rdbms.strato.de";
 $DatabaseUser = "*****";
 $DatabasePassword = "*****";
 $Database = "******";
 $TableAktivierung = "users";
 $Absender = "Ihr-Team@neuerPlanet.de";
 
 if($_REQUEST['Aktivierungscode']) 
{ 
       

     $code = $_REQUEST['Aktivierungscode']; 
     $DatabasePointer = mysql_connect($DatabaseHost, $DatabaseUser, $DatabasePassword); 
     mysql_select_db($Database, $DatabasePointer); 

     $ResultPointer = mysql_query("SELECT * FROM $TableAktivierung WHERE Aktivierungscode = '$code' LIMIT 1"); 
      
     if (mysql_fetch_assoc($ResultPointer) > 0) { 
     while($row = mysql_fetch_assoc($ResultPointer)){ 
         @mysql_query("UPDATE $TableAktivierung SET Aktiviert='Ja' WHERE Aktivierungscode='".$_REQUEST['Aktivierungscode']."'", $DatabasePointer); 
         echo"Vielen Dank! Ich Account wurde nun Aktiviert. Sie können sich nun einloggen."; 
     mail($row['eMail'], "Wilkommen bei neuerPlanet.de", "Wilkommen $row['UserName'],\n\du hast jetzt einen Account bei neuerPlanet.de\n\nUser Team wünscht dir viel Spaß!\nFür Inormationen zum Spiel klicke hier -> http://www.neuerPlanet.de/Anleitung.php", "FROM: $Absender"); 
     } 
} 
} 
?>
 
Zuletzt bearbeitet:
Der Fehler leigt hier drin

PHP:
mail($row['eMail'], "Wilkommen bei neuerPlanet.de", "Wilkommen $row['UserName'],\n\du hast jetzt einen Account bei neuerPlanet.de\n\nUser Team wünscht dir viel Spaß!\nFür Inormationen zum Spiel klicke hier -> http://www.neuerPlanet.de/Anleitung.php", "FROM: $Absender");

PHP:
mail($row['eMail'], "Wilkommen bei neuerPlanet.de", "Wilkommen ".$row['UserName'].",\n\du hast jetzt einen Account bei neuerPlanet.de\n\nUser Team wünscht dir viel Spaß!\nFür Inormationen zum Spiel klicke hier -> http://www.neuerPlanet.de/Anleitung.php", "FROM: $Absender");

$row['UserName'] String muss unterbrochen werden!

Koregier beides das mit '$code' und unterbrich den String ".$row['UserName']." !
Ausserdem würde ich dir noch eins empfehlen:

ein @ vor mail() das bewirkt, die Fehlerunterdrückung, und gehe bestensfalls mit if() vor, damit du weist ob die Email auch versendet wurde!

Gesammt:
PHP:
<?php 

$DatabaseHost = "rdbms.strato.de"; 
$DatabaseUser = "+++++++"; 
$DatabasePassword = "*****"; 
$Database = "++++++"; 
$TableAktivierung = "users"; 
$Absender = "Ihr-Team@neuerPlanet.de"; 

if($_REQUEST['Aktivierungscode']) 
{ 
        

     $code = $_REQUEST['Aktivierungscode']; 
     $DatabasePointer = mysql_connect($DatabaseHost, $DatabaseUser, $DatabasePassword); 
     mysql_select_db($Database, $DatabasePointer); 

     $ResultPointer = mysql_query("SELECT * FROM $TableAktivierung WHERE Aktivierungscode = '$code' LIMIT 1"); 
       
     if (mysql_fetch_assoc($ResultPointer) > 0) { 
     while($row = mysql_fetch_assoc($ResultPointer)){ 
         @mysql_query("UPDATE $TableAktivierung SET Aktiviert='Ja' WHERE Aktivierungscode='".$_REQUEST['Aktivierungscode']."'", $DatabasePointer); 
         echo"Vielen Dank! Ich Account wurde nun Aktiviert. Sie können sich nun einloggen."; 
if(!@mail($row['eMail'], "Wilkommen bei neuerPlanet.de", "Wilkommen ".$row['UserName'].",\n\du hast jetzt einen Account bei neuerPlanet.de\n\nUser Team wünscht dir viel Spaß!\nFür Inormationen zum Spiel klicke hier -> http://www.neuerPlanet.de/Anleitung.php", "FROM: $Absender")) { echo "Beim versenden der E-Mail ist ein Fehler aufgetreten!"; } 
     } 
} 
} 
?>
 
Zuletzt bearbeitet von einem Moderator:
Vielen vielen Dank!

Aber es muss noch irgendeine Fehlstellung geben!

Nun wird eine leere Seite angezeigt. Und eine Mail wird auch nicht verschickt..
Stimmt vielleicht im if-Befehl etwas nicht?
 
Zurück