JavaScript: id Wert aus Tabelle für 3 Minuten um 1 pro Sekunde erhöhen

  • Hallo !

    Ich bin ganz neu hier im Forum und sage gleich mal danke, hab schon in der Vergangenheit ein, zwei Sachen mit eurer Hilfe lösen können. Ich bin auch ganz neu im Programmieren (3 Wochen), hab mich bisher hauptsächlich mit HTML, CSS und jetzt auch mit JavaScript beschäftigt.

    Ich bin gerade dabei ein kleines Browsergame zu kreiiren, um meine Fähigkeiten zu erhöhen und zu trainieren - bin sehr auf learning by doing :)

    Aber jetzt zur Sache:

    ich komme hier leider nicht weiter.

    Ich habe im html "<button onclick="hilfsarbeiten()"> Hilfsarbeiten </button>" erstellt und möchte, dass beim klicken eine confirm Box öffnet, die bei Bestätigung einen den Tabellenwert mit id="s1" über 3 Minuten beeinflusst. (Die genauen Werte stehen schon als Textansprache in der Box). Ich bekomm es aber nicht hin. So schaut`s bisher aus:


    function hilfsarbeiten()

    {

    var Eingabe;

    Eingabe = window.confirm("Willst du am Bau mit Hilfsarbeiten Geld verdienen? \n pro Sekunde: \n +1€ \n +0,001 Einfluss \n +0,01 Können \n +0,1 Baumaterial ");

    if (Eingabe == true)

    {

    document.getElementById("s1").innerHTML=;

    } }


    zuerst habe ich mal den zeitfaktor weggelassen und wollte nur mal eine reine Addition durchführen, also document.getElementById("s1").innerHTML=s1+10;

    Aber auch das ist falsch.

    Bis jetzt bin ich mit meinem HTML, CSS und JavaScript Einsteigerbüchern + google gut durchgekommen, jetzt stehe ich aber schon ein paar Stunden bei diesem Problem und ich komm nicht drauf...

    Leider konnte ich auch in der Suche im Forum nichts passendes finden.

    Könntet Ihr mir weiterhelfen?


    Liebe Grüße :)

  • zuerst habe ich mal den zeitfaktor weggelassen und wollte nur mal eine reine Addition durchführen,

    Da gibt es viele möglickeiten zb

    Den rest solltest du dann hinbekommen. Falls nicht meld dich nochmal.


    Du hättest auch Theoretisch diese Zeile

    Code
    document.getElementById("s1").innerHTML=s1+10;

    auch das raus machen können

    Code
    document.getElementById("s1").innerHTML=parseInt(document.getElementById("s1").innerHTML)+10;

    doch dann finde ich das erste etwas übersichtlicher.

    Aber da denkt jeder anders drüber und jeder macht es anders.

    Falls noch antworten kommen werden die bestimmt auch andere Wege zeigen wie man es machen kann

  • ja danke vielmals!

    Auf das <div> wäre ich nicht gekommen,... Bei deiner Antwort hat es bei mir dann NaN ausgegeben, daher habe ich die Zahl in der Tabelle noch mit

    input-typ="number" name="value" geändert und damit das NaN weggebracht.


    <html>

    <tr>

    <td>Geld</td>

    <td><div id="s1" input-type= "number" name:"value">5000</div></td>

    </tr>

    <tr>


    <skript>

    function hilfsarbeiten(){

    var feld=document.getElementById("s1");

    var Eingabe;

    Eingabe = window.confirm("Willst du am Bau mit Hilfsarbeiten Geld verdienen? \n pro Sekunde: \n +1€ \n +0,001 Einfluss \n +0,01 Können \n +0,1 Baumaterial ");

    if (Eingabe == true){

    feld.innerHTML=parseInt(feld.innerHTML)+10;

    }

    }


    Jetzt schau ich noch wie das geht, das mein Geld um z.B.: +10 in 1 Minute ansteigt, also nicht gleich alles auf einmal, sondern eben über einen Zeitraum.

    Schätz mal das wird mit Schleifen funktionieren, da javaScript sofern ich weiß ja nicht über einen Zeitraum läuft, sondern immer wieder "kurz" sozusagen...

    Sollte ich es nicht zusammen bekommen, schreib ich nochmal, aber das schaut schon ganz gut aus...

    LG aus Wien


    danke nochmal für die rasche Antwort!

  • kuck dir mal bitte die Reihe an

    Code
    <td><div id="s1" input-type= "number" name:"value">5000</div></td>

    eigentlich dürfte das gar nicht gehen.Viele Brower überlesen solche Fehler ( für einige zumGlück ), abernicht jeder.

    Dann mit diner Schleife ist vieleicht nee möglichkeit, aber setInterval() könnte wahrscheinlich besser passen.

    Zb so


    Was soll den genau passieren ? Willst du einmal den Button drücken und der Zähler soll jede Sekunde 10 Punkte hochzählen ,oder wie hast du dir das gedacht ?


    Weiter solltest du dich auch fragen was passieren soll wenn der Besucher die Seite aktuliesiert ?

    Normalerweise wird Javascript ausgeführt und wenn du den Button klickst fängt er an zu Zählen. Aktualiesierst du die Seite fängt der Zähle wieder von Vorne an. Da solltest du dir überlegen ob der Wert gespeichert werden soll. Zb Cookies() oder LocalStorage()

  • Wie gesagt, hab vor 2 1/2 Wochen völlig frisch zum coden angefangen, das passieren sicher noch einige saudumme Sachen^^ Ist es so "richtig"?

    <tr>

    <td>Geld</td>

    <div><td id="s1" input-type= "number" name:"value">5000</td></div>

    </tr>

    <tr>


    Ja genau, ich hab mir vorgestellt, für 3 Minuten lang jede Sekunde den Wert um x erhöhen.

    Wie die Werte gespeichert werden hab ich mir noch gar nicht angeschaut, ist aber ein sehr interessantes Topic für mich.

    Tendiere dazu, den Spielfortschritt über Cookies abzuspeichern, hab aber noch keinen Plan wie ich das implementiere...


    Login und Registreierung habe ich mir schon erstellt, muss mir noch genauer anschauen, wie bzw wo ich die Logindaten ablege. Ich tendiere momentan zu einer Serverseitigen Lösung über nginx bzw MySql.

  • Ist es so "richtig"?

    <tr>

    <td>Geld</td>

    <div><td id="s1" input-type= "number" name:"value">5000</td></div>

    </tr>

    Eh ,nee. Hast du nicht gekuckt wie das bei mir wahr ?

    wenn du mit ein number input arbeiten willst dann so

    Code
    <input id="s1" type="number" value="5000">

    dann solltest du aber dran denken das mein Code mit den

    Code
    feld.innerHTML=parseInt(feld.innerHTML)+10;

    nicht mehr geht ,sondern so heißen müßte

    Code
    feld.value=parseInt(feld.innerHTML)+10;

    deine Daten Server seitig zu Speichern ist schon der richtige weg. Auf den Pc vom User bringt das ja auch nix weil die jeder selber zusammen fuschen kann.


    Wie weit kennst du dich den da aus mit Php und mysqli ?


    Registrierung hast du schon erstellt ? Läuft die den auch schon? Weil die Daten muss man ja auch irgendwie speichern . An besten in Datenbank

  • PHP und mysql bin ich ehrlich gesagt noch weniger eingelesen als bei JavaScript. Ich will mich auch erstmal auf JavaScript fokusieren und nur das nötigste in php lernen...

    Was ich bis jetzt gemacht hab: Datenbank bei myphpadmin mit den Feldern id, user, password, firstname und lastname angelegt.

    Ich hab mir dann einen Online Kurs angeschaut und die php dateien erstellt. (sind angehängt) Ich weiß nur leider nicht wie bzw wo ich den Button "Registrieren" verlinken soll, damit ich das überhaupt ausprobieren kann ob die Konfigurationen für mysql stimmen. Leider Ist das auch in meinem "PHP für Anfänger" nirgends beschrieben..


    Danke für die Hinweise oben, jetz hab ichs denk ich gecheckt.



    Freu mich auch schon auf morgen, da sollte mein JavaScript Handbuch kommen. Hab mir dieses bestellt: https://amzn.to/2WopFaL

    Kennst du das bzw was haltest du davon?

  • Ich weiß nur leider nicht wie bzw wo ich den Button "Registrieren" verlinken soll, damit ich das überhaupt ausprobieren kann ob die Konfigurationen für mysql stimmen. Leider Ist das auch in meinem "PHP für Anfänger" nirgends beschrieben..

    Wie meinst du den das?

    Du hast ein Formular wo du deine daten ( name , nachname, passwort ) eingeben tust .

    Durch den klick auf registrieren sollte ein php script die daten in der Datenbank schreiben.


    der Link wo das php Script ist gibt man da unter action="inc/signup-inc.php" an .Der Link steht da bei dir drinne.


    Du machst dann in den Ordner "inc" eine neue Datei auf mit den Namen "signup-inc.php" und da drinne kommt das Php Script rein was die registrierung abschließt.


    Du kannst das Script auch wo anders speichern, habe das jetzt nur von dir übernommen.


    Ob und wie weit deine Php Scripte den neusten Standart entsprechen können dir andere besser sagen. Ich kriege das zwar auch auch soweit hin , doch Perfekt noch lange nicht .


    Außerdem kann man auf den Bildern nicht alles erkennen( zumindest bei mir auf Laptop).

    Wäre in so ein Fall vieleicht besser das du den Code postest und vieleicht auch nur den Code wo du denkst das was falsch ist .


    deine index.png und login/inc.png scheinen wohl ok zu sein .

    Die db.png wohl auch , doch da ist wieder frage ob es sinnvoll ist die eine Zeile in extra Datei zu schreiben oder auch nicht.

    Das sind aber sachen die von den Php Profis besser beantwortet werden können.


    Die anderen Daten kann ich nicht richtig erkennen.

  • Leider funktioniert der Registrieren button nicht, es kommt immer "page not found"


    das ist die signup inc:


    <?php


    if (isset($_POST['submit'])) {



    include_once 'db.php';



    $firstname = mysqli_real_escape_string($connection, $_POST['firstname']);

    $lastname = mysqli_real_escape_string($connection, $_POST['lastname']);

    $user = mysqli_real_escape_string($connection, $_POST['user']);

    $password = mysqli_real_escape_string($connection, $_POST['password']);



    $hashPassword = password_hash($password,PASSWORD_DEFAULT);


    $sql = "INSERT INTO users (user, password, firstname, lastname) VALUES ('$user', '$hashPassword', '$firstname', '$lastname');";

    $result = mysqli_query($connection, $sql);


    header("Location: ../dashboard.php");

    exit();



    } else {


    header("Location: ../signup.php");

    exit();

    }

  • Ich bin mir gerade nicht sicher was du meinst ,ich würde es so versuchen.

    PHP
    <?php
    $db_serv = 'localhost:3306';
    $db_user = 'username';
    $db_pass = 'passwort';
    $db_name = 'cu-bartlstefan01_politikuserdaten';
    
    $connection = mysqli_connect($db_serv, $db_user, $db_pass,$db_name) or die("Keine Verbindung zum Datenbankserver möglich: ".mysqli_error());
    ?>

    in welcher Tabelle du gerade was machen willst gibst du im query an .Zb hier

    $sql = "INSERT INTO users (user, password, firstname, lastname) VALUES ('$user', '$hashPassword', '$firstname', '$lastname');";


    Wenn bei dein Registrierbutton "page not found" kommt , würde ich mal schätzen das der Link im action="" nicht mit den Dateinamen übereinstimmt.

    Da wo die Datei registrieren ist ,ist da noch ein Ordner mit den Namen "inc" ? Da drinne dann die Datei "signup-inc.php" mit der registrierungs php ?


    Ruf mal deine Datei im Browser auf und den Link packst du dann in den action="" rein.

    Notfalls gibt du mal hier die Links an dann können wir selber kucken.


    Falls das immer noch nicht geht kannst du auch falsche angaben in der .htaccess haben oder sonst was.

    Doch dazu kann ich nicht viel sagen..


    Zu deiner Frage ob das Buch Ok ist, kann ich dir nix zu sagen. Einige lernen aus Büchern, oder auch aus Video Cd's und andere wieder nutzen die ganzen Tutorials im Internet.

    Wenn das Buch auf den Aktuellen Stand ist kann es ja auch nicht verkehrt sein.

    Wenn ich mal was nachschlagen muß nutze ich das WEB. Einmal in Googel mein problem eintippen und meißtens kriegt man auch antwort.

    Was man nicht findet und nicht weiter kommt gibt es ja Foren wo man fast immer antwort bekommt.


    Falls das Buch dir hilft werden wir ja sehen wie gut du bist wenn du es durchgelesen hast :)

  • Ah ja, das mit dem Registrierungsbutton habe ich tatsächlich so lösen können. Die Datei war ja schon im inc Ordner und im Inc Ordner noch einen inc Ordner machen, ergibt ja keinen sinn^^


    Funktionieren tut es trotzdem noch nicht.

    Mit


    <?php

    $connection = mysqli_connect('localhost:3306', 'cu-ba_admin', '...', 'cu-bartlstefan01_politikuserdaten');


    zeigt es mir nach dem Klick "file not found" an.
    mit dem Vorschlag von dir:


    PHP
    <?php
    $db_serv = 'localhost:3306';
    $db_user = 'cu-ba_admin';
    $db_pass = '...';
    $db_name = 'cu-bartlstefan01_politikuserdaten';
    $connection = mysqli_connect($db_serv, $db_user, $db_pass,$db_name) or die("Keine Verbindung zum Datenbankserver möglich: ".mysqli_error());
    ?>


    zeigt es mir "Verbindung zu Datenbank nicht möglich" an.


    In der signup-inc habe ich die Datenbank users ausgewähöt. versteh das nicht,....



    Ich hab auch nochmal einen Screenshot von phpomyadmin angehängt.


    Welchen Link würdest du brauchen ?

    Einmal editiert, zuletzt von Stef () aus folgendem Grund: Code Tags hinzugefügt

  • Ich kann dir nicht wirklich weiter helfen weil php und mysqli ist nicht mein Hauptfach

    Ich kann dir nur sagen das es so bei mir geht

    und in der db.php

    PHP
    <?php
    $db_serv = 'localhost';
    $db_user = 'sebastian1012-ist-auch-doof';
    $db_pass = 'basti-ist-doof';
    $db_name = 'sebastian1012';
    $connection = mysqli_connect($db_serv, $db_user, $db_pass,$db_name) or die("Keine Verbindung zum Datenbankserver möglich: ".mysqli_error());
    ?>


    Deine login Daten von der Datenbank solltest du an besten kennen.

    Notfalls kuck bei dein Provider im Admin Pannel da wird man das meistens noch finden .

    aber localhost oder server von provider sollte man im Admin Pannel finden

    username sollte man wie datenbank name auch bei php admin finden. Ich kann nix auf der Bildern erkennen weil zu klein bei mir.


    Da du ja sagst

    kann man ja schon etwas rauslesen.

    Bei dir zeigt er not found an , also schlecht .

    bei mir verbindung nicht möglich. Das heißt ja das deine Daten wahrscheinlich falsch sind.


    An besten testest du du erstmal die db.php bis du deine Daten raus gefunden hast .Irgendwann sollteda gar nix mehr stehen und dann sollte zumindest die Zugangsadaten stimmen.


    Doch ich muss mir hier raus melden. Php und mysqli ist nicht mein Fach und will nix falsches sagen. Deswegen sehe zu das du deine Zugangsadaten zurecht kriegst dann wird dir wer anders weiter helfen

  • Hey,


    SteViePi : Bitte diesen Code nicht so verwenden. Es ist eine SQL-Injection Lücke vorhanden mit denen Angreifer sehr leicht an deine MYSQL-Daten kommen können.


    Benutze bitte Prepared Statements.


    Grüße,

    Stef

  • Zwischen Frage.

    soll

    Code
     $hund = mysqli_real_escape_string($connection, $_POST['hund']);
     $sql = "INSERT INTO bla (hund) VALUES ('$hund');";
    usw...

    Nicht sql injection verhindern ?

    Aber Prepared Statements nutzen ist noch besser , da stimme ich zu.

  • Hey !


    Den Login hab ich gelöst. Wie von dir vermutet ein Datenproblem meinerseits.

    Code
    $db_user = 'cu-ba_admin';
    richtig ist
    $db_user = 'cu-ba_padmin';

    Ich muss mir echt angewöhnen viel genauer zu werden...

  • das ist ja schon mal ein anfang das du deine richtigen login Daten in der db conection hast .

    Wenn das schon mal stimmt ist ja schön , bist du den schon weiter gekommen mit dein Script?

    Funktioniert dein Code aus dein post 12# den ?

    Falls ja , dann klär das hier mit den Php Profis ab was du ändern mußt.

    Weil mein Code aus post 15# hatte ja sql injection ( ich weiß leider noch nicht warum ).

    Da der Code ja fast gleich mit mein ist, klär das bitte dann vorher ab ob du den Code dann so nehmen kannst und was du dann ändern musst

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!