# Mit PHP bestimmte Daten aus SQL auslesen



## fuschel (6. Februar 2005)

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


----------



## Lukasz (6. Februar 2005)

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 |


```
$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
}
```


----------



## Lukasz (6. Februar 2005)

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 |


```
$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

```
$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!"; }
```


----------



## fuschel (6. Februar 2005)

Erstmal DANKE für die schnelle Antwort

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


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


----------



## Lukasz (6. Februar 2005)

... Aktivierungscode = $code ...

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


```
$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!


----------



## fuschel (6. Februar 2005)

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


----------



## Lukasz (6. Februar 2005)

Dann poste mal bitte den Gesammte Code damit ich 24 einsehen kann!


----------



## fuschel (6. Februar 2005)

```
<?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"); 
     } 
} 
} 
?>
```


----------



## Lukasz (6. Februar 2005)

Der Fehler leigt hier drin


```
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");
```


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

$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!"; } 
     } 
} 
} 
?>
```


----------



## fuschel (6. Februar 2005)

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?


----------



## Lukasz (6. Februar 2005)

```
<?php 

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

if(isset($_REQUEST['Aktivierungscode']) OR strlen($_REQUEST['Aktivierungscode']) > 0) 
{ 
        

     $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"); 
       

     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!"; } 

} 
} else { echo "REQUEST leifert keine Daten!"; }
?>
```

Der Script sollte schon tun, ich habe mal oben den If verändert. Eventuell hast du keine Datenübergabe bei $_REQUEST!


----------



## fuschel (6. Februar 2005)

Daaaaannnnkkkeeeee

Es klappt!


----------



## Lukasz (6. Februar 2005)

Gern geschehen!


----------

