• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Viele hassen ihn, manche schwören auf ihn, wir aber möchten unbedingt sehen, welche Bilder Ihr vor Eurem geistigen Auge bzw. vor der Linse Eures iPhone oder iPad sehen könnt, wenn Ihr dieses Wort hört oder lest. Macht mit und beteiligt Euch an unserem Frühjahrsputz ---> Klick

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!
 

.holger

Borowitzky
Registriert
13.09.04
Beiträge
8.970
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.
 

Tyrra

Kronprinz Rudolf von Österreich
Registriert
17.12.07
Beiträge
1.902
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);
 

duderino

Prinzenapfel
Registriert
26.01.06
Beiträge
555
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

DubiDuh

Zwiebelapfel
Registriert
20.05.08
Beiträge
1.288

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!


 

Tyrra

Kronprinz Rudolf von Österreich
Registriert
17.12.07
Beiträge
1.902


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!