controlle probleem

Status
Niet open voor verdere reacties.

Kriztiaan

Gebruiker
Lid geworden
14 mrt 2007
Berichten
18
voor het versturen van een herinnering
controleer ik op het aantal dagen en een tijd om te voorkomen dat hij onodig veel mailtjes stuurt. maar die tijd pakt hij niet met gevolg dat hij elke minuut een mail stuurt; wat is er verkeerd ?

PHP:
<?php include ("config_site.php"); 

$result = mysql_query ("SELECT naam, DATE_FORMAT(datum, '%d-%m-') AS verjaardag,
        IF(DAYOFYEAR(datum) >= DAYOFYEAR(NOW()),
        DAYOFYEAR(datum) - DAYOFYEAR(NOW()),
        DAYOFYEAR(datum) - DAYOFYEAR(NOW()) +
        DAYOFYEAR(CONCAT(YEAR(NOW()),'-12-31'))) AS dagenTotVerjaardag
FROM         verjaardag
ORDER BY     dagenTotVerjaardag ASC LIMIT 0,1 ") or die(mysql_error()); ?>
  <?php     while ($record = mysql_fetch_array($result)){ ?>

<?php  if (("{$record['dagenTotVerjaardag']}") =='18' && (date ("H")=='21:00')); 

$to      = 'info@voorbeeld.eu';
$subject = 'Verjaardags herinnering';
$message = 'Beste,
je ontvangt deze email omdat '. $record['naam'].' over 10 dagen jarig is.
tip: je kan haar een ecard sturen of een bericht achterlaten op de website.

www.voorbeeld.eu';
$headers = 'From: herinnering@voorbeeld.eu' . "\r\n" .
    'Reply-To: info@voorbeeld.eu' . "\r\n" .
    'X-Mailer: PHP/' . phpversion();

mail($to, $subject, $message, $headers);
 ?> <?php } ?>
 
Deze regel zit mij een beetje dwars.
Code:
if (("{$record['dagenTotVerjaardag']}") =='18' && (date ("H")=='21:00'));

Moet dit niet zo geschreven worden?

Code:
if ($record['dagenTotVerjaardag'] =='18' && date ("H")=='21:00')
{


}

Gebruik de volgende functie om te kijken wat de waarde is van: $record['dagenTotVerjaardag']

Code:
	function alert($str)
	{
	echo "<script language='JavaScript'>";
	echo "alert('".$str."');";
	echo "</script>";
	}

//alert met:

alert($record['dagenTotVerjaardag']);
 
is dit zoals jij het in gedachten had?
Alert record = 17 klopt want gister was het 18 :P
welnu wanneer ik de { toevoegde kreeg ik problemen.
error_reporting(E_ALL); geeft geen fouten aan.


PHP:
<?php include ("config_site.php"); 

$result = mysql_query ("SELECT naam, DATE_FORMAT(datum, '%d-%m-') AS verjaardag,
        IF(DAYOFYEAR(datum) >= DAYOFYEAR(NOW()),
        DAYOFYEAR(datum) - DAYOFYEAR(NOW()),
        DAYOFYEAR(datum) - DAYOFYEAR(NOW()) +
        DAYOFYEAR(CONCAT(YEAR(NOW()),'-12-31'))) AS dagenTotVerjaardag
FROM         verjaardag
ORDER BY     dagenTotVerjaardag ASC LIMIT 0,1 ") or die(mysql_error());

 ?>
  <?php     while ($record = mysql_fetch_array($result)){ ?>

<?php if ($record['dagenTotVerjaardag'] =='17' && date ("H")=='21:00');
{

function alert($str)
	{
	echo "<script language='JavaScript'>";
	echo "alert('".$str."');";
	echo "</script>";
	}

//alert met:

alert($record['dagenTotVerjaardag']);

$to      = 'info@voorbeeld;
$subject = 'Verjaardags herinnering';
$message = 'Beste Familie,
je ontvangt deze email omdat '. $record['naam'].' over 10 dagen jarig is.
tip: je kan haar een ecard sturen of een bericht achterlaten op de website.

** Dit is een automatich verzonden bericht van: www.voorbeeld.eu **
';
$headers = 'From: herinnering@voorbeeld.eu '. "\r\n" .
    'Reply-To: info@voorbeeld.eu '. "\r\n" .
    'X-Mailer: PHP/' . phpversion();

mail($to, $subject, $message, $headers);
 ?> <?php } ?>
 
Laatst bewerkt:
Welke problemen heb je?

Gebeurt er nu helemaal niks meer?
Of krijg je weer om de zoveel seconden een mail?

Als we het probleem kunnen vinden kunnen we weer verder.

Probeer met de functie die ik je heb gegeven eens alle variabelen te controleren.
Misschien zie je iets abnormaals en vind je het probleem.

Ook is het verstandig om de functie uit het if statement te halen en bovenaan de pagina te zetten. De functie is dan altijd beschikbaar.
 
ik krijg inderdaad elke minuut een mailtje,
alle vars kloppen wel. deze worden in een gelijkaardig script goed verwerk en weer gegeven.

het probleem zou dus echt in deze zin moeten zitten
PHP:
if ($record['dagenTotVerjaardag'] =='17' && date ("H")=='21:00');
verder werkt het schipt naar behoren.
 
Haal de puntkomma achter die regel eens weg. Dat zorgt ervoor dat de if-structuur niks uitvoert (lege regel) indien de conditie waar is i.p.v. het deel tussen de accolades na de if-regel.
Overigens levert "date('H')" maar een getal op. Dus alleen '21'. Je zal die controle moeten veranderen.
 
Laatst bewerkt:
Hoe kan ik dan controleren op het uur? met gewoon:
PHP:
<?php if ($record['dagenTotVerjaardag'] =='16' && date ("H")=='21')
 
Dat is een mogelijkheid. Al krijg je dan het hele (21e) uur elke minuut een mailtje, dus je zal ook op de minuten willen controleren. Dat kan bijvoorbeeld zo:
PHP:
	<?php if ($record['dagenTotVerjaardag'] =='16' && date ("H:i")=='21:00')
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan