ilch Forum » Allgemein » HTML, PHP, SQL,... » Rechen OP´s

Geschlossen
  1. #1
    User Pic
    Rudi Mitglied
    Registriert seit
    01.10.2004
    Beiträge
    25
    Beitragswertungen
    0 Beitragspunkte
    hi,
    nachdem die geschcihte mit der DAtenbank nun klappt habe ihc ein letztes problem und zwar habe ich folgende 2 verschiedene Cods:

    CODE 1:

    <HTML>
    <HEAD>
    <FONT bgcolor="black" text="white" link="white" vlink="white"</FONT>
    </HEAD>
    <BODY>
    <center>
    <?PHP
    ECHO "Dein Setup war:<p>";
    ECHO "Tankinhalt: $tank <br>";
    ECHO "Runden am Stück: ".number_format($runden,1) ." Runden<br>";
    IF ($reifen == "a")
    {
    $rdnzeit= $runden * $tank;
    ECHO "Ihre Rundenzeit war: ". number_format($rdnzeit,2) . "Minuten schnell<p>";
    }
    ELSE
    {
    $rdnzeit3= $runden * $tank * 1.1;
    $rdnzeit2 = $rdnzeit3 / 1000;
    $rdnzeit = $rdnzeit2 + 1;
    ECHO "Durch die weichen Reifen haben Sie einen Vorteil. <br>";
    ECHO "Deshalb ist ihre tatsächliche Zeit: " . number_format($rdnzeit,2) . " Minute schnell<p>";
    }
    ?>
    </center>
    </BODY>
    </HTML>


    CODE 2:

    <HTML>
    <HEAD>
    <FONT bgcolor="black" text="white" link="white" vlink="white"</FONT>
    </HEAD>
    <BODY>
    <center>
    <?PHP
    ECHO "Dein Setup war:<p>";
    ECHO "Tankinhalt: $tank <br>";
    ECHO "Runden am Stück: ".number_format($runden,1) ." Runden<br>";
    IF ($reifen == "b")
    {
    $rdnzeit= $runden * $tank;
    ECHO "Ihre Rundenzeit war: ". number_format($rdnzeit,2) . "Minuten schnell<p>";
    }
    ELSE
    {
    $rdnzeit3= $runden * $tank * 1.12;
    $rdnzeit2 = $rdnzeit3 / 1000;
    $rdnzeit = $rdnzeit2 + 1;
    ECHO "Durch die Harten Reifen haben Sie einen Vorteil. <br>";
    ECHO "Deshalb ist ihre tatsächliche Zeit: " . number_format($rdnzeit,2) . " Minute schnell<p>";
    }
    ?>
    </center>
    </BODY>
    </HTML>


    So nun sind die REchenwerte unterschiedlich und eigentlich müsste bei dem 2.Code ein deutlich höherer WErt als beim 1.Code raus kommen.
    Dem ist aber nicht so. Wo ist mein Fehler? Könnt ihr mir helfen?
    0 Mitglieder finden den Beitrag gut.
  2. #2
    User Pic
    scaRFhogg Mitglied
    Registriert seit
    02.06.2003
    Beiträge
    750
    Beitragswertungen
    0 Beitragspunkte
    Gib doch mal Beispielzahlen an.
    Wenn dir die Differenz nicht groß genug ist musst du halt den Faktor 1.12 in der 2. Version noch etwas mehr erhöhen.


    Zuletzt geändert von scaRFhogg am 06.11.2004 - 16:15
    0 Mitglieder finden den Beitrag gut.
  3. #3
    User Pic
    Rudi Mitglied
    Registriert seit
    01.10.2004
    Beiträge
    25
    Beitragswertungen
    0 Beitragspunkte
    die differenz ist hoch genug. Inzwischen habe ich es auch hinbekommen nur jetzt habe ich das problem, dass man immer noch alle zahlen eingeben kann.
    WIe mach ich eine mindest/maximal rate rein?
    0 Mitglieder finden den Beitrag gut.
  4. #4
    User Pic
    scaRFhogg Mitglied
    Registriert seit
    02.06.2003
    Beiträge
    750
    Beitragswertungen
    0 Beitragspunkte
    Ich weiß nicht so genau was du meinst aber ich hab das etwa so verstanden:

    <?php
    
    
    $_POST['rate']; // Variable, die vom User eingegeben wurde
    $rate = intval($_POST['rate']); // sicherstellen, dass wir es mit einer Integer Zahl zu tun haben
    // für komma Werte entsprechend floatval() verwenden
    $obergrenze = 7;
    $untergrenze = 3;
    
    if($rate > $obergrenze)
    {
       $rate = $obergrenze;
    }
    elseif($rate < $untergrenze)
    {
        $rate = $untergrenze;
    }
    
    // $rate ist jetzt $untergrenze <= $rate <= $obergrenze
    
    ?>





    Zuletzt geändert von scaRFhogg am 06.11.2004 - 18:52
    0 Mitglieder finden den Beitrag gut.
  5. #5
    User Pic
    Rudi Mitglied
    Registriert seit
    01.10.2004
    Beiträge
    25
    Beitragswertungen
    0 Beitragspunkte
    gehen wir mal von folgendem Code aus:

    <HTML>
    <BODY>
    <center>
    <?
    switch ($_GET['reifen']) {  // Ansonsten bitte das $_POST verwenden
    case 'a':
        $multi = 1.1;
        $art = 'weichen';
        break;
    case 'b':
        $multi = 1.12;
        $art = 'harten';
        break;
    case 'c':
        $multi = 1.3;
        $art = 'intermediate';
        break;
    default:
        $multi = 1.5;
        $art = 'regen';
    }
    
    $rdnzeit= $runden * $tank * $multi;
    $rdnzeit2 = $rdnzeit / 1000.;
    $rdnzeit = $rdnzeit2 + 1;
    ?>
    Durch die <?=$art;?> Reifen haben Sie einen Vorteil.<br>
    Deshalb ist ihre tatsächliche Zeit: <?=number_format($rdnzeit,2);?> 
    Minuten schnell
    </center>
    </BODY>


    und in einem Formular vorher gibt der User 2 Variablen ein. Dann sieht der Code den du oben angegeben hast anders aus oder?
    Ist der dann so richtig:

    <?php

    $_GET['tank'];
    $_GET['runden']
    $rate = intval($_GET['tank'],$_GET['runden']);
    $obergrenze = 200;
    $untergrenze = 10;

    if($rate > $obergrenze)
    {
    $rate = $obergrenze;
    }
    elseif($rate < $untergrenze)
    {
    $rate = $untergrenze;
    }
    ?>

    oder ist was falsch? das Formular sieht so aus:

    <HTML>
    <BODY>
    <?
    echo "<FORM ACTION='setup.php' METHOD='GET'>";
    echo "<input name='tank'>Tankfüllung <br>";
    echo "<input name='runden'>Runden <br>";
    echo "<select name ='reifen'>";
    echo "<option value='a' selected> Weiche Reifen";
    echo "<option value='b'> Harte Reifen";
    echo "<option value='c'> Intermediate";
    echo "<option value='d'> Regenreifen";
    echo "</select><br>";
    echo "<input type ='submit' value='Testen'><br>";
    echo "<input type ='reset'>";
    ?>
    </BODY>
    </HTML>
    0 Mitglieder finden den Beitrag gut.
  6. #6
    User Pic
    scaRFhogg Mitglied
    Registriert seit
    02.06.2003
    Beiträge
    750
    Beitragswertungen
    0 Beitragspunkte
    Kommt drauf an welche Variablen du beschränken willst.

    Wenn du z.B. zwischen 10 und 200 Runden fahren lassen willst nimmst du:


    $runden = intval($_GET['runde']);

    $min_runden = 10;
    $max_runden = 200;

    if($runden > $max_runden)
    {
    $runden = $max_runden;
    }
    elseif($runden < $min_runden)
    {
    $runden = $min_runden;
    }

    wenn du jetzt noch mehr Variablen beschränken willst machst du das gleiche nochmal:

    $tank = intval($_GET['tank']);

    $min_tank = 30;
    $max_tank = 75;

    if($tank > $max_tank)
    {
    $tank = $max_tank;
    }
    elseif($tank < $min_tank)
    {
    $tank = $min_tank;
    }

    und so weiter.
    0 Mitglieder finden den Beitrag gut.
  7. #7
    User Pic
    Rudi Mitglied
    Registriert seit
    01.10.2004
    Beiträge
    25
    Beitragswertungen
    0 Beitragspunkte
    das bringt nichts, man kann immernoch die zahlen darunter ungestraft eingeben.

    <HTML>
    <BODY>
    <center>
    <?
    $tank = intval($_GET['tank']);
    
    $min_tank = 10;
    $max_tank = 150;
    
    if($tank > $max_tank)
    {
    $tank = $max_tank;
    }
    elseif($tank < $min_tank)
    {
    $tank = $min_tank;
    }
    $runden = intval($_GET['runden']);
    
    $min_runden = 1;
    $max_runden = 20;
    
    if($runden > $max_runden)
    {
    $runden = $max_runden;
    }
    elseif($runden < $min_runden)
    {
    $runden = $min_runden;
    }
    switch ($_GET['reifen']) {  // Ansonsten bitte das $_POST verwenden
    case 'a':
        $multi = 1.1;
        $art = 'weichen';
        break;
    case 'b':
        $multi = 1.12;
        $art = 'harten';
        break;
    case 'c':
        $multi = 1.3;
        $art = 'intermediate';
        break;
    default:
        $multi = 1.5;
        $art = 'regen';
    }
    
    $rdnzeit= $runden * $tank * $multi;
    $rdnzeit2 = $rdnzeit / 1000.;
    $rdnzeit = $rdnzeit2 + 1;
    ?>
    Durch die <?=$art;?> Reifen haben Sie einen Vorteil.<br>
    Deshalb ist ihre tatsächliche Zeit: <?=number_format($rdnzeit,2);?> 
    Minuten schnell
    </center>
    </BODY>
    </HTML>
    0 Mitglieder finden den Beitrag gut.
  8. #8
    User Pic
    scaRFhogg Mitglied
    Registriert seit
    02.06.2003
    Beiträge
    750
    Beitragswertungen
    0 Beitragspunkte
    Eingeben schon aber der Wird dann halt auch den min. Wert gesetzt.
    0 Mitglieder finden den Beitrag gut.
  9. #9
    User Pic
    Rudi Mitglied
    Registriert seit
    01.10.2004
    Beiträge
    25
    Beitragswertungen
    0 Beitragspunkte
    kann man das nicht einrichten, dass man da eine Fehlermeldung bekommt?
    0 Mitglieder finden den Beitrag gut.
  10. #10
    User Pic
    scaRFhogg Mitglied
    Registriert seit
    02.06.2003
    Beiträge
    750
    Beitragswertungen
    0 Beitragspunkte
    Anstatt den Wert auf min bzw max zu setzten machst du da einfach

    echo 'Fehler: ungültiger Wert. Bitte erneut eingeben!';

    und dann eben einen "Zurück" Link zu der Seite mit dem Form

    echo '<br> <a href="javascript:history.back()>Zur&uuml;ck</a>';
    0 Mitglieder finden den Beitrag gut.
Geschlossen

Zurück zu HTML, PHP, SQL,...

Optionen: Bei einer Antwort zu diesem Thema eine eMail erhalten