mediengestalter.info
FAQ :: Mitgliederliste :: MGi Team

Willkommen auf dem Portal für Mediengestalter

Aktuelles Datum und Uhrzeit: Fr 19.04.2024 16:03 Benutzername: Passwort: Auto-Login

Thema: Rechnen mit PHP (Java? MySql?) vom 08.01.2016


Neues Thema eröffnen   Neue Antwort erstellen MGi Foren-Übersicht -> Programmierung -> Rechnen mit PHP (Java? MySql?)
Seite: 1, 2  Weiter
Autor Nachricht
MRIXquadrat
Threadersteller

Dabei seit: 09.07.2015
Ort: Melle
Alter: 37
Geschlecht: Männlich
Verfasst Fr 08.01.2016 22:26
Titel

Rechnen mit PHP (Java? MySql?)

Antworten mit Zitat Zum Seitenanfang

Hallo liebes Forum,

Für ein Projekt muss nachfolgendes Umgesetzt werden und ich habe noch keinen blassen Schimmer wie...

Aufgabe:
Über ein Onlineformular gehostet auf einen Webserver soll eine Art Live-Rechner umgesetzt werden.

Ich habe ein Formularfeld A1 - dort wird eine Zahl eingetragen und wird mit der Entertaste bestätigt.
In diesem Moment soll der Cursor in das Feld A2 springen. Gebe ich dort eine weitere Zahl ein und bestätige diese mit Enter soll der Cursor in das Feld A3 springen.
Zeitgleich soll unten eine Ausgabe stattfinden wo A1 und A2 automatisch zusammengerechnet wird.
Dann soll der Durchschnitt berechnet werden.

Beispiel:

A1 = 15 (enter)
A2 = 30 (enter)
A3 = 15 (enter)
A4 =
A5 =

Ausgabe = 60
Durchschnitt = 20

Diese Liste soll sich nach jeder neuen Eingabe automatisch aktualisieren.


Kann jemand einen Denkanstoß geben?
Geht das nur mit PHP oder muss JavaScript dazu? brauche ich für das Vorhaben eine MySqL Datenbank? Nach welchen Suchbegriffen kann ich suchen?


Die Dateie(n) werden anschließend in ein Twitter Bootstrap System implementiert. Erfolg vorausgesetzt Lächel

Vielen Dank für eure Hilfe.
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
remote

Dabei seit: 10.11.2006
Ort: /var/www/
Alter: 110
Geschlecht: Männlich
Verfasst Fr 08.01.2016 23:54
Titel

Antworten mit Zitat Zum Seitenanfang

Zitat:
ich habe noch keinen blassen Schimmer wie


dann trenne die aufgabe doch mal in kleine teilschritte auf.

1. bau ein formular mit deinen 5 inputs fuer die eingabe und je einem summe und den durchschnitt
2. sorge dafuer, dass felder 4-5 anfangs nicht sichtbar sind (css display property)
3. sorge dafuer dass die ergebnisfelder nicht manuell editiert werden koennen (disabled attribute)
4. recherchiere wie du mit javascript auf key events reagieren (keyup enter) und den standard event verhindern kannst der das formular abschicken wuerde (prevent default)

wenn das klappt hast du schon einmal die erste haelfte fertig Lächel
wenns unterwegs probleme gibt, am besten deinen letzten stand hier rein packen (codepen) und zeigen.

fuer die aufgabe sind php und mysql uebrigens nicht erforderlich - ich wuerde dir empfehlen erstmal bei html/css und javascript zu bleiben.
  View user's profile Private Nachricht senden
Anzeige
Anzeige
MRIXquadrat
Threadersteller

Dabei seit: 09.07.2015
Ort: Melle
Alter: 37
Geschlecht: Männlich
Verfasst Sa 09.01.2016 00:47
Titel

Antworten mit Zitat Zum Seitenanfang

hallo remote, vielen dank für deine Antowort, das hilft schonmal weiter.
Nach Rücksprache muss es über eine Datenbank laufen, weil die Ergebnisse gespeichert werden sollen um anschließend weitere Funktionen hinzuzufügen.

Danke für den js Hinweis, davon habe ich nämlich 0 Ahnung. Aber das Schlagwort eird schonmal weiterhelfen.
Sobald ich Code habe werde ich diesen posten.

Weitere vorab Ideen? Hinweise?
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
remote

Dabei seit: 10.11.2006
Ort: /var/www/
Alter: 110
Geschlecht: Männlich
Verfasst Sa 09.01.2016 01:36
Titel

Antworten mit Zitat Zum Seitenanfang

MRIXquadrat hat geschrieben:
... um anschließend weitere Funktionen hinzuzufügen.


