PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [PHP] Wert liniar steigern...


ich.com.sie.net
2006-04-21, 14:36:14
Grüßt euch! Und zwar hab ich mal wieder eine Frage. Ich hab echt keinen Plan wie ich das lösen soll, aber ich bin mir sicher, ihr könnt mir weiterhelfen.

Und zwar hab ich einen Wert (z. B.: 10) in der Datenbank stehen. Nun soll der Wert jede Stunde (wenns die Performance nicht so sehr runterreißt jede Minute) um eine bestimmte Menge steigen (z. B.: 5). Damit ich quasi nach einer Stunde 15 und nach 2 Stunden einen Wert von 20 in der Datenbank hab.

Ich hoffe mir kann jemand weiterhelfen...

Gast
2006-04-21, 14:56:38
Cronjob

ich.com.sie.net
2006-04-21, 14:58:17
Könntest du mir vielleicht die funktion genauer erläutern...?

Marscel
2006-04-21, 15:09:03
Könntest du mir vielleicht die funktion genauer erläutern...?

Keine Funktion (von PHP)

Sofern du Rootzugriff auf den Server hast, kannst du unter (Linux) /etc/cron.hourly z.B., wenn ein cron-Dienst läuft, eintragen, sodass der Dienst jede Stunde ein Skript ausführt, das dann den Wert in der Datenbank einträgt/erhöht.

ich.com.sie.net
2006-04-21, 15:13:55
Keine Funktion (von PHP)

Sofern du Rootzugriff auf den Server hast, kannst du unter (Linux) /etc/cron.hourly z.B., wenn ein cron-Dienst läuft, eintragen, sodass der Dienst jede Stunde ein Skript ausführt, das dann den Wert in der Datenbank einträgt/erhöht.

Ich hab leider keine Rootzugriff. Kann ich das Trotzdem irgendwie lösen?

PatkIllA
2006-04-21, 16:21:32
den Wert kannst du doch problemlos ausrechnen...

MeLLe
2006-04-21, 18:03:38
... oder auch einen Datenbank-Job einplanen.

ich.com.sie.net
2006-04-21, 21:35:01
okay, das Problem ist soweit gelöst... Allerdings hab ich jetzt ein ganz anderes Problem. Ich muss nicht nur einen Wert "updaten" sondern beliebig viele.

$sql = "UPDATE member SET money = (money + ($wert * 9)) WHERE id = $id";

Jede "id" hat einen anderen "$wert"

Ich kann ja schlecht für jede vergebene "id" ein extra Script schreiben. Hat jemand eine idee?

PatkIllA
2006-04-21, 21:37:13
das updaten in eine schleife packen...

ich.com.sie.net
2006-04-22, 00:20:57
haut bei mir nicht so wirklich hin...

<?php

include("class_cronjob.php");
include("class_base_tec_cronjob.php");

$link = mysql_connect("*****", "*****", "******");

if (!$link)
die("Kann den Server nicht erreichen.");
if (!mysql_select_db("*******", $link))
die("Kann die Datenbank nicht anwählen.");

$sql = "SELECT id FROM base_tec";

$result = mysql_query($sql) OR die(mysql_error());

if(mysql_num_rows($result)) { // gucken ob was im Query drinsteckt
while($row = mysql_fetch_assoc($result)) {

$sql = "UPDATE member SET money = (money + ($bunker * 9)) WHERE id = $row['id']";

}
} else {
echo "Fehlgeschlagen!";
}

?>

könntest du mir vielleicht das Script umschreiben, so dass es funktioniert?

PatkIllA
2006-04-22, 01:10:02
das Update ausführen müsstest du schon noch in der while schleife.

MeLLe
2006-04-22, 09:27:14
Kleine Frage außerdemdem noch:
$sql = "UPDATE member SET money = (money + ($bunker * 9)) WHERE id = $row['id']";
Kann php die Variablen $bunker und $row[] so wie hier angegeben in der Zeichenkette auflösen? Oder müsstest du da nicht ein wenig die Verkettungsoperatoren für dich arbeiten lassen? Sprich$sql = "UPDATE member SET money = (money + (" . $bunker . "* 9)) WHERE id = " . $row['id']; ?
Just ä Vermutung. :)

Marscel
2006-04-22, 15:08:32
<?php

include("class_cronjob.php");
include("class_base_tec_cronjob.php");

$link = mysql_connect("*****", "*****", "******");

if (!$link)
die("Kann den Server nicht erreichen.");
if (!mysql_select_db("*******", $link))
die("Kann die Datenbank nicht anwählen.");

$sql = "SELECT id FROM base_tec";

$result = mysql_query($sql) OR die(mysql_error());

if(mysql_num_rows($result)) { // gucken ob was im Query drinsteckt
while($row = mysql_fetch_assoc($result)) {

mysql_query("UPDATE member SET money = (money + (".$bunker." * 9)) WHERE id =".$row['id'].";");

}
} else {
echo "Fehlgeschlagen!";
}

?>

So sollte es hinhauen.

ich.com.sie.net
2006-04-23, 09:36:46
Funktioniert soweit ganz gut, allerdings ist der Wert "$bunker" variabel.

deswegen sucht er mir jetzt immer $bunker mit der niedrigsten id (also 1) und nimmt alle datenbank einträge mit dem Wert *