Es ist Montag und ich kann schon nicht mehr klar denken :-D
Erst mal eben die Tabellen die ich habe:
vms_gebuchte_werbung
uid |
tan |
menge |
werbeart |
status |
beschreibung |
36242 |
GLOERF |
36 |
paidmail |
1 |
Testmail 1 |
12345 |
GLIPSY |
1 |
paidmail |
1 |
Testmail 2 |
... |
... |
... |
... |
... |
... |
vms_emaildaten
uid |
emailadresse |
freigabe_fuer |
36242 |
36242@test.test |
1 |
12345 |
12345@test.test |
1 |
13579 |
13579@test.test |
0 |
24680 |
24680@test.test |
1 |
09876 |
09876@test.test |
1 |
vms_reload
uid |
tan |
bis |
12345 |
GLOERF |
1504192934 |
... |
... |
... |
So. Was ich möchte:
- Es soll eine Paidmail zufällig ausgewählt werden
- Diese Paidmail an maximal so viele User zufällige(!) verschickt werden wie noch Paidmails da sind (vms_gebuchte_werbung "menge")
- An User verschickt werden, die den Paidmailversand aktiviert haben (vms_emaildaten "freigabe_fuer = 1")
- An die User verschickt werden die nicht Eigentümer der Mail sind (also ihre eigene E-Mail sollen sie nicht bekommen (vms_gebuchte_werbung (uid))
- An alle User verschickt werden die für diese Mail nicht im Reload sind (vms_reload "bis < time()") ODER überhaupt nicht in der vms_reload stehen
Beispiel 1:
Testmail 1 könnte 36 mal verschickt werden, wird aber nur verschickt an UID 24680 und 09876 (siehe vms_emaildaten) (13579 will keine Paidmails, 12345 ist noch im Reload und 36242 ist der Werbebucher und bekommt die eh nicht).
Beispiel 2:
Testmail 2 könnte 2 mal verschickt werden. UID 36242 bekommt sie und 24680 auch (12345 ist der Eigentümer, 13579 will keine Paidmails, 09876 würde sie theoretisch auch bekommen, aber es gibt nicht genug Mails). Am nächsten Tag (wenn keiner der User im Reload ist und die Mail noch vorhanden ist), würde sie vielleicht an 24680 und 09876 gehen, aber nicht an 36242 (halt zufällig ausgewählt)
1. Krieg ich hin:
Code:
$mails = db_query('SELECT * FROM vms_gebuchte_werbung WHERE werbeart = "paidmail" AND menge > 0 AND status = 1 AND uid != 0 ORDER BY RAND() LIMIT 1');
Es wird eine zufällige Paidmail ausgewählt, die von einem User gebucht wurde, aktiv ist und noch geklickt werden kann.
Der Code gibt mir richtigerweise beide Paidmails raus.
Bei dem Rest komm ich aber nicht weiter. Entweder er wählt gar keinen User aus, nur die die in der Reloadsperre sind oder er verschickt sie an alle User die Paidmails wollen inklusive derer die eigentlich schon im Reload sind......
Kann mir jemand helfen und mir den Code geben mit dem ich die User richtig auswähle?
Gruß,
MrChicken