schau vielleicht trotzdem wie du diesen simplen rechner ohne datenbank / serverseitigen teil realisieren kannst.
speichern und durch die weltgeschichte schicken kannst du die werte spaeter immer noch (wenn es dafuer eine sinnvolle anforderung gibt), aber zwei zahlen fuer ein bisschen grundschularithmetik an den server zu schicken und in einer db zu persistieren, ist reichlich banane.

frohes basteln Lächel
  View user's profile Private Nachricht senden
MRIXquadrat
Threadersteller

Dabei seit: 09.07.2015
Ort: Melle
Alter: 37
Geschlecht: Männlich
Verfasst Sa 09.01.2016 14:25
Titel

Antworten mit Zitat Zum Seitenanfang

So ich habe ein stück code fertig.
dazu folgende Fragen:

- Kann ich das Ergebnis auch ohne Input als reine Zahl ausgeben lassen?
- ich brauche noch einen temporären Durchschnittswert/Spalte. Also Bei Zwei Eintragungen pro Spalte X/2 anzeigen, bei 3 Eintragungen pro Spalte X/3, ..., bei 15 Eintragungen/Spalte X/15
-----
- wenn das obere fertiggestellt ist brauche ich einen fixen Durchschnitt. Datenbankanbindung an eine MySQl Datenbank. Durchschnitt für alle Eingaben die in Spalte 1 eingetragen worden sind. Die einzelnen Werte sind uninteressant. Es interessiert nur der gesamte Durchschnitt aller Eingaben/Anzahl der Eingaben in Spalte1 bzw Spalte 2.
-----
Ich kenne mich mit JS leider nicht gut aus, habe aber das Gefühl, wenn ich 20 oder 30 Zeilen brauche, das das vom Code her auch einfacher gehen muss? Wäre zur Not aber völlig unwichtig.

Code:

<html>
<head>
</head>
<body>
<script type="text/javascript"><!--
        function spalte1() {
            v101 = Number(document.getElementById("wert101").value);
            v102 = Number(document.getElementById("wert102").value);
            v103 = Number(document.getElementById("wert103").value);
            if (v101) document.getElementById("ergebnis100").value = 1000 - v101;
            if (v101 && v102) document.getElementById("ergebnis100").value = 1000 - v101 - v102;
            if (v101 && v102 && v103) document.getElementById("ergebnis100").value = 1000 - v101 - v102 - v103;
        }
        function spalte2() {
            v201 = Number(document.getElementById("wert201").value);
            v202 = Number(document.getElementById("wert202").value);
            v203 = Number(document.getElementById("wert203").value);
            if (v201) document.getElementById("ergebnis200").value = 1000 - v201;
            if (v201 && v202) document.getElementById("ergebnis200").value = 1000 - v201 - v202;
            if (v201 && v202 && v203) document.getElementById("ergebnis200").value = 1000 - v201 - v202 - v203;
        }
   //--></script>
    </head>
    <body>
    <form>
        <table>
            <tr>
                <td><h2>SPALTE 1</h2></td>
                <td><h2>SPALTE 2</h2></td>
            </tr>
            <tr>
                <td>Wert 1: <input type="text" id="wert101" size="8" onkeyup="spalte1()" /></td>
                <td>Wert 1: <input type="text" id="wert201" size="8" onkeyup="spalte2()" /></td>
            </tr>
            <tr>
                <td>Wert 2: <input type="text" id="wert102" size="8" onkeyup="spalte1()" /></td>
                <td>Wert 2: <input type="text" id="wert202" size="8" onkeyup="spalte2()" /></td>
            </tr>
            <tr>
                <td>Wert 3: <input type="text" id="wert103" size="8" onkeyup="spalte1()" /></td>
                <td>Wert 3: <input type="text" id="wert203" size="8" onkeyup="spalte2()" /></td>
            </tr>
            <tr>
                <td>Ergebnis: <input type="text" id="ergebnis100" readonly="readonly" size="8" /></td>
                <td>Ergebnis: <input type="text" id="ergebnis200" readonly="readonly" size="8" /></td>
            </tr>
        </table>
    </form>
</body>
</html>
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
remote

Dabei seit: 10.11.2006
Ort: /var/www/
Alter: 110
Geschlecht: Männlich
Verfasst Sa 09.01.2016 21:13
Titel

Antworten mit Zitat Zum Seitenanfang

urspruenglich sah es so aus, als haettest du eine fixe anzahl von 5 werten.
wenn diese dynamisch sein soll, muss man das natuerlich ein bisschen anders angehen.

schau dir mal das beispiel hier an: http://codepen.io/anon/pen/wMdQyx

in dem beispiel habe ich jQuery verwendet, weil es das arbeiten mit dem DOM / HTML etwas vereinfacht. das script musst du also noch vor dem code einbinden.
das beispiel muesste alle ansaetze enthalten, die du brauchst um mit dem rechnen anzufangen. sollte dem nicht so sein, guck dir den beispielcode genau an und google die teile, die du nicht verstehst und wenn das nicht hilft -> forum.

