Simpele vergelijking met negatieve integer lukt niet helemaal.
Zodra de limiet bereikt is van 15 emails moet er een error komen maar stel ik probeer 45 emails toe te voegen in 1x en ik heb er vandaag pas 10 verzonden dan wil ik een error weergeven met daarbij het aantal emails dat nog toegevoegd kunnen worden (in dit geval dus 5).
Ik heb het volgende geprobeerd:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php
// counter zijn de emailtjes die de gebruiker nog wilt toevoegen..
// emailuitnodigingen zijn de mailtjes die vandaag al verzonden zijn.
// getKlantPakketVerzendLimiet() is de limiet van 15 emails per dag.
$totaalMailtjes = $counter + $emailsUitnodigingen;
$credits = getKlantPakketVerzendLimiet() - $totaalMailtjes;
echo $credits;
if ($credits >= 0)
{
$errors[] .= "De dag limiet van ".getKlantPakketVerzendLimiet() ." emails per dag is bereikt. Upgrade uw pakket om meer uitnodigingen te versturen.";
}
else
{
$credits = str_replace('-', '', ($credits));
$errors[] .= "De dag limiet van ".getKlantPakketVerzendLimiet() ." emails per dag is bijna bereikt. U kunt nog ".$credits." emails toevoegen. Upgrade uw pakket om meer uitnodigingen te versturen.";
}
?>
// counter zijn de emailtjes die de gebruiker nog wilt toevoegen..
// emailuitnodigingen zijn de mailtjes die vandaag al verzonden zijn.
// getKlantPakketVerzendLimiet() is de limiet van 15 emails per dag.
$totaalMailtjes = $counter + $emailsUitnodigingen;
$credits = getKlantPakketVerzendLimiet() - $totaalMailtjes;
echo $credits;
if ($credits >= 0)
{
$errors[] .= "De dag limiet van ".getKlantPakketVerzendLimiet() ." emails per dag is bereikt. Upgrade uw pakket om meer uitnodigingen te versturen.";
}
else
{
$credits = str_replace('-', '', ($credits));
$errors[] .= "De dag limiet van ".getKlantPakketVerzendLimiet() ." emails per dag is bijna bereikt. U kunt nog ".$credits." emails toevoegen. Upgrade uw pakket om meer uitnodigingen te versturen.";
}
?>
Hoe kan ik dit simpel uitrekenen en weergeven?
Gewijzigd op 15/04/2014 19:32:07 door Furio Scripting
Maar voordat je het zo oplost: ik zou het overschrijden van de limiet naar voren halen. Als iemand 45 uitnodigingen wil verzenden maar er maar 15 kan verzenden, wil je dat eerder melden. De gebruiker kan dan namelijk zelf de keuze "welke 1 op de 3 zullen we uitnodigen" maken.
Als er al 15 e-mails zijn verzonden en je vervolgens nog 30 ongebruikte e-mailadressen overhoudt, dan staat de gebruiker voor een voldongen feit. En dan hoor je het gemopper al: "Had ik dat nou eerder geweten, dan had ik wel x en niet y uitgenodigd."
Ward van der Put op 15/04/2014 19:46:03:
Dat kan mooier in een while ... of een do ... while ...
Maar voordat je het zo oplost: ik zou het overschrijden van de limiet naar voren halen. Als iemand 45 uitnodigingen wil verzenden maar er maar 15 kan verzenden, wil je dat eerder melden. De gebruiker kan dan namelijk zelf de keuze "welke 1 op de 3 zullen we uitnodigen" maken.
Als er al 15 e-mails zijn verzonden en je vervolgens nog 30 ongebruikte e-mailadressen overhoudt, dan staat de gebruiker voor een voldongen feit. En dan hoor je het gemopper al: "Had ik dat nou eerder geweten, dan had ik wel x en niet y uitgenodigd."
Maar voordat je het zo oplost: ik zou het overschrijden van de limiet naar voren halen. Als iemand 45 uitnodigingen wil verzenden maar er maar 15 kan verzenden, wil je dat eerder melden. De gebruiker kan dan namelijk zelf de keuze "welke 1 op de 3 zullen we uitnodigen" maken.
Als er al 15 e-mails zijn verzonden en je vervolgens nog 30 ongebruikte e-mailadressen overhoudt, dan staat de gebruiker voor een voldongen feit. En dan hoor je het gemopper al: "Had ik dat nou eerder geweten, dan had ik wel x en niet y uitgenodigd."
Bedankt voor de goede tips Ward,
Ik neem aan dat ik dan via Javascript moet gaan werken om al bij de invoer te gaan rekenen en dus de gebruiker snel op de hoogte kan brengen, ik werk liever enkel met PHP.
De emails worden niet meteen verzonden na het bevestigen, ze worden in een database opgeslagen, daarna kan men binnen 2 uur nog emails verwijderen. Een automatische cron job verstuurt vervolgens na 2 uur de emailtjes.
Bij een foutmelding blijven wel alle emailadressen staan en kan men dus zelf kiezen welke die nog graag wilt versturen.
Gewijzigd op 15/04/2014 19:54:27 door Furio Scripting
Praktisch is dat ook wel gebruikersvriendelijk, want je kunt dan bijvoorbeeld één keer per week je uitnodigingen "klaar zetten" en jouw site doet in de dagen erna de rest.
A. Ik heb de emails die erbij gevoegd willen worden. (lets say 70).
B. Ik heb de verzendlimiet van 50.
C. Ik heb de tot nu toe verzonden emails van vandaag. (lets say 10).
Als ik nu dus: A + C doe heb ik de totale emails (80). Dit is 30 teveel, je kan er nog maximaal 40 toevoegen vandaag. dit wil ik weergeven aan de gebruiker. Maar het wilt niet helemaal lukken :(
Ward van der Put op 15/04/2014 21:24:11:
Oke top, ik lees het helaas net iets te laat.
Ik heb dit in elkaar geknutseld en het geeft eindelijk het bewenste resultaat:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<?php
if ( $limietBereikt !== 1 && $emailsUitnodigingen + $counter > getKlantPakketVerzendLimiet())
{
$limietBereikt = 1;
// emails die erbij willen komen.
$emailsToevoeging = $counter;
// Verzend limiet van 15.
$verzendEmailLimiet = getKlantPakketVerzendLimiet();
// Emails vandaag al verzonden.
$emailsVandaagVerzonden = $emailsUitnodigingen;
echo $emailsToevoeging.'<br/>'.$verzendEmailLimiet.'<br/>'.$emailsVandaagVerzonden;
$totaalAantalEmails = $emailsToevoeging + $emailsVandaagVerzonden;
$verschil = $totaalAantalEmails - $verzendEmailLimiet;
$goede = $emailsToevoeging - $verschil;
if ($totaalAantalEmails > $verzendEmailLimiet && $emailsVandaagVerzonden < $verzendEmailLimiet )
{
$errors[] .= "De dag limiet van ".getKlantPakketVerzendLimiet() ." emails per dag is bijna bereikt. U kunt nog ".$goede." emails toevoegen. Upgrade uw pakket om meer uitnodigingen te versturen.";
}
elseif($emailsVandaagVerzonden >= $verzendEmailLimiet)
{
$errors[] .= "De dag limiet van ".getKlantPakketVerzendLimiet() ." emails per dag is bereikt. Upgrade uw pakket om meer uitnodigingen te versturen.";
}
}
?>
if ( $limietBereikt !== 1 && $emailsUitnodigingen + $counter > getKlantPakketVerzendLimiet())
{
$limietBereikt = 1;
// emails die erbij willen komen.
$emailsToevoeging = $counter;
// Verzend limiet van 15.
$verzendEmailLimiet = getKlantPakketVerzendLimiet();
// Emails vandaag al verzonden.
$emailsVandaagVerzonden = $emailsUitnodigingen;
echo $emailsToevoeging.'<br/>'.$verzendEmailLimiet.'<br/>'.$emailsVandaagVerzonden;
$totaalAantalEmails = $emailsToevoeging + $emailsVandaagVerzonden;
$verschil = $totaalAantalEmails - $verzendEmailLimiet;
$goede = $emailsToevoeging - $verschil;
if ($totaalAantalEmails > $verzendEmailLimiet && $emailsVandaagVerzonden < $verzendEmailLimiet )
{
$errors[] .= "De dag limiet van ".getKlantPakketVerzendLimiet() ." emails per dag is bijna bereikt. U kunt nog ".$goede." emails toevoegen. Upgrade uw pakket om meer uitnodigingen te versturen.";
}
elseif($emailsVandaagVerzonden >= $verzendEmailLimiet)
{
$errors[] .= "De dag limiet van ".getKlantPakketVerzendLimiet() ." emails per dag is bereikt. Upgrade uw pakket om meer uitnodigingen te versturen.";
}
}
?>
Als je quote, citeer dan alleen het deel waar je op reageert/vraag over hebt.
Houdt het topic van leesbaarder.
Furio Scripting op 15/04/2014 19:54:04:
De emails worden niet meteen verzonden na het bevestigen, ze worden in een database opgeslagen, daarna kan men binnen 2 uur nog emails verwijderen. Een automatische cron job verstuurt vervolgens na 2 uur de emailtjes.
Ben wel benieuwd hoe jij dan die cronjob hebt ingesteld. Als Pietje om 14.04 uur bevestigt en Klaartje om 14.12 uur, worden beide exact twee uur later (dus om 16.04 en 16.12 uur) verstuurd?
Dat zou dan betekenen dat er 24/7 een cronjob wordt gestart!?
Excuses voor het qouten...
Furio Scripting op 15/04/2014 19:28:35:
Hiervoor heeft php de functie abs, oftewel, de absolute waarde berekening. Een getal is nu eenmaal geen string.... behalve dan in php....