Flash rechnung...PHP-Hilfe gesucht

super!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

also eigentlich klappt alles. nur zwei kleine fragen habe ich noch, kann man den errechneten wert auf eine ganze zahl beschraenken? also keine 4 stellige komma zahl (0.0000)
und zweitens, irgendwie rechnet er nicht ganz genau. wenn ich den wert 235 eingebe gibt die formel 40,0793 aus in realitaet waeren es 39,1. (235 / 6) weisst du an was das liegt?

vielen dank schonmal, du hast mich sehr weiter gebracht!!!
 
Ich habe die Tage nicht auf- oder abgerundet. Aber das geht natürlich auch, hier eine Aufrundung auf sechs Tage (die ja erst um Mitternacht voll wären):

QUOTE (Code)$text3 = ($_GET["text1"]  / ceil((time() - mktime(0, 0, 0, 1, 1, 2008)) / (24 * 60 * 60)));


Und so wird das Ergebnis noch auf- oder abgerundet auf eine volle Zahl:


QUOTE (Code)$text3 = (int)($_GET["text1"]  / ceil((time() - mktime(0, 0, 0, 1, 1, 2008)) / (24 * 60 * 60)));
 
Unter
> $text3 = $_GET["text1"] / ((time() - mktime(0, 0, 0, 1, 1, 2008)) / (24 * 60 * 60));
noch das einfügen:
> $text3 = round($text3, 0);
 
so, jetzt sieht es gut aus! nur noch eine frage:

wir haben heute den 07.01. durch wieviel tage teilt er die km, durch 6 oder 7? also laut dem ergebnis teilt er durch 6, und heute nacht sobald es 08.01. ist teilt er durch 7, ist das richtig? wenn das so ist waere es perfekt.

zweitens, woher nimmt das php sein datum und die zeit? von der windows systemuhr oder bios uhr? vielen dank fuer die bisherige hilfe, einfach super!!!

gruesse aus frankfurt danny
 
Der Code in meinem letzten Beitrag rundet die Tage auf, auf jetzt 7 Tage. Wenn du abrunden möchtest, must du statt ceil() floor() verwenden:

QUOTE (Code)$text3 = (int)($_GET["text1"]  / floor((time() - mktime(0, 0, 0, 1, 1, 2008)) / (24 * 60 * 60)));



QUOTE zweitens, woher nimmt das php sein datum und die zeit?


Von dem Rechner, auf dem der Webserver (und PHP) läuft
 
ggrrr...

irgendwie habe ich mir alles zerschossen oder so! ich habe unten im text eigentlich alles zusammengesetzt wie ihr es vorgeschlagen habt. leider kommt immer ein falsch errechneter wert. sieht jemand den fehler im code?

CODE <?
if($_GET['submit']) {
//pfadangabe der Datei
$pfad = "tachodanny.txt";

//Öffnen der Datei
$fp = fopen($pfad,"r");
$str = fgets($fp,4096);
fclose($fp);


$text3 = (int)($_GET["text1"] / ceil((time() - mktime(0, 0, 0, 1, 1, 2008)) / (24 * 60 * 60)));
$text3 = round($text3, 0);

//Text ersetzen
$text = "&text1=". $_GET["text1"] ."&text2=". $_GET["text2"] ."&text3=".$text3;
//Text wieder zurück schreiben

$fp2 = fopen ($pfad,"w+");

if (!fwrite($fp2, $text)) {
echo "Kann in die Datei $pfad nicht schreiben";
exit;
}else{
echo "hat geklappt";
}
fclose($fp2);
}


?>

<form action="tachodanny.php" method="get">
<input type="text" name="text1" value="" />
<input type="submit" name="submit" value="submit" />
</form>


DANKE
 
die sache ist einfach zu verfahren, ich moechte es nun doch einfacher machen. ich moechte per formular den aktuellen km-stand wegschicken. dieser ergibt wert 1.
und dann moechte ich das sich wert 2 die gefahrenen km im jahr 2008 ergibt. kein durchschnitt und kein runden. einfach nur km ab 1.1.2008. also (gesamt km - 10377 = km in 2008) das reicht mir absolut aus und dann lass ich euch auch endlich in ruhe mit meinem "mist". ich danke vielmals im voraus. gruesse danny
 
QUOTE leider kommt immer ein falsch errechneter wert. sieht jemand den fehler im code?


Der Code scheint mir in Ordnung zu sein (außer dass NCs Codezeile zum zweiten mal rundet, was aber nicht schadet) Und wenn ich den Code teste und z.B. 210 eingebe, erhalte ich erwartungsgemäß:


QUOTE &text1=210&text2=&text3=30


Also 30. Was für einen Wert erwartest du als Ergebnis? Oder erhälst du ein anderes Ergebnis?

PS: wenn du 35 als Ergebnis erwartest (weil du die Tage ab- statt aufrunden möchtest), musst du wie gesagt floor() statt ceil() verwenden:


