hallo,

ik wil graag uit 1 tabel een veld updaten met gebruik van een ander veld.

Ik doe een timestamp (time()) in het veld date en een datetime veld (sortingdate). Dat datetimeveld heb ik pas aangemaakt nadat er reeds 150 artikelen in de db stonden. Om dit nu bij iedere rij toe te passen dacht ik dat vrij eenvoudig was.

Maar het lukt me dus niet, hij veranderd sommige rijen wel en sommige ook niet, terwijl ik nix beperk met een where clausule o.i.d.

code:
<?
$getdate = mysql_query("SELECT nwsID,date,sortingdate FROM db_nws ORDER BY nwsID DESC");
$i = 0;
while($date = mysql_fetch_array($getdate)){
$cdate = date('Y-m-d s:i:H',$date["date"]);
$cnwsID = $date["nwsID"];

$i++;

mysql_query("UPDATE db_nws SET sortingdate = '" .$cdate. "' WHERE nwsID = '" .$cnwsID. "'") or die(mysql_error());

}

echo"$i";
?>
offtopic: <? echo"$i"; ?> moet natuurlijk <?php echo $i; ?> zijn. Variabelen horen niet tussen quotes.

Verder heb je weldegelijk een WHERE in de update-query staan.

Ten slotte zou ik je willen aanraden om voor een betere naamgeving te kiezen. $date is namelijk geen datum, maar een array met records uit de database. $row is dus een 100x betere naam. Het is eveneens overbodig om dubbele variabelen aan te maken: <? $cnwsID = $date["nwsID"]; ?> kun je weggooien wanneer je simpelweg $row['newsID'] (let op $row) in de update-query gebruikt.

Echo de diverse queries eens (zet de query in een variabele, echo de variabele en laat mysql_query() deze variabele uitvoeren) om te zien wat er nu echt naar de database wordt gestuurd. Wellicht ontdek je een patroon.
Dit: Y-m-d s:i:H past niet in een datetime veld. Waarom gebruik je niet gewoon NOW()?

Reageren