UPDATE Funktion nur 1x pro Tag

lifehunter

Erfahrenes Mitglied
Ich habe auf meienr Seite das Alter der Leute abgespeichert. Jedes mal wenn sie Geburstag haben wird ihr Alter aktualisiert. Das passiert in der Liste wo die Geburstagskinder des Tages angezeigt werden. Nun wird das Alter aber jedes mal erneuert, wenn diese Geburstagsliste aufgerufen wird. Gibt es eine Möglichkeit, das man den Teil des Scripts nur einmal pro Tag ablaufen lassen kann? Ich hatte mir Überlegt das man eine Spalte machen kann die das letzte Aktualisierungsdatum enthält erstellen kann, aber es gibt doch bestimmt auch einen Befehl der das ganze regelt, oder

MfG
 
Hallo,

Poste doch mal bitte den Code den du hast.

Gruß BlackLove2005

EDIT:

Ich z.B. rufe die Leute die Geb haben so aus der DB auf:

PHP:
 <?php
//Geburtstagskinder aus der Datenbank laden
$sql = "SELECT

benutzername,
	geschlecht,
	geburtstag
	
FROM
	user
	ORDER BY
benutzername ASC
		";
	$return = mysql_query($sql);

	echo "<p>";
	while($_data = mysql_fetch_assoc($return))
		{
												if(!preg_match("/([0-9]{4})-".date("m-d")."/",$_data['geburtstag'],$year)) continue;

	$x = true;

echo '<span style="white-space:nowrap;"><a href="profils.php?user='.$_data['benutzername'].'">';
echo $_data['benutzername']."</a>&nbsp;(";
if($_data['geschlecht'] == "m")
{
echo '<img src="../img/profil/mann.gif" width="8" height="8" alt="m">,&nbsp;';
		}
												elseif($_data['geschlecht'] == "w")
		{
		echo '<img src="../img/profil/frau.gif" width="8" height="8" alt="w">,&nbsp;';
		}
$old = date("Y") - $year[0];
echo "$old),</span> ";
		}
			if(@!$x)
		{
echo "Heute haben leider keine registrierte User Geburtstag.";
		}
			echo "</p>";
		?>
 
Zuletzt bearbeitet von einem Moderator:
PHP:
<? // Datum feststellen
$day_now = strftime ("%d", time());
$month_now = strftime ("%m", time());
$year_now = strftime ("%Y", time());

$result=mysql_query("SELECT `ID`, `nick`, `day`, `month`, `year` FROM benutzerdaten WHERE `day` = '".$day_now."' AND `month` = '".$month_now."' AND `year` = '".$year_now."'");
for($i=0;$i<mysql_num_rows($result);$i++)
$gebnick[$i]=mysql_fetch_array($result);

for($i=0;$i<count($gebnick[$i]);$i++){
$alter = $year_now - $gebnick[$i]['year'];
mysql_query("UPDATE benutzerdaten SET Alter = '".$alter."' WHERE `ID` = '".$gebnick[$i]["ID"]."'";
echo "<a href='".$PHP_SELF."?userinfo&ID=".$gebnick[$i]['ID']."'>".$gebnick[$i]['nick']."</a>(".$alter.")";
} ?>
so mache ich es zur zeit
 
Hallo,

ich frag mich gerade warum du ein Update da drin hast? Was willst du denn damit erreichen? ein Geb gibt man einmal an und dann liest man das einfach wieder aus. Das bleibt doch immer gleich oder etwa nichtß

Gruß BlackLove2005
 
ich hab das deshalb gemacht damit nicht immer das alter jedes Users ausgerechnet werden muss wenn er in der Onlineliste angezeigt wird. Das spart Traffic dachte ich mir. Wenn jemand online is wird er dann mit zb. Jack(19) angezeigt und so müsste ich nur das abfragen:
PHP:
<?
$result=mysql_query("SELECT `ID`, `nick`, `alter` FROM benutzerdaten WHERE `ID`='".$_SESSION["ID"]."''");
for($i=0;$i<mysql_num_rows($result);$i++)
$nick[$i]=mysql_fetch_array($result);

for($i=0;$i<count($gebnick[$i]);$i++)
echo $nick[$i]['nick']" ("$nick[$i]['alter']")"; ?>

Würde ich das Alter nicht speichern müsste ich jetzt noch das Alter ausrechnen lassen.
 
Hallo,

hast du dir Seite Online dass ich das mal sehen kann. Denn ich verstehe gerade dein Problem nicht so richtig. Wenn du willst dann kannst du mir auch den Link Privat schicken!

Gruß BlackLove2005
 
Hallo!

ich würde ein neues Script erstellen, das für alle User das aktuelle Alter berechnet und in eine Datenbank schreibt. Dieses Script kannst du dann einmal am Tag mit einem Cronjob ausführen.
 
Moritz123 hat gesagt.:
Hallo!

ich würde ein neues Script erstellen, das für alle User das aktuelle Alter berechnet und in eine Datenbank schreibt. Dieses Script kannst du dann einmal am Tag mit einem Cronjob ausführen.

Das sehe ich genauso!

Mache eine seperate Update-Funktion, die du (treffenderweise) täglich um Mitternacht (per Cronjob) aufrufst.
Wenn du Zugriff auf den Server hast kannst du die Funktion auch per Kommandozeile ausführen lassen, damit du sie gegen externe Aufrufe sichern kannst.


MfG. xxenon


Nachtrag:

Am besten fügst du dann noch eine Spalte ein, über die du abfragen kannst, wer heute Geburtstag hat um die Geburtstagskinderliste schneller erzeugen zu können.
 
Zuletzt bearbeitet:
Leider nein, is gerade noch im Aufbau, aber ich versuchs noch ma bisschen genauer zu beschreiben.
Also wenn sich jemand anmeldet gibt er sein Geburtsdatum an. Dieses wird mit Tag, Monat und jahr angegeben. Nun wird das Alter berechnet und mit seinem Gebursdatum in die Datenbank geschrieben.
Wenn der User sich jetzt einlogt wird er in der Liste der Onlineuser angezeigt. Das sieht dann so aus Jack(19). Es wird also nur abgefragt wie sein Nick, ID und sein Alter ist.
Jedes mal wenn sein Geburstdatum mit dem heutigen Datum übereinstimmt wird man in der Geburstagsliste angezeigt. Und dabei geschiet noch folgendes, sein Alter wird erneut ausgerechnet um das neue Alter in die Datenbank zu schreiben. Das spar also Traffic weil das Alter pro User nur 1x pro Jahr ausgerechnet werden muss und nicht jedes mal wenn er von jemand online gesehen wird.

Mein Problem ist jetzt aber noch das das Alter zwar nur noch am Geburstag selbst erneut berechnet wird, jedoch jedes mal erneut berechnet wird wenn die Geburstagsliste angezeigt wird.
 
Zurück