QUOTE (Code)<?
if($_GET['submit']) {
//pfadangabe der Datei
$pfad = "tachodanny.txt";

//Öffnen der Datei
$fp = fopen($pfad,"r");
$str = fgets($fp,4096);
fclose($fp);


$text3 = (int)($_GET["text1"]  / floor((time() - mktime(0, 0, 0, 1, 1, 2008)) / (24 * 60 * 60)));
$text3 = round($text3, 0);

//Text ersetzen
$text = "&text1=". $_GET["text1"] ."&text2=". $_GET["text2"] ."&text3=".$text3;
//Text wieder zurück schreiben

$fp2 = fopen ($pfad,"w+");

if (!fwrite($fp2, $text)) {
echo "Kann in die Datei $pfad nicht schreiben";
exit;
}else{
echo "hat geklappt";
}
fclose($fp2);
}


?>

<form action="tachodanny.php" method="get">
<input type="text" name="text1" value="" />
<input type="submit" name="submit" value="submit" />
</form>
 
ja ich wollte ja bisher nicht das er den kompletten wert durch die vergangenen tage im jahr 2008 teilt sondern nur die bisher gefahrenen km in diesem jahr.

aber wie gesagt, ich will es einfacher halten, so wie oben angedeutet. ich will mit dem formular den gesamt zaehler stand abschicken und als zweiten errechneten wert die km im jahr 2008 erhalten. (gesamt km 10377km = km in 2008) das reicht mir absolut aus und die rechnung bzw. formel muesste einfacher sein.

kann mir jemand nochmal den code so umstellen das er mit den zwei werten funktioniert?

wert 1 = durch formular eingebe
wert 2 = errechnet mit obiger formel

10377 ist der km stand seit dem 1.1.2008
 
QUOTE ja ich wollte ja bisher nicht das er den kompletten wert durch die vergangenen tage im jahr 2008 teilt sondern nur die bisher gefahrenen km in diesem jahr.


Naja, ich wusste ja nicht, was du da eingibst
smile.gif
- aber das kann man ja noch problemlos integrieren. Wenn du den kompletten Kilometerstand eingibst, kann das Script dir die 10377 wieder abziehen:


CODE $text3 = (int)(($_GET["text1"] - 10377)  / ceil((time() - mktime(0, 0, 0, 1, 1, 2008)) / (24 * 60 * 60)));


... bzw. wenn du die Tage abrunden möchtest:


CODE $text3 = (int)(($_GET["text1"] - 10377)  / floor((time() - mktime(0, 0, 0, 1, 1, 2008)) / (24 * 60 * 60)));


... und wenn du nur die km als Ergebnis haben möchtest:


CODE $text3 = $_GET["text1"] - 10377;
 
jetzt habe ich doch tatsaechlich noch eine bloede frage. ist es moeglich durch ein zweites formularfeld den wert 10377 hochzuladen? es ist zwar der jahreswert den man nur einmal am 1.1. hochladen muss. aber dann muss ich nicht die php datei umbauen.

also im prinzip aus der 10377 eine variable machen, die sich per formularfeld aendern laesst. gibt man nichts ein soll die letzte zahl stehen bleiben! vielen dank fuer die nochmalige hilfe.

gruesse danny
 
Probier es mal so:

QUOTE (Code)<?
if($_GET['submit']) {
//pfadangabe der Datei
$pfad = "tachodanny.txt";

//Öffnen der Datei
$fp = fopen($pfad,"r");
$str = fgets($fp,4096);
fclose($fp);

if ($_GET["text4"] == '') {
parse_str($str);
} else {
$text4 = $_GET["text4"];
}

$text3 = $_GET["text1"] - $text4;

//Text ersetzen
$text = "&text1=". $_GET["text1"] ."&text2=". $_GET["text2"] ."&text3=".$text3."&text4=".$text4;
//Text wieder zurück schreiben

$fp2 = fopen ($pfad,"w+");

if (!fwrite($fp2, $text)) {
echo "Kann in die Datei $pfad nicht schreiben";
exit;
}else{
echo "hat geklappt" . $text;
}
fclose($fp2);
}


?>

<form action="tachodanny.php" method="get">
<input type="text" name="text1" value="" />
gesamt: <input type="text" name="text4" value="" />
<input type="submit" name="submit" value="submit" />
</form>


Wichtig: beim ersten Mal muss ein Gesamtwert eingegeben werden. Danach wird dieser (per parse_str()) aus der Textdatei gelesen, wenn nichts eingegeben wird
 
so, ich moechte an der stelle allen helfern vielmals danken. es ist echt super so viel hilfestellung und hilfe bekommen zu haben. danke das ihr euch die zeit genommen habt mir weiter zu helfen! jetzt funktioniert alles und ich bin uebergluecklich. ich wuensche euch alles gute - danny lettkemann
 
Zurück
Oben