• Hallo,

    Ich bin ein anfänger in HTML und PHP, kann aber generell gut mit Codes umgehn,
    ich wollte einen Rechner nachbauen der wie folgt aussieht:

    http://www.karl-ess.com/maximalkraft-rechner/

    Nur leider komme ich total durcheinander mit dem aufbau, da für die berechnung folgende formel berücksichtigt werden soll:

    Maximalkraft=
    Trainingsgewicht x 100 / % bei der ausgeführten Wiederholungszahl


    die Wiederholungszahlen setzen sich wie folgt zusammen:

    [TABLE='width: 500']

    [tr]


    [TD='class: tf']Wiederholungen[/TD]
    [TD='class: tf, align: center']1[/TD]
    [TD='class: tf, align: center']2[/TD]
    [TD='class: tf, align: center']3-4[/TD]
    [TD='class: tf, align: center']5-6[/TD]
    [TD='class: tf, align: center']7-8[/TD]
    [TD='class: tf, align: center']9-10[/TD]
    [TD='class: tf, align: center']11-13[/TD]
    [TD='class: tf, align: center']14-16[/TD]
    [TD='class: tf, align: center']17-20[/TD]

    [/tr][tr]


    [TD='class: tf']Leistung in %[/TD]
    [TD='class: tf, align: center']100[/TD]
    [TD='class: tf, align: center']95[/TD]
    [TD='class: tf, align: center']90[/TD]
    [TD='class: tf, align: center']85[/TD]
    [TD='class: tf, align: center']80[/TD]
    [TD='class: tf, align: center']75[/TD]
    [TD='class: tf, align: center']70[/TD]
    [TD='class: tf, align: center']65[/TD]
    [TD='class: tf, align: center']60[/TD]

    [/tr]


    [/TABLE]


    kann mir da jmd helfen und das iwie zusammen setzen in eine datei?

    Vielen dank

    LG

    • Offizieller Beitrag

    Hallo,

    Die Abhängigkeiten der Wiederholungen zu den Leistungen in % musst Du natürlich irgendwo vorhalten.
    Eine Möglichkeit wäre ein Array, in etwa so:


    Um jetzt rechnen zu können benötigst Du ja die Angaben des Trainingsgewichtes und der Wiederholungen, wenn ich Dich richtig verstanden habe:

    PHP
    $fWeight = 12.5;
    $fLoops = 4;


    Jetzt musst Du erstmal ermitteln, welche Leistung in % den Weiderholungen entspricht.
    Dazu könntest Du alle Elemente aus $aPowerRange ermitteln, deren Key im Bereich der Wiederholungen liegen:


    Jetzt kannst Du unter Bezugnahme auf das letzte Element von $aRanges bequem die Formel anwenden:

    PHP
    $fMaxPower = ($fWeight * 100 / (float)end($aRanges));
    var_dump( $fMaxPower );

    Geht sicher eleganter, aber ist das erste, was mir eingefallen ist...

    Gruß Arne

  • Danke für die Code Schnipsel.

    Wie füge ich denn die $fWeight und $fLoops richtig ein, in dem Bsp Code haben die einen festen wert aber der soll ja variabel durch ein Dropdownfeld im Html Code übergeben werden...

    Ich bin z.Zt. so weit (habs nur mal schnell zusammen geschmissen:)) :

    Was fehlt ist noch ein textfeld in dem dann das Ergebnis rein kommt nach klick auf berechnen und die formel zur berechnung der anderen % werde wie auf der Bsp, seite, damit man direkt weiss "aha von meinem Maximal gewicht sind 35% XX Kg ..."

    Und der Button Berechnen soll das ja dann auswerten wie ich den einbinde bin uich nit auch grad unschlüssig...

    • Offizieller Beitrag

    Hallo,

    $aPowerRange kannst Du dann ablösen durch Dein zweites Dropdown wdh.
    Da musst Du allerdings dann in den Option-Values die jeweilige Leistung in % reinschreiben.
    Zugriff hast Du dann über POST:

    PHP
    $fMaxPower = ($fWeight * 100 / (float)$_POST['wdh']);


    Damit sparst Du Dir dann auch den array_filter- & Co. Aufwand.

    Gruß Arne

  • Ich habe nun was zusammen gebaut, aber es sind noch fehler drin

    hier der code:

    Wenn ich nun die php datei aufrufe hab ich folgende probleme wenn ein wert errechnet wird:

    1. Die angaben sind mehrstellig nach dem komma des ergebnisses, wie kann ich das auf eine stelle nach dem komma reduzieren?
    2. ich habe die ranges noch mal eingebaut aber umgekehrt so das bei "Deine Werte" die Wiederholungsanzahl ausgegeben werden soll, dort erscheint aber nur "float(X)" (X steht für eine Zahl)
    Im Prinzip soll bei Deine Werte bei Wiederholungen der % Wert zurück gewandelt werden in den Wert den man oben ausgewählt hat.

    • Offizieller Beitrag

    Oha... Da ist einiges im Argen, sorry.

    Dein SELECT-Bandwurm mit dem Gewicht kannst Du schonmal als Beispiel so kürzen:

    Das ersetzt die kompletten 300 Options per Hand!

    Zitat von paine_one

    ich habe die ranges noch mal eingebaut aber umgekehrt so das bei "Deine Werte" die Wiederholungsanzahl ausgegeben werden soll, dort erscheint aber nur "float(X)" (X steht für eine Zahl)
    Im Prinzip soll bei Deine Werte bei Wiederholungen der % Wert zurück gewandelt werden in den Wert den man oben ausgewählt hat.


    Am einfachsten ist, Du übergibst das direkt im Value mit und trennst das PHP seitig voneinander:

    PHP
    list( $fLoopRange, $sLoops ) = explode( ';', $_POST['wdh'] );
    Zitat von paine_one

    dort erscheint aber nur "float(X)" (X steht für eine Zahl)

    Das zeigt so ein wenig, dass Du so gar nicht weisst, was Du tust, kann das sein?
    Nimm halt echo anstatt dem var_dump()!

    Zitat von paine_one

    Die angaben sind mehrstellig nach dem komma des ergebnisses, wie kann ich das auf eine stelle nach dem komma reduzieren?

    Mit round() rundet man Fliesskommazahlen und mit number_format() kann man dafür sorgen, dass auch wirklich alle die gleichen Nachkommastellen haben:

    PHP
    $fMaxPower = number_format(round(($gew * 100 / $fmp), 2), 2);

    Deine (1RM)-Tabelle - was auch immer das ist - kannst Du übrigens mit einem Loop auch deutlich kürzen:

    Einigermassen gekürzt sieht Dein Code zum Vergleich dann so aus:


    Es gibt aber zudem noch so einiges, was Du verbessern solltest:

    • Trenne die Verarbeitung von der Ausgabe und lerne das EVA-Prinzip!
    • <font>-Tags sind deprecated, das geht alles über CSS viel komfortabler
    • Nutze keine geschützten Leerzeichen zum Positionieren, auch das geht mit CSS deutlich besser.
    • PHP_SELF solltest Du nicht verwenden, lass stattdessen das action-Attribut einfach leer!
    • u.v.m.

    Gruß Arne

  • Danke für die Hilfe, ich werde mir das EVA mal anschauen, ich hab sonst immer alles direkt da hin geschrieben wo es gebraucht wird, war für mich immer einfacher dann direkt was zu finden und co. Bin in php noch nicht so fit, aber das kommt noch, danke für deine schnelle und kompetente Hilfe

    • Offizieller Beitrag

    Hallo,

    Zitat von paine_one

    ich hab sonst immer alles direkt da hin geschrieben wo es gebraucht wird, war für mich immer einfacher dann direkt was zu finden und co.

    Du findest Dich bei Einhaltung des EVA-Prinzips besser zurecht, als vorher ;)

    Nur mal als Beispiel, Dein Rechner in die grobe Richtung EVA gewandelt:

    1. Die reine HTML-Ansicht, die nur noch aus HTML und Platzhaltern für die Werte aus PHP besteht ( content.html ):

    2. Die Verarbeitungsdatei, in der die Berechnungen durchgeführt und einige HTML-Elemente vorbereitet werden:


    Das ist grob angeschnitten das EVA-Prinzip. Ich habe mir hier nicht die Mühe gemacht, alles anzupassen, sondern wollte Dir nur kurz zeigen, wie Du es Dir einfacher machen kannst, wenn Du bestimmte Dinge beachtest.
    Ich denke, auch wenn Du in PHP am Anfang stehst, sollte Dir der Vorteil klar werden.

    Gruß Arne