Code:

var $form = $('#calcForm'); // das formular auf dem wir arbeiten
var inputTpl = '<input type="number" class="form-control" />'; // muster fuer die zu generierenden formularzeilen

// event listener fuer ENTER (13) und ESC (27)
$(document).on('keydown', $form, function onKeyEvent(e) {
  if (e.keyCode == 27) {
    $form.html('');
  }
  if (e.keyCode == 13 || e.keyCode == 27) {
    e.preventDefault();
    updateForm();
    return false;
  }
});


// update form beim ersten laden aufrufen
updateForm();


function updateForm() {
  // wir schreiben die werte aller input elemente in eine liste (var values)
  // beim ersten aufruf bleibt die liste leer, weil noch kein input existiert
  var values = [];
  $form.find('input').each(
    function processInputs(input) {
      values.push($(this).val());
    }
  );

  // wir erstellen jetzt einen html container in dem wir
  // den neuen formularinhalt vorab zusammenstricken und dann zum schluss
  // mit einer einzigen update ins DOM legen - dann braucht der browser nicht
  // fuer jeden zwischenschritt ein "update malen"
  var $formContent = $('<div />');

  // mit dem for loop legen wir immer ein element mehr an als wir values
  // in unserer liste haben (<=) - beim ersten aufruf hat die liste 0 werte,
  // also kriegen wir 1 input zum loslegen
  for (var i = 0; i <= values.length; i++) {
    // value = listenwert an position i, ODER '' wenn es den eintrag (noch) nicht gibt
    var value = values[i] || '';
    // neues html element aus dem inputTpl generieren, id und value attribute setzen
    $input = $(inputTpl).attr('id', 'input-' + i).attr('value', value);
    if (i < values.length) {
      $input.attr('disabled', 'disabled');
    }
    $formContent.append($input, '<br>'); // input in den html container legen
    // und loop wiederholen bis die anzahl der values + 1 erstellt wurde
  }
 
  $form.html($formContent); // jetzt legen wir die fertige input sammlung ins formular
  $form.find('input').last().focus(); // und springen noch ins neue/letzte input feld
}
  View user's profile Private Nachricht senden
hadouken

Dabei seit: 07.11.2015
Ort: -
Alter: -
Geschlecht: -
Verfasst So 10.01.2016 23:13
Titel

Antworten mit Zitat Zum Seitenanfang

Ich würde einfach mal versuchen die Teilaufgaben nacheinander unabhängig von einander zu lösen…

function addition(numA, numB)

function addInput(htmlContainer)

function onEnter()

…und die am Ende zusammen zu bringen.
  View user's profile Private Nachricht senden
MRIXquadrat
Threadersteller

Dabei seit: 09.07.2015
Ort: Melle
Alter: 37
Geschlecht: Männlich
Verfasst Di 12.01.2016 13:34
Titel

Antworten mit Zitat Zum Seitenanfang

@remote:
das sieht sehr interessant aus! Das war grob in etwa meine Vorstellung. Allerdings komme ich nicht auf die Lösung wie ich diese Berechnungsart für mehrere Spalten übertrage.
Ich habe ja mehrere (2-5) Spalten (für jede Spalte 2,3,4,5 eine separate Datei) und die Berechnung soll ja wie folgt ablaufen.
Spalte 1 wird ein Wert eingetragen und das Ergebnis aus spalte 1 ausgerechnet, anschließend wird in Spalte 2 ein wert eingetragen und Ergebnis der spalte 2 ausgerechnet, dann gehts zurück in spalte 1.
siehe bisheriger Quellcode

@hadouken
Das funktioniert laut meinem ausprobieren nicht für mehrere Berechnungen über n-Spalten



Jetzt habe ich noch ein Problem.
Wenn ich in meiner Berechnung eine Null eintrage, dann funktioniert die Rechnung nicht mehr.

also:

1000
-10 = 990
-12 = 978
-18 = 960
- 0 = 960
-22 = 960
-31 = 960

Kann mir das einer erklären? Sobald ich eine Zahl über Null eingebe funktioniert alles einwandfrei. Aber Null ist ein Wert der auch eingetragen werden muss.
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
 
Ähnliche Themen HtML5 - CSS PHP und MySQL + Java Script in 10 Wochen ?
[PHP] und Bilder rechnen mit der GD
Rechnen auf der Webseite?
[PHP + mySQL] Kann Fehler in einer mySQL-Phrase nicht finden
[PHP/MySQL] MySQL Error: 1054, falsche Tabelle ausgewählt?
Bilder im Photoshop größer rechnen
Neues Thema eröffnen   Neue Antwort erstellen Seite: 1, 2  Weiter
MGi Foren-Übersicht -> Programmierung


Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst an Umfragen in diesem Forum nicht mitmachen.