Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Gesammtkosten mit unterschiedlichen Startwerten

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [Erledigt] Gesammtkosten mit unterschiedlichen Startwerten

    edit: Schande über mich, habe vergessen dein Beitragstitel zuende zu schreiben: "Gesammtkosten mit unterschieldlichen Startwerten" sollte es eigentlich heißen. evtl. wäre ja ein Mod so freundlich


    Nunja Moin,

    ich bin ein absoluter php-Einsteiger und habe mir als ein "erstes" Ziel gesetzt einen Upgradekosten-rechner für ein MMo zu "schreiben".



    Auf der Startseite befindet sich Folgendes Formular:

    [spoiler]
    Code:
    !DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    
    
    Content
    
    
    <form METHOD="GET" ACTION="calculator.php">
    
    <table cellspacing=20 cellpadding=0 border=0 style="background-color: #eeeeee;" width=220>
    	<tr>
        	<td align=left><strong>Typ</strong>
    
            <br />
    <SELECT name="type">
    <option value="armor_war" >Ruestung Krieger</option>
    <option value="armor_mage" >Ruestung Magier</option>
    <option value="armor_hunter" > Jaeger </option>
    </SELECT>
    		</td>
        </tr>
        <tr>
        	<td align=left><strong>Level</strong><br />
    <SELECT name="rank">
    <option value="1" >1</option>
    <option value="2" >2</option>
    <option value="3" >3</option>
    </SELECT>
    
    <td align=left><strong>Aktuelles Upgradelevel:</strong><br />
    
    <SELECT name="start_level">
    <option value="1" >1</option>
    <option value="2" >2</option>
    <option value="3" >3</option>
    <option value="4" >4</option>
    <option value="5" >5</option>
    <option value="6" >6</option>
    <option value="7" >7</option>
    <option value="8" >8</option>
    <option value="9" >9</option>
    <option value="10" >10</option>
    </SELECT>
    		</td>
        </tr>
        <tr>
        	<td align=left><strong>Zielupgrade:</strong><br />
    <SELECT name="end_level">
    <option value="1" >1</option>
    <option value="2" >2</option>
    <option value="3" >3</option>
    <option value="4" >4</option>
    <option value="5" >5</option>
    <option value="6" >6</option>
    <option value="7" >7</option>
    <option value="8" >8</option>
    <option value="9" >9</option>
    <option value="10" >10</option>
    
    </SELECT>
    [/spoiler]

    Nun sollte es möglich sein für jeden Rüstungstyp ein Level auszüwählen und danach das aktuelle level und das Ziellevel.
    Dafür habe ich die Upgradekosten in Arrays gelegt:

    calculator.php sieht momentan so aus:

    PHP-Code:
    <?php
    $type 
    $_GET['type'];
    $rank $_GET["rank"];
    $start_level $_GET["start_level"];
    $end_level $_GET["end_level"];
    // Upgrade Kosten Warrior Armor Rank:
    if ($type == "armor_war")
    {
    if (
    $rank == "1")
    {
    $kosten = array(
                                   
    "1" => "0",
                                   
    "2" => "8400",
                    
    "3" => "11800",
                    
    "4" => "16500",
                    
    "5" => "23100",
                    
    "6" => "32300",
                    
    "7" => "45200",
                    
    "8" => "63300",
                    
    "9" => "88600",
                    
    "10" => "124100");

                    
    }
    elseif (
    $rank == "2")
    {
    $kosten = array(  "1" => "0",
                    
    "2" => "8400",
                    
    "3" => "11800",
                    
    "4" => "16500",
                    
    "5" => "23100",
                    
    "6" => "32300",
                    
    "7" => "45200",
                    
    "8" => "63300",
                    
    "9" => "88600",
                    
    "10" => "124100");

                    
    }
    elseif (
    $rank == "3")
    {                
    $kosten = array(  "1" => "0",
                    
    "2" => "8400",
                    
    "3" => "11800",
                    
    "4" => "16500",
                    
    "5" => "23100",
                    
    "6" => "32300",
                    
    "7" => "45200",
                    
    "8" => "63300",
                    
    "9" => "88600",
                    
    "10" => "124100");

                    
    }

    elseif (
    $rank == "4")
    {                
    $kosten = array(  "1" => "0",
                    
    "2" => "8400",
                    
    "3" => "11800",
                    
    "4" => "16500",
                    
    "5" => "23100",
                    
    "6" => "32300",
                    
    "7" => "45200",
                    
    "8" => "63300",
                    
    "9" => "88600",
                    
    "10" => "124100");

                    
    }
    elseif (
    $rank == "5")
    {                
    $kosten = array(  "1" => "0",
                    
    "2" => "8400",
                    
    "3" => "11800",
                    
    "4" => "16500",
                    
    "5" => "23100",
                    
    "6" => "32300",
                    
    "7" => "45200",
                    
    "8" => "63300",
                    
    "9" => "88600",
                    
    "10" => "124100");

                    
    }
    elseif (
    $rank == "6")
    {                
    $kosten = array(  "1" => "0",
                    
    "2" => "8400",
                    
    "3" => "11800",
                    
    "4" => "16500",
                    
    "5" => "23100",
                    
    "6" => "32300",
                    
    "7" => "45200",
                    
    "8" => "63300",
                    
    "9" => "88600",
                    
    "10" => "124100");

                    
    }



    }
    elseif (
    $type == "armor_mage")
    {
    $kosten = array(  "1" => "0",
                    
    "2" => "8400",
                    
    "3" => "11800",
                    
    "4" => "16500",
                    
    "5" => "23100",
                    
    "6" => "32300",
                    
    "7" => "45200",
                    
    "8" => "63300",
                    
    "9" => "88600",
                    
    "10" => "124100");

                    
    }
    elseif (
    $type == "armor_hunter")
    {
    $kosten = array(  "1" => "0",
                    
    "2" => "8400",
                    
    "3" => "11800",
                    
    "4" => "16500",
                    
    "5" => "23100",
                    
    "6" => "32300",
                    
    "7" => "45200",
                    
    "8" => "63300",
                    
    "9" => "88600",
                    
    "10" => "124100");

                    
    }

    usw...

    $startlevel $_GET["start_level"];
    $endlevel $_GET["end_level"];
    $eins 1;
    $endlevela $endlevel $eins;
    while(
    $endlevela $startlevel)
      {
        
    $gesammtkosten $kosten["$startlevel"] + $gesammtkosten;
        
    $startlevel++;
      } 
      
    ?>
    (Ich hab nicht alle Array kopiert, und noch nicht alle werte eingetragen)

    Nun mein Hauptsächliches Problem leigt an der while schleife da unten. Ich kann zwar wenn ich vin lv 1 auf lv 10 Upgraden will das richtige ergebniss erzielen, aber sobald z.B. das startlevel 2 ist wird das ergebniss falsch.
    z.B. von 9 auf 10 werden die Kosten für "auf 9" und "auf 10" addiert, anstelle, das nur die Kosten von 10 ausgegeben werden. Das Problem besteht nur, wenn "$startlevel" != 1 ist

    Verzeit wenn ich mit der while schleife total daneben lag. Ich bin wie gesagt ein totaler eisnteiger und dachte anfangs sowas könnte ich schon "realisieren".


    Ich hoffe ich komme mit dem Post nicht schlecht an und habe alles was ihr braucht um mir zu helfen angegeben.

    btw. ich will kein fertiges Script, sondern nur eine Hilfe, an welcher Stelle ich falsch lag und eine Idee wie ich den Fehler ausbügeln kann. Außerdem hoffe ich, das mein Fehler nicht nur an einem falsch gesetzen Buchstaben oder Zeichen lag und da diesen Post jetzt sinnlos macht.


    mfg Suralc
    Zitat von nikosch
    Naja, anscheinend spricht die Steckdose kein HTTP. LOL

  • #2
    Es scheint eigentlich nur ein Logikproblem zu sein:
    PHP-Code:
    $startlevel $_GET["start_level"];
    $endlevel $_GET["end_level"];
    $eins 1;
    $endlevela $endlevel $eins;
    while(
    $endlevela $startlevel)
      {
        
    $gesammtkosten $kosten["$startlevel"] + $gesammtkosten;
        
    $startlevel++;
      } 
    ändern in:
    PHP-Code:
    $startlevel $_GET["start_level"];
    $endlevel $_GET["end_level"];

    while(
    $endlevel $startlevel) {
      
    $startlevel++;
      
    $gesammtkosten $kosten[$startlevel] + $gesammtkosten;

    Ich hoffe, ich habe den Code richtig vestanden.

    Was willst du übrigens mit
    PHP-Code:
    $eins 1;
    $endlevela $endlevel $eins
    erreichen? Totaler Murks, wenn du mich fragst.

    Btw.
    $gesammtkosten
    Gesamt wird mit einem m geschrieben.
    [URL]http://hallophp.de[/URL]

    Kommentar


    • #3
      Vielen Dank, anscheinend Funktioniert jetzt alles

      Und den Rechtschreibfehler hab ich auch gleich mal berichtigt xD
      Zitat von nikosch
      Naja, anscheinend spricht die Steckdose kein HTTP. LOL

      Kommentar


      • #4
        Nur mal so als Tip, dein $kosten Array ist immer das gleiche, ich würde es daher einfach rausziehen. Damit sparst du dir ne Menge Schreib-, bzw. C&P- Arbeit.
        "My software never has bugs, it just develops random features."
        "Real programmers don't comment. If it was hard to write, it should be hard to understand!"

        Kommentar

        Lädt...
        X