ilch Forum » Allgemein » HTML, PHP, SQL,... » Reminder/Erinerung

Geschlossen
  1. #1
    User Pic
    SteKu Mitglied
    Registriert seit
    25.03.2007
    Beiträge
    259
    Beitragswertungen
    2 Beitragspunkte
    Hey Leute,

    ich brauch da gerade mal wieder nen denkanstoss. Ich möchte gerne ein Reminder bauen.

    Der Grundgedanke besteht darin.

    Tabelle1 = Aufgaben
    da wird geschaut ob heute ein termin anfällt ...
    $abfsp = 'SELECT * FROM `prefix_aufgaben` WHERE woche = "'.$woche.'" AND tag = "'.$tag.'" AND aktiv = 1 ORDER BY start';

    Hier erhalte ich dann die "aid" welche dann weiter werwendet werden soll um zu schauen wer hat sich in der

    Tabelle2 = Reminder
    für welche "aid" eingetragen ist. Soweit ist das ja kein Problem, aber jetzt möchte ich gern das wenn sich ein und die selbe E-Mail adresse für zwei "aid" eingetragen hat das in einer E-Mail beide Termine versand werden. Aber mit meinem ansatz "schleife in schleife" versende ich immer jeweils eine E-Mail je Aufgabe ("aid").

    Hat da vielleicht einer einen ansatz wie ich das am besten lösen kann.
    Das wenn ein und die E-Mail an einem Tag zwei errinerung hat nur eine Mail versand wird?

    Hier mal mein ansatz, wo mehr Mails verschickt werden mit je einem eintrag.

    <?php
    
    require_once ('cron_db.php');
    
    $woche = date("W");
    $tag = date("N")+1;
    
    	$abfsp = 'SELECT * FROM `ic1_aufgaben` WHERE woche = "'.$woche.'" AND tag = "'.$tag.'" AND aktiv = 1 ORDER BY start';
    	$ergsp = mysql_query($abfsp);
    	while ($rowsp = mysql_fetch_assoc($ergsp)) {
    		$aid = $rowsp['aid'];
    		echo $aid;
    		
    
    $betreff = "Reminder";
    
    $extra = "From: Reminder<reminder@ich.de>\n";
    $extra .= "Content-Type: text/html\n";
    $extra .= "Content-Transfer-Encoding: 8bit\n";
    
    // Nachricht
    $text = 'Heutige Termine';
    		
    	$abfr = 'SELECT * FROM `ic1_reminder` WHERE rid = "'.$aid.'"';
    	$ergr = mysql_query($abfr);
    	while ($rowr = mysql_fetch_assoc($ergr)) {
    		$wer = $rowr['dname'];
    		$empfaenger = $rowr['mail'];
    $text .= '- '.$wer.'<br>';	
    mail($empfaenger, $betreff, $text, $extra);		
    	}
    	}
    
    ?>
    Wer Rechtschreibfehler findet darf sie behalten.
    0 Mitglieder finden den Beitrag gut.
  2. #2
    User Pic
    Pion Hall Of Fame
    Registriert seit
    25.07.2007
    Beiträge
    870
    Beitragswertungen
    51 Beitragspunkte
    Du könntest ein Array bauen:

    $aidMails = array();
    $abfr = 'SELECT * FROM `ic1_reminder` WHERE rid = "'.$aid.'"';
    $ergr = mysql_query($abfr);
    while ($rowr = mysql_fetch_assoc($ergr)) {
        $aidMails[$rowr['mail']]['betreff'] = 'Reminder';
        ....
        $aidMails[$rowr['mail']]['text'][] = '- '.$wer.'<br>';
    }
    
    foreach($aidMails as $mail => $values)
    {
       mail($mail , $values['betreff'], implode(' ', $values), 'extra...');    
    }


    Das ist Pseudo-Code, sollte dir aber auf die Sprünge helfen :-)
    Damit versendest du pro Email bei mehreren "reminder" auch nur eine Email.
    Dein Datenbankaufbau ist mir aber nicht ganz klar


    Zuletzt modifiziert von Pion am 02.03.2013 - 10:28:19
    0 Mitglieder finden den Beitrag gut.
  3. #3
    User Pic
    s4sch4 Mitglied
    Registriert seit
    09.12.2007
    Beiträge
    183
    Beitragswertungen
    5 Beitragspunkte
    Du könntest deine Datenbank abfrage umbauen und inner join nutzen


    Zuletzt modifiziert von s4sch4 am 02.03.2013 - 19:56:49
    Visit me on: externer Link
    Visit my Clan: externer Link
    Mein ilch Modul: Höhrercharts v0.8 für OnlineRadios
    0 Mitglieder finden den Beitrag gut.
Geschlossen

Zurück zu HTML, PHP, SQL,...

Optionen: Bei einer Antwort zu diesem Thema eine eMail erhalten