Seite 1 von 1

viele werte in Tabelle ersetzen

Verfasst: Fr 22.Apr, 2005 21:23
von lazka
Also ich hab den Album-Mod inst. mit multi-upload und erst seit gestern den Fix eingebaut damit die Zeit nicht bei jedem Bild gleich ist.

Bei vielen Bildern kann man jetzt nicht weiter...

möchte jetzt ein script das alles durchkämt und falls es einen doppelten eintrag findet (immer untereinander) den um 1 (oder wie hier mit rand(), da ich nicht nachdenken will was passiert wenn... :D )

Also--> hab noch nie mit SQL ^6 ^6

Code: Alles auswählen

$pic_davor = 0;
$pic_jetzt = 0;

for($zaehler=1;$zaehler<=1000;$zaehler++)
{

	$sql = "SELECT pic_time
	FROM ". ALBUM_TABLE ."
	WHERE pic_id = $zaehler";

	$row = $db->sql_fetchrow($result);

	if(!empty($row))
	{

		$pic_jetzt = $row['pic_time'];

		if($pic_jetzt == $pic_davor)
		{
			$sql = array();
			srand((double)microtime()*1000000);
			$random = $pic_jetzt + rand(1,1000);

			$sql[] = 'UPDATE ' . ALBUM_TABLE . ' SET pic_time = replace(pic_time,"' .$pic_jetzt. '","'.$random.'")
			WHERE pic_id = $zaehler";

			$pic_davor = $pic_jetzt;
		}
	}
Ich bin mir sicher, dass das nicht geht (wills jetzt nicht prob.) aber der Sinn des ganzen sollte klar sein... ^o

wäre nett wenn ihr das mal überfliegt thx ¦6

Verfasst: Fr 22.Apr, 2005 22:09
von oxpus
Warum so kompliziert?

Code: Alles auswählen

$sql = "SELECT min(pic_time) as first_time FROM " . ALBUM_TABLE;
if (!$result = $db->sql_query($sql))
{
	message_die(GENERAL_ERROR, 'Could not fetch first post time', '', __LINE__, __FILE__, $sql);
}

$row = $db->sql_fetchrow($result);
$first_time = $row['first_time'];
$db->sql_freeresult($result);

$sql = "SELECT pic_id FROM " . ALBUM_TABLE . "
	ORDER BY pic_time, pic_id";
if (!$result = $db->sql_query($sql))
{
	message_die(GENERAL_ERROR, 'Could not fetch post times from album', '', __LINE__, __FILE__, $sql);
}

while ($row = $db->sql_fetchrow($result))
{
	$sql_update = "UPDATE " . ALBUM_TABLE . "
			SET pic_time = $first_time
			WHERE pic_id = " . $row['pic_id'];
	if (!$db->sql_query($sql_update))
	{
		message_die(GENERAL_ERROR, 'Could not update picture time for picture id '.$row['pic_id'], '', __LINE__, __FILE__, $sql_update);
	}
	$first_time++;
}
$db->sql_freeresult($result);
Damit werden die Bilder von der ersten Image-Zeit an zeitlich neu sortiert und zwar immer um eine Sekunde weiter.
Natürlich könntest Du auch $first_time++; mit $first_time += rand(); ersetzen. Je nach Wunsch...

Verfasst: Fr 22.Apr, 2005 22:58
von lazka
Du bist ein Gott (Das musste jetzt mal gesagt werden)

(btw kleiner Tippfehler in zeile 23)

Verfasst: Sa 23.Apr, 2005 02:51
von oxpus
(btw kleiner Tippfehler in zeile 23)
:!: behoben