[ERLEDIGT] Users können sich mit Email us Datenbank löschen


#1

Hallo Users
Mein Problem ist : Die Users können ihre Email eingeben und werden aus der Datenbank gelöscht.
Wie mache ich das?

Gruss HKM


#2

Über ein PHP-Skript welches die E-Mail die eingetragen wird aus der Datenbank löscht.

Koennte ungefaehr so aussehen (email.php);
Dieses Skript wird so allerdings nicht funktionieren die Datenbankinhalte müssen angepasst werden und die Variabelen für die Datenbank (Nutzerdaten) müssen auch angepasst werden:

Grobes Beispiel:

<?php
echo "E-Mail aus Datenbank l&ouml;schen";

  if($_POST) { 
       //Variabelen definieren
				$email = $_POST['email'];
       //Pruefen ob die Mail gueltig ist          
       function validate_Email($email) {
      if (preg_match('/^[^\x00-\x20()<>@,;:\\".[\]\x7f-\xff]+(?:\.[^\x00-\x20()<>@,;:\\".[\]\x7f-\xff]+)*\@[^\x00-\x20()<>@,;:\\".[\]\x7f-\xff]+(?:\.[^\x00-\x20()<>@,;:\\".[\]\x7f-\xff]+)+$/i', $email)) {
            return TRUE; 
        	} else { 
          	return FALSE;
        	}
      	}
  
   if(isset($_POST['submit']))
              //Wenn die E-Mail ungueltig ist, Fehlermeldung ausgeben	
             if((!validate_Email($email))){
                echo ' Sie haben eine ung&uuml;ltige E-Mail angegeben!<br />'; 
								} else {
            //Wenn die Mail gueltig ist, wird geprueft ob die Mail in der Datenbank vorhanden ist
      
      #  Verbindung zur Datenbank aufbauen
       try {
            $DBH = new PDO("mysql:host=$host;dbname=$dbname", $user, $pass);
            $DBH->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
            #SQL Statement
            $STH = $DBH->prepare('SELECT mail FROM $tabelle WHERE :email = "'.$email.'"');
            $STH->execute();
                if($STH->rowCount() != 0) {
                //Wenn die Mail vorhanden ist wird sie geloescht
                    $STH = $DBH->prepare('DELETE * FROM $tabelle WHERE :email = "'.$email.'"');
                    echo 'Die E-Mail wurde aus unserer Datenbank entfernt';
                }else{
                //Andernsfalls ausgegeben, dass die Mail nicht existiert
                    echo "Diese E-Mail existiert nicht!";
                }
            }
        catch(PDOException $e) {
            echo "Error";
            file_put_contents('PDOErrors.txt', $e->getMessage(), FILE_APPEND);
            }       
			}

		}




      echo '      <form action="email.php" method="post">

       <table border="0" cellpadding="2" cellspacing="4"">
         <tr>
           <td style="padding-top:3px;"><b>*</b>E-Mail-Adresse:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td>
           <td style="padding-top:3px;"><input name="email" type="text" id="email" size="30" maxlength="30" />     
           </td>
         </tr> 

       <tr>
        <td></td>
        <td><br><input type="submit" value="E-Mail aus Datenbank l&ouml;schen" name="submit" class="subbutton" /><br><br><br></td>
       </tr>
     </table>
     <br><br>
    </form>  
     </div>
    </div>
</section>  ';       ?>

Ich empfehle dazu: https://www.php-einfach.de/mysql-tutorial/daten-loeschen/


#3

funktioniert nicht


#4

Es kommt immer Error,obwohl ich alles richtig abgeändert habe


#5

Das sagte ich ja bereits, meine Abfrage überprüft nicht die Variabelen. Welche Fehlermeldung kommt?


#6

#7

Stell mal das error Reporting auf E_ALL


#8

Schau doch einmal in die PDOErrors.txt datei rein, im root Verzeichniss, bzw. in dem Verzeichniss wo du die PHP Datei rein gelegt hast.
Dort sollte mehr stehen.

Diese Datei legt das PHP Script automatisch an und schreibt dort alle Fehler rein.
Siehe Zeile “CATCH(PDOExeption $e)”.