Autor |
Nachricht |
MRIXquadrat
Threadersteller
Dabei seit: 09.07.2015
Ort: Melle
Alter: 37
Geschlecht:
|
Verfasst Fr 08.01.2016 22:26
Titel Rechnen mit PHP (Java? MySql?) |
|
|
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
Vielen Dank für eure Hilfe.
|
|
|
|
|
remote
Dabei seit: 10.11.2006
Ort: /var/www/
Alter: 110
Geschlecht:
|
Verfasst Fr 08.01.2016 23:54
Titel
|
|
|
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
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.
|
|
|
|
|
Anzeige
|
|
|
MRIXquadrat
Threadersteller
Dabei seit: 09.07.2015
Ort: Melle
Alter: 37
Geschlecht:
|
Verfasst Sa 09.01.2016 00:47
Titel
|
|
|
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?
|
|
|
|
|
remote
Dabei seit: 10.11.2006
Ort: /var/www/
Alter: 110
Geschlecht:
|
Verfasst Sa 09.01.2016 01:36
Titel
|
|
|
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
|
|
|
|
|
MRIXquadrat
Threadersteller
Dabei seit: 09.07.2015
Ort: Melle
Alter: 37
Geschlecht:
|
Verfasst Sa 09.01.2016 14:25
Titel
|
|
|
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>
|
|
|
|
|
|
remote
Dabei seit: 10.11.2006
Ort: /var/www/
Alter: 110
Geschlecht:
|
Verfasst Sa 09.01.2016 21:13
Titel
|
|
|
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
} |
|
|
|
|
|
hadouken
Dabei seit: 07.11.2015
Ort: -
Alter: -
Geschlecht: -
|
Verfasst So 10.01.2016 23:13
Titel
|
|
|
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.
|
|
|
|
|
MRIXquadrat
Threadersteller
Dabei seit: 09.07.2015
Ort: Melle
Alter: 37
Geschlecht:
|
Verfasst Di 12.01.2016 13:34
Titel
|
|
|
@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.
|
|
|
|
|
|
|
|
Ä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
|
|