PHP datums worden veranderd

Status
Niet open voor verdere reacties.

Jorryt

Gebruiker
Lid geworden
19 dec 2010
Berichten
246
Hallo jongens, ik gebruik het volgende stukje code om uit een xml bestand (waar pubdate) de xml tag is voor de datum.. Om dus uit dat xml bestand de laatste datum te krijgen en de te vergelijken met de laatste datum in mijn database.
Er gaat hier echter iets gigantisch mis... Dit is waarschijnlijk het stukje code waar de fout in ligt:

PHP:
<?php //Connectie met database
$connectie = mysql_connect($server,$gebruikersnaam,$wachtwoord) 	or die("Er kon geen connectie met de server gemaakt worden");
mysql_select_db($database,$connectie);

//Kijken wat de laatst toegevoegde tweet is zodat die daar kan stoppen. 
$querry2 = "SELECT MAX(datum) FROM berichten WHERE soort = \"twitter\"";
$maxdatum = mysql_query($querry2,$connectie) or die("De maximale datum kon niet opgehaald worden");
$max = mysql_fetch_array($maxdatum,MYSQL_BOTH);

//Welke tweet rss - hoeveelste tweet
$feed = 'http://twitter.com/statuses/user_timeline/139398955.rss';
$feednr = "0";

//Kijken wat de laatste datum was
$document = new DOMDocument();														//Domdocuments gebruiken
$document->load("$feed");															//De feed ophalen
$datum_document = $document->getElementsByTagName("pubDate") ->item("0") ->nodeValue;	//datum $feednr laden,

//Datum onder handen nemen
$datum_0000 = str_replace(" +0000","",$datum_document);

//Herknippen
$stukjes_datum_letters = explode(" ", $datum_0000);
$jaar2 = $stukjes_datum_letters["3"];
$maand2 = $stukjes_datum_letters["2"];

//maanden naar cijfers
if($maand2 = "Jan") {$maand_letters = str_replace("Jan","01",$maand2);}
if($maand2 = "Feb") {$maand_letters = str_replace("Feb","02",$maand2);}
if($maand2 = "Mar") {$maand_letters = str_replace("Mar","03",$maand2);}
if($maand2 = "Apr") {$maand_letters = str_replace("Apr","04",$maand2);}
if($maand2 = "May") {$maand_letters = str_replace("May","05",$maand2);}
if($maand2 = "Jun") {$maand_letters = str_replace("Jun","06",$maand2);}
if($maand2 = "Jul") {$maand_letters = str_replace("Jul","07",$maand2);}
if($maand2 = "Aug") {$maand_letters = str_replace("Aug","08",$maand2);}
if($maand2 = "Sep") {$maand_letters = str_replace("Sep","09",$maand2);}
if($maand2 = "Oct") {$maand_letters = str_replace("Oct","10",$maand2);}
if($maand2 = "Nov") {$maand_letters = str_replace("Nov","11",$maand2);}
if($maand2 = "Dec") {$maand_letters = str_replace("Dec","12",$maand2);}

$dag2 = $stukjes_datum_letters["1"];
$tijd2 = $stukjes_datum_letters["4"];

//Plaken van de datum
$datum2 = "$jaar2-$maand_letters-$dag2 $tijd2";

if($datum2 = $max["0"]){
	echo "max datum = ".$max["0"]."<br />";

	echo "datum af = $datum2<br />";
	
	echo $maand_letters;

	echo "datum origineel = $datum_document<br />";

	echo "stukjes van de datum = $jaar2-$maand_letters-$dag2 $tijd2 <br />";

} ?>

Geeft namelijk het volgende stukje tekst:

max datum = 2011-01-15 10:40:59
datum af = 2011-01-15 10:40:59
12datum origineel = Sat, 15 Jan 2011 19:02:40 +0000
stukjes van de datum = 2011-12-15 19:02:40

Iemand enig idee?
 
Wat zie je als je echo 'maand2 = '. $maand2 doet?

Want ik heb het idee dat $maand2 niet de juiste inhoud heeft.
Of je trim eerst de whitespaces trim($maand2).
Kan namelijk zijn dat $maand2 = " Jan " dus dat er nog spaties in de string staan!
 
Spaties zijn het probleem niet, vanwege de explode.

Het is heel gek inderdaad, want van Jan maakt die dus 12, terwijl hij daartoe geen enkele aanleiding heeft.
 
En als je nou met een array gaat werken.

$mnd = array('Jan' => '01' , 'Feb' => '02'....enz

dan kun je met $mnd[$maand2] het nummer vinden!
 
Slim!.
Het verhielp de fout niet, maar maakt mn code wel een stuk netter. Ik heb de fout gevonden. In de if ben ik een = vergeten waardoor die dus niet controleerde of ze gelijk waren, maar $datum2 een nieuwe waarde gaf....
FAIL.
 
haha ja tuurlijk een if vergelijk moet met ==, ga ik ook vaak de fout mee in.

Maar super dat het nu werkt
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan