Usermail script

Alles, was PHP betrifft, kann hier besprochen werden.

Usermail script

Postby 1Euro » 27. August 2005 19:35

HAllo, ich habe ein Script geschrieben mit dem sich die User die sich angemeldet habe gegenseitig eine Nachricht schreiben konnten. Leider schreibt er in dem einen script nichts :/
Das Fehlerhafte script ist senden.php!

Hier die 4 Scripte:

reg.php:
Code: Select all
<?
   session_start();
   @mysql_connect('localhost', 'root', 'klobrille') OR   
      die("Es konnte keine Verbindung aufgebaut werden");   
   mysql_select_db('whatnice') OR       
      die("Konnte Datenbank nicht benutzen, Fehlermeldung: ".mysql_error());
   IF ($_POST['step'] == "") {
      echo '<form method="post" action="reg.php">';
      echo 'Username: <input type="text" name="username">';
      echo '<br />Passwort: <input type="password" name="passwd">';
      echo '<br />Passwortwiederhollung: <input type="password" name="passwdw">';
      echo '<input type="hidden" name="step" value="1">';
      echo '<input type="submit" value="Absenden!">';
      } elseif ($_POST['step'] == 1) {
          IF ($_POST['passwd'] == $_POST['passwdw']) {
               $username = $_POST['username'];
               $passwd = md5($_POST['passwd']);
            $sql = "INSERT INTO user (username,passwd)
                      VALUES ('$username','$passwd');";
            $result = mysql_query($sql);
            if($result===false)
               die("Konnte leider Ihre Registrationsdaten nicht abspeichern: ".mysql_error());
            echo 'Bitte wählen sie ihre Addresse!<br />';
            echo '<form method="post" action="reg.php">';
            echo '<br />Addresse: <input type="text" name="addresse">';
            echo '<input type="hidden" name="step" value="2">';
            echo '<input type="hidden" name="un" value='.$username.'>';
            echo '<input type="submit" value="Absenden!">';
          } else {
             echo 'Ihr Passwort stimmt nicht mit ihrem wiederhollungs Passwort überein!<br />';
             unset($_POST['step']);
             echo '<a href="reg.php">Zurück zum Registrieren.</A>';
          }
      } elseif ($_POST['step'] == 2) {
          $un = $_POST['un'];
          $addresse = $_POST['addresse'];
          $sql = "UPDATE user SET addresse = '$addresse'
                    WHERE username = '$un';";
         $result = mysql_query($sql);
         if($result===false)
            die("Konnte leider Ihre Registrationsdaten nicht abspeichern: ".mysql_error());
          echo 'Ihre Daten wurden gespeichert.<br />';
          echo '<a href="login.php">Zum Login!</A>';
      }
?>


login.php:
Code: Select all
<?
   session_start();
   @mysql_connect('localhost', 'root', 'klobrille') OR   
      die("Es konnte keine Verbindung aufgebaut werden");   
   mysql_select_db('whatnice') OR       
      die("Konnte Datenbank nicht benutzen, Fehlermeldung: ".mysql_error());
   IF ($_POST['step'] == "") {
      echo '<form method="post" action="login.php">';
      echo 'Username: <input type="text" name="username">';
      echo '<br />Passwort: <input type="password" name="passwd">';
      echo '<input type="hidden" name="step" value="1">';
      echo '<input type="submit" value="Absenden!">';
    } elseif ($_POST['step'] == 1) {
       $username = $_POST['username'];
       $sql = "SELECT passwd FROM user WHERE username = '$username'";
       $result = mysql_query($sql);;
       $row = mysql_fetch_assoc($result);
       IF ($row['passwd'] == md5($_POST['passwd'])) {
           unset($_POST['step']);
           echo 'Sie sind erfolgreich eingelogt als: '.$_POST['username'].'<br />';
           echo 'Hier sind ihre Nachrichten:<br />';
           include "nachrichten.php";
           echo 'Hier können sie eine Nachricht schreiben:<br />';
           include "senden.php";
          } else {
           echo 'Ihr Passwort stimmt leider nicht mit dem Gespeicherten überein.';
          }
    }
?>


nachrichten.php:
Code: Select all
<?
   session_start();
   @mysql_connect('localhost', 'root', 'klobrille') OR   
      die("Es konnte keine Verbindung aufgebaut werden");   
   mysql_select_db('whatnice') OR       
      die("Konnte Datenbank nicht benutzen, Fehlermeldung: ".mysql_error());
   $sql = "SELECT text1,text2,text3,text4,text5 FROM user WHERE username = '$username'";
   $result = mysql_query($sql);
   $counter = 0;
   while($row = mysql_fetch_assoc($result)) {
        $counter++;
        if ($row['text'.$counter] == "") {
            echo 'Tut mir leid es ist keine Nachricht mehr vorhanden! <br />';
            break;
          } else {
           echo 'Ihre '.$counter.'. Nachricht ist:<br />'.$row['text'.$counter];
           }
        }
