Hoi,

Ik heb voor mijn weblog en gastenboek in de database 2 kollommen gemaakt, namelijk datum en tijd. Voor beiden 2 kollommen dus. En nu lees ik overal dat als je NOW() gebruikt in de SQL query dit veel makkelijker is.

Nu moet ik dus 1 kolom verwijderen en de andere veranderen naar NOW(). Maar dan kom ik met mijn oude gegevens in de knoop. Hoe kan ik dit het beste oplossen? Of gewoon niet?

Format voor datum is bijv.: 13 april 2007
Format voor tijd is bijv.: 13:47:09

Groeten,
Marnix
Maak iig even een dump van je DB van tevoren
Klaasjan Boven schreef op 23.04.2007 20:58
Maak iig even een dump van je DB van tevoren


Dat was ik wel van plan ja. ;)
Een datatime is Jaar/Maand/Dag.

$datum = explode(" ", $item['datum']);
$datum[1] = replaceMaanden($datum[1]);
$datum = $datum[2] . "-" . $datum[1] . "-" . $datum[0];
$gegevens = $datum . " " . $item['tijd'];
Wat jij daarboven doet met dat script ziet er goed uit

San je hebt gelijk shame
Goed dat je het zegt! Bedankt. Testen is dus niet overbodig hè. :D
Als het goed is gebeurt er alleen wat met je nieuwe kolom dus het kan niet heel veel kwaad
Nog niet goed hè, er moest nog een WHERE clause in. ;)

Dom dom dom... zeker tijd om te stoppen zo. :D

[edit]Ik post het script even voor diegenen die er baat bij hebben. Het werkt perfect![/edit]


<?php
include '../connect.php';

function replaceMaanden($value)
{
	$value = str_replace("januari", "01", $value);
	$value = str_replace("februari", "02", $value);
	$value = str_replace("maart", "03", $value);
	$value = str_replace("april", "04", $value);
	$value = str_replace("mei", "05", $value);
	$value = str_replace("juni", "06", $value);
	$value = str_replace("juli", "07", $value);
	$value = str_replace("augustus", "08", $value);
	$value = str_replace("september", "09", $value);
	$value = str_replace("oktober", "10", $value);
	$value = str_replace("november", "11", $value);
	$value = str_replace("december", "12", $value);
	
	return $value;
}

$items = mysql_query("SELECT id, datum, tijd FROM weblog ORDER BY id");

while($item = mysql_fetch_array($items))
{
	$datum = explode(" ", $item['datum']);
	$datum[1] = replaceMaanden($datum[1]);
	if(strlen($datum[0]) == 1)
	{
		$datum[0] = "0" . $datum[0];
	}
	$datum =  $datum[2] . "-" . $datum[1] . "-" . $datum[0];
	$gegevens = $datum . " " . $item['tijd'];
	
	$query = "UPDATE `weblog` SET `test` = '$gegevens' WHERE `id` = '" . $item['id'] . "' LIMIT 1";
	
	$uitvoeren = mysql_query($query) or die( mysql_error() );
	
	if($uitvoeren)
	{
		echo "<strong>" . $item['id'] . ".</strong> " . $query . " - Gelukt!<br />\n";
	}
	else
	{
		echo "Bij regel <strong>" . $item['id'] . "</strong> ging iets fout!<br />\n";
	}
}

?> 
Volgens mij als je heel goed je best doet kan dit helemaal in mysql zonder PHP

dus iets als

"UPDATE jouwtabel
SET datum_tijd= 
    CONCAT(
        SUBSTRING(datum FROM -4 FOR 4),
        '-', 
        SUBSTRING(datum FROM 4 FOR(LOCATE ' ')),
        '-',
        'LEFT(datum, 2),
        '-',  
        tijd 
        )"


Ik ben alleen niet zo zeker van dat locate en of de tabel bijv april slikt
Volgens mij Had Jan Koehoorn hier laatst ook een SQL voor geschreven
Ik ben niet zo denderend in SQL en veel beter in PHP. :)

PHP is tha bomb! :D

Reageren