2010-11-21 8 views
1

Alles, was ich versuche zu tun ist, dass die PHP-Datei das Enddatum vom Subdatum ansammeln. Ich verstehe nicht, warum diese strtotime-Funktion nicht funktioniert. Meine Datenbank speichert Daten als "Y-m-d".strtotime php mysql

hier ist der Code:

//disguised for security reasons 
$db = mysql_connect("*******", "*******","********"); 
mysql_select_db("*******",$db); 

$getad = mysql_query("SELECT id, annual_sub_date FROM members WHERE annual_sub_date!=null", $db); 
while ($gad = mysql_fetch_array($getad)) { 
$id = $gad['id']; 
$asd = $gad['annual_sub_date']; 
$aedate_time = strtotime('+1 year', $asd); 
$aedate = date("Y-m-d", $aedate_time); 
mysql_query("UPDATE members SET annual_end_date='$aedate', annual_active='Y' WHERE id='$id'"); 
} 

--------- --------- GELÖST IT

Ich ging hin und spielte XBox Split/Second für ein bisschen und dann erkannte ich das Problem. Meine Gedanken gingen zurück zu PHP/MySQL 101. Ich habe alles richtig programmiert, außer dem "! = Null" -Teil.

Jetzt funktioniert alles :) Das sind die Probleme, die Sie bei 5:01 erwarten können.

Antwort

3

Das erste Argument zu strtotime ist ein absolutes oder relatives Datum als String, das zweite Argument ist ein ganzzahliger Zeitstempel. Sie geben ihm ein relatives Datum (string) als erstes Argument und ein absolutes Datum (auch string) als zweites Argument. Sie müssen zuerst $asd in einen Zeitstempel mit strtotime konvertieren.

$aedate_time = strtotime('+1 year', strtotime($asd)); 

BTW, könnten Sie die ganze Datumsberechnung und Aktualisierung in SQL mit einer einzigen Abfrage zu tun, keine Notwendigkeit, den langen Weg um durch PHP zu nehmen.

+0

danke für kommen und helfen. Ich kann das später benutzen. – yanike

0

Es ist, weil strtotime Zeitstempel als zweites Argument benötigt und nicht String-Datum in Y-m-d. Probieren Sie einfach das Code-Snippet aus, um zu sehen, was ich gesagt habe.

 
$gad = array('annual_sub_date' => '2010-11-21'); 
// wrong 
// $asd = $gad['annual_sub_date']; 
// good; convert to timestamp 
list($year, $month, $day) = explode('-', $gad['annual_sub_date']); 
$asd = mktime(0, 0, 0, $month, $day, $year); 
$aedate_time = strtotime('+1 year', $asd); 
$aedate = date("Y-m-d", $aedate_time); 
echo $aedate . "\n";