• Das kreative Thema des Monats Oktober wird vor allem diejenigen unter Euch besonders ansprechen, denen Do-it-yourself quasi im Blut liegt. Zeigt uns Eure Improvisationskünste oder fotografiert, was andere Leute sich so im Alltag zusammengestrickt haben. --> Zum Mitmachen bitte hier klicken

PHP Direktlink zum Beitrag via eMail

Tyrra

Kronprinz Rudolf von Österreich
Registriert
17.12.07
Beiträge
1.902
Hallo, ich habe folgendes Problem:
Beim ändern von einem Beitrag wird eine Email generiert welche einen Direktlink zum Beitrag enthält. der Direktlink funktioniert super wenn ein Beitrag geändert wurde da dann die Variable $Auswahl bekannt ist da der Beitrag bereits in der Datenbank ist.

Jetzt mein Problem - Wie mache ich das wenn ein NEUER Beitrag erstellt wird (da ist noch nichts bekannt welche ID er hat da er ja noch nicht in der Datenbank erfasst ist)?

PHP -------------------------------
//automatisch Mailversand wenn eine Änderung oder ein neuer Beitrag erstellt wurde an alle User in DB
mysql_select_db("marketing");
$sql = "SELECT * FROM users";
$result = mysql_db_query($db, $sql);

$nachricht = $kommentare;
$nachricht = wordwrap($nachricht, 70);
$nachricht .= "\n\n\n\nDirektlink zum Beitrag: http://marketing.de/viewdata.php?Auswahl=$Auswahl \n\nDiese Benachrichtigungsmail wurde automatisch versand - Bitte nicht darauf antworten!";

$row=0;
while ($usermail=mysql_result($result, $row, "usermail"))
{
mail($usermail, "Kommentar von $userkennung zum Beitrag: $betreff", $nachricht, "From:<[email protected]>");
$row++;
}

PHP --------------------------------

Hoffe jemand hat eine Idee! Schon mal vielen Dank!
 
in deinem Code oben ist kein Javascript… und welche ID ein neuer Beitrag hat, musst Du erst Serverseitig (PHP) abfragen, da hat der Client (JavaScript) keine Ahnung von.
 
Ich nehme mal an 'Auswahl' ist die ID des Beitrags, oder?

$Auswahl ist die Übergabe-Variable eigentlich für den bereich des Editierens - Im Bereich "Neuen Beitrag erstellen" gibt es diese nicht.

Aber der Mail-Link muss allerdings zum Editierbereich leiten weil der Beitrag dort auch später immer geöffnet wird. Dort jeweils mit $Auswahl=(ID).

Hatte schon versuch das so zu lösen:

$Auswahl = $ma_id;

Ging aber nicht :-(


Hier mal die Inserts in die DB:

session_start();
include ("db_connect.php");
$_SESSION['userkennung'] = $userkennung;

if ($abgesandt)
{
$sql = "INSERT INTO data VALUES ";
$sql .= "('$ma_id',";
$sql .= " '$betreff',";
$sql .= " '$faellig_am',";
$sql .= " '$prioritaet',";
$sql .= " '$status',";
$sql .= " '$zustaendig_1',";
$sql .= " '$mitbeteiligt_1',";
$sql .= " '$mitbeteiligt_2',";
$sql .= " '$mitbeteiligt_3',";
$sql .= " '$mitbeteiligt_4',";
$sql .= " '$mitbeteiligt_5',";
$sql .= " '$kategorie',";
$sql .= " '$aufgabendefinition',";
$sql .= " '$upload',";
$sql .= " '$ersteller')";

$result = mysql_db_query($db, $sql);
 
Die neue ID bekommst du mit

$new_id = mysql_insert_id();

In der Variable $new_id hast du jetzt die zuletzt eingefügte ID. Und damit kannst du dann auch einen Link für die Email generieren.

Gruß
 
  • Like
Reaktionen: Tyrra

Code:
$sql = "SELECT * FROM users";


Ist eine doofe Idee.. Was brauchst du aus der Tabelle users? Namen und eMail, also selectiere auch nur diese. Das macht deine Anwendung 1. performanter und 2. sicherer!

Code:
     if ($abgesandt)
     {    
         $sql = "INSERT INTO data VALUES ";
        $sql .= "('$ma_id',";
        $sql .= " '$betreff',";
        $sql .= " '$faellig_am',";
        $sql .= " '$prioritaet',";
        $sql .= " '$status',";
        $sql .= " '$zustaendig_1',";
        $sql .= " '$mitbeteiligt_1',";
        $sql .= " '$mitbeteiligt_2',";
        $sql .= " '$mitbeteiligt_3',";
        $sql .= " '$mitbeteiligt_4',";
        $sql .= " '$mitbeteiligt_5',";        
        $sql .= " '$kategorie',";
        $sql .= " '$aufgabendefinition',";
        $sql .= " '$upload',";
        $sql .= " '$ersteller')";        
        
        $result = mysql_db_query($db, $sql);


Ist $abgesand eine POST Variable? Dann muss es auch $_POST['abgesand'] heißen! Sonst hast du eine schwere Sicherheitslücke!

und was soll das sein:
Code:
[COLOR=Black]$sql .= " '$zustaendig_1',";
        $sql .= " '$mitbeteiligt_1',";
        $sql .= " '$mitbeteiligt_2',";
        $sql .= " '$mitbeteiligt_3',";
        $sql .= " '$mitbeteiligt_4',";
        $sql .= " '$mitbeteiligt_5',";        
[/COLOR]


Schoneinmal etwas von Normalisierung gehört? Such auch mal danach, es bringt ne Menge!


 


Ist eine doofe Idee.. Was brauchst du aus der Tabelle users? Namen und eMail, also selectiere auch nur diese. Das macht deine Anwendung 1. performanter und 2. sicherer!

Code:
     if ($abgesandt)
     {    
         $sql = "INSERT INTO data VALUES ";
        $sql .= "('$ma_id',";
        $sql .= " '$betreff',";
        $sql .= " '$faellig_am',";
        $sql .= " '$prioritaet',";
        $sql .= " '$status',";
        $sql .= " '$zustaendig_1',";
        $sql .= " '$mitbeteiligt_1',";
        $sql .= " '$mitbeteiligt_2',";
        $sql .= " '$mitbeteiligt_3',";
        $sql .= " '$mitbeteiligt_4',";
        $sql .= " '$mitbeteiligt_5',";        
        $sql .= " '$kategorie',";
        $sql .= " '$aufgabendefinition',";
        $sql .= " '$upload',";
        $sql .= " '$ersteller')";        
        
        $result = mysql_db_query($db, $sql);


Ist $abgesand eine POST Variable? Dann muss es auch $_POST['abgesand'] heißen! Sonst hast du eine schwere Sicherheitslücke!

und was soll das sein:
Code:
[COLOR=Black]$sql .= " '$zustaendig_1',";
        $sql .= " '$mitbeteiligt_1',";
        $sql .= " '$mitbeteiligt_2',";
        $sql .= " '$mitbeteiligt_3',";
        $sql .= " '$mitbeteiligt_4',";
        $sql .= " '$mitbeteiligt_5',";        
[/COLOR]


Schoneinmal etwas von Normalisierung gehört? Such auch mal danach, es bringt ne Menge!



Ist ein INSERT
hier werden alle daten in die DB geschrieben - hat nicht wirklich was mit dem mailversand direkt zu tun.

EDIT: Problem ist gelöst worden - An dieser Stelle nochmal vielen Dank an alle!