viele werte in Tabelle ersetzen

PHP, Ajax, CSS, HTML, Javascript
Eben für die wirklich Harten, die alles selber machen.
Antworten
Benutzeravatar
lazka
Beiträge: 51
Registriert: Do 24.Mär, 2005 09:54
Wohnort: Graz
Kontaktdaten:

viele werte in Tabelle ersetzen

Beitrag 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
Benutzeravatar
oxpus
Administrator
Beiträge: 28737
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag 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...
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
Benutzeravatar
lazka
Beiträge: 51
Registriert: Do 24.Mär, 2005 09:54
Wohnort: Graz
Kontaktdaten:

Beitrag von lazka »

Du bist ein Gott (Das musste jetzt mal gesagt werden)

(btw kleiner Tippfehler in zeile 23)
Zuletzt geändert von lazka am Fr 22.Apr, 2005 23:36, insgesamt 1-mal geändert.
Benutzeravatar
oxpus
Administrator
Beiträge: 28737
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

(btw kleiner Tippfehler in zeile 23)
:!: behoben
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
Antworten