?>


senden.php
Code: Select all
<?
   session_start();
   @mysql_connect('localhost', 'root', 'klobrille') OR   
      die("Es konnte keine Verbindung aufgebaut werden");   
   mysql_select_db('whatnice') OR       
      die("Konnte Datenbank nicht benutzen, Fehlermeldung: ".mysql_error());
   echo '<form method="post" action="senden.php">';
   echo 'An: <input type="text" name="an">';
   echo '<br />Text: <TEXTAREA NAME="text" ROWS="10" COLS="65" WRAP></textarea>';
   echo '<input type="hidden" name="step" value="1">';
   echo '<input type="submit" value="Absenden!">';
   if ($_POST['step'] == 1) {
       $an = $_POST['an'];
       $sql = "SELECT text1,text2,text3,text4,text5 FROM user WHERE addresse = '$an';";
       $result = mysql_query($sql);
      if($result===false)
         die("Konnte leider Ihre Registrationsdaten nicht abspeichern: ".mysql_error());
       $count = 0;
       while($row = mysql_fetch_assoc($result)) {
           $count++;
           IF ($row['text'.$count] == "" AND $count == 1) {
                $textf = $row['text'.$count];
                $text = $_POST['text'];
                IF ($textf == 'text1') {
                    $sql = "UPDATE user SET text1 = '$text'
                       WHERE addresse = '$an';"; }
                IF ($textf == 'text2') {
                    $sql = "UPDATE user SET text2 = '$text'
                       WHERE addresse = '$an';"; }
                IF ($textf == 'text3') {
                    $sql = "UPDATE user SET text3 = '$text'
                       WHERE addresse = '$an';"; }
                IF ($textf == 'text4') {
                    $sql = "UPDATE user SET text4 = '$text'
                       WHERE addresse = '$an';"; }
                IF ($textf == 'text5') {
                    $sql = "UPDATE user SET text5 = '$text'
                       WHERE addresse = '$an';"; }
            $result = mysql_query($sql);
            if($result===false)
               die("Konnte leider Ihre Registrationsdaten nicht abspeichern: ".mysql_error());
            echo 'Die Nachricht wurde erfolgreich an: '.$an.' Gesendet!<br />';
            unset($_POST['step']);
            echo 'Bitte klicken sie F5';
          }
        }
      }
?>


Bitte helft mir ich verstehe nicht warum er beim Update Befehl nichts in die Datenbank schreibt :(

1Euro
Dies ist meine Welt!!!
1Euro
 
Posts: 188
Joined: 11. September 2004 17:50

Postby jakimo72 » 28. August 2005 12:35

Was möchtest Du tun?
Beim abspeichern im script senden selektierst Du
5 Texte aus einer Tabelle. Welche Bedeutung haben diese 5 Texte?
Warum genau 5 Texte, eine variable Anzahl von Texten wäre
ja viel einfacher zu programmieren.

Also nehm' Dir ein Datenbankbuch, und schlage das Kapitel
Fremdschlüssel auf. (MySQL unterstützt zwar nur Fremdschlüssel
auf ImmoDB-Tablellen, aber das Konzept ist trotzdem anwendbar)

Mach eine Tabelle mit texten:
z.B.
create table texte
(
text_id integer not null AUTO_INCREMENT,
user_id integer,
text text,
primary key (text_id),
foreign key (user_id)
references user (user_id) on delete restrict on update restrict
);

Wenn nun ein neuer Text eingegeben wird,
so kannst Du über die Adresse den User selektieren,
(Dazu benötigt jeder Benutzer einen eindeutigen Schlüssel, z.B. die eine user_id)
und dann ein einfaches Insert machen.
(egal, wieviele Texte bereits existieren.)

Wenn dann der Benutzer seine Texte ansehen möchte,
dann einfach in einer while-Schleife alle Texte anzeigen lassen.
(Besser noch man zeigt nur eine bestimmte Anzahl von Texten pro Seite an...)
Der Benutzer kann dann einfach ein Text auswählen, und man kann
anhand der Text_id einfach den Text wieder löschen.
(Dabei die Text_id als hidden-field in einem solchen Formular mitführen.)
"delete from texte where text_id = ".$_POST['text_id'] oder sowas ähnliches.
User avatar
jakimo72
 
Posts: 151
Joined: 07. February 2005 13:25
Location: Hamburg-Barmbek


Return to PHP

Who is online

Users browsing this forum: No registered users and 4 guests