Ankündigung

Einklappen
Keine Ankündigung bisher.

Frage zur Konsole Forebog/Chrome und <div> Container

Einklappen

Neue Werbung 2019

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

  • Frage zur Konsole Forebog/Chrome und <div> Container

    Hallo,

    sorry erstmal wenn ich den Titel nicht anders beschreiben konnte.

    Ich habe hier Regsiterkarten <ul><li> usw.

    Alles was später in den <li> auftaucht wird durch <div id="blabla-1"> usw.
    mit Ajax nachgeladen.
    Dabei erhält jede Registerkarte eine eigene ID.

    Das klappt auch ganz gut.

    In Jeder Registerkarte wird bei klick ein Formular geladen.

    Die Formular-Felder bzw. deren ID's bei den <input> sind in jeder Registerkarte gleich.

    Wenn ich nun in einer Registerkarte das Formular erhalte und ohne es auszufüllen nun auf die nächste Registerkarte klicke dann sehe ich in unter Firebug in HTML das die erste Registerkarte auch noch einen Code enthält .
    Dieser ist ausgegraut, also wohl inaktiv.

    In der zweiten aktuellen Regsiterkarte sehe ich auch mein Formular jedoch aktiv.

    Jetzt greife ich mit javascript auf die input-felder zu und da bekomme ich Probleme.

    Ist es so, dass wenn ich mit Ajax entsprechend nur was nachlade, dass sich dann auch die Input-Felder (selbst wenn die Seite (Registerkarte) inaktiv ist, stets von den anderen input-feldern und deren ID unterscheiden müssen?

    Grüße Jürgen

  • #2
    Reden wir hier von HTML-ID's oder von Namen von Formularelementen?
    Erstere müssen eindeutig sein, letztere müssen nur innerhalb des aktuellen Formulares eindeutig sein. (Außnahme Arrays)
    [URL="http://php.net/manual/en/migration55.deprecated.php"]mysql ist veraltet[/URL] [URL="http://php-de.github.io/jumpto/mail-class/"]Mails senden: Ohne Probleme und ohne mail()[/URL]
    [PHP]echo 'PS: <b>Meine Antwort ist keine Lösung, sondern nur eine Hilfe zur Lösung.</b>';[/PHP]

    Kommentar


    • #3
      Hallo,

      ich weiss jetzt nicht genau wie ich es beschreiben soll

      ich versuch es mal

      ich habe verschiedene <div> container mit darin enthaltenen Formularen (in abgekürzter Form)

      Code:
      <div id="tab-1"> // container 1
      <form name="eindeutig-2">
      	<div id="untercontainer-1">
      // hier kommen die Formulareingabefelder 
      		<input name="test-1"><input name="test-2"> //usw.
      		<div id="austauschzeile-1"> // diese zeile enthält Buttons ud wird stets ausgetauscht um weitere Zeilen und am Ende wieder einen Button hinzufügen
      		<button name="absenden" > //der Button übergibt via onclick bestimmte id's damit dann entscheiden werden kann wo neue Zeilen einzufügen sind
      
      	</div> //austauschzeile geschlossen
      </form>
      </div>// schliessen des containers 1
      
      // hier der Code der ausgegeben wird wenn auf die zweite Registerkarte geklickt wird
      
      <div id="tab-2"> // container 1
      <form name="eindeutig-2">
      	<div id="untercontainer-1">
      // hier kommen die Formulareingabefelder 
      		<input name="a-1"><input name="b-1"> //usw.
      		<div id="austauschzeile-1"> // diese zeile enthält Buttons ud wird stets ausgetauscht um weitere Zeilen und am Ende wieder einen Button hinzufügen
      		<button name="absenden" > //der Button übergibt via onclick bestimmte id's damit dann entscheiden werden kann wo neue Zeilen einzufügen sind
      
      	</div> //austauschzeile geschlossen
      </form>
      </div>// schliessen des containers 1
      Es ist also so, ich verwende zwar verscheide name-id's für die <form> aber in dem Formular sind die Input-Felder gleich bezeichnet
      NUR innerhalb des Formulars wenn weiter Zeilen hinzugefügt werden, ändert sich auch die Zahl des input-Feldes so erhält dann die zweite Zeile
      name="a-2" und name="b-2"

      diese Namen werden jedoch auch in allen anderen Formularen verwendet.
      Ich dachte ich könnte das so machen aber das geht wohl nicht da wenn ich via Javascript auf die einzelnen Input-Felder und deren namen zugreife immer nur deren Namen verwende. ich greife also nicht auf das Formular und deren Elemente zu

      Das wusste ich nicht wie das geht.

      Grüße Jürgen

      Kommentar


      • #4
        Hallöchen,

        Zitat von selfmade01 Beitrag anzeigen
        name="a-2" und name="b-2"
        Dafür gibt es auch in HTML eine Array-Notation:

        PHP-Code:
        <input type='text' name='value[]'
        Dann kannst du dir das Nummerieren der Eingabefelder sparen.

        Viele Grüße,
        lotti
        [SIZE="1"]Atwood's Law: any application that can be written in JavaScript, will eventually be written in JavaScript.[/SIZE]

        Kommentar


        • #5
          Hallo,
          tja,,, wenn man es weiss. Bzw. hätte ich mir das fast denken können.
          Danke für den Tipp..

          aber als Info:

          Es hatte tatsächlich an den eindeutigen bzw. nicht eindeutigen ID's gelegen.

          zuvor sahen die ID's alle so aus

          a1, b1, c1 usw
          wobei die Zahl nur für die Zeile stand, da ich ja zeilen durch Ajax nachlade.
          in der nächsten zeile stand dann
          a2, b2, c2, usw

          Da ich mit Registerkarten arbeite und die Formulare in jeder Registerkarte den gleichen Aufbau hat, nahm ich für alle Registerkarten das gleiche Template
          Den einzigen Unterschied in diesen Formularen den es gab war der <form> tag mit seiner eindeutigen ID

          Da ich später dann jedoch mit javascript bzw. jquery mir alle <input> auslese und deren id's hat er mir auch die ID's gelesen von den Formularen die ich zuvor schon in einer anderen Registerkarte geladen hatte, da diese ja noch im HTML-Quellcode vorhanden waren.

          Nun habe ich die ganzen For,mularfelder und alle ID's umgebastelt die nun so aussehen

          Für Zeile 1 in Registerkarte 1
          a-1-1, b-1-1, c-1-1
          für Zeile 2
          a-1-2, b-1-2, c-1-2

          und für Registerkarte 2 Zeile 1
          a-2-1, b-2-1, c-2-1
          usw

          Später wenn ich das Formular auswerte und auf die Felder zugreife nehme ich str.split("-");
          und vergleiche auf die Registerkarte und auf die Zeile.

          Das Problem ist nur.
          Wenn ich nun 6 Regsiterkarten zuvor ausgefüllt habe mit je 3,4 oder 8 Zeilen und mir dann alle input-felder auslese, glaube ich dass das Programm recht langsam werden kann da ja alle input-felder gelesen werden

          Ich nehme dazu jquery
          Code:
          $("input").each(function(){});
          am liebsten wäre es mir ich könnte dem each mitteilen welches Formular er zu durchsuchen hat, damit ich den nicht zu überlaste.

          Gibt es da eine Möglichkeit?

          Grüße Jürgen

          Ps. mir wurde ja schon jquery serialize() empfohlen, aber da habe ich leider keinen schimmer davon... und aus der Docu werde ich nicht so recht schlau

          Kommentar


          • #6
            Frage 1: Wieso lädst du die Formulare überhaupt per JavaScript?
            Frage 2: Warum so viele komplizierte IDs? Verwende doch einfach die ID der Registerkarte und greife von dort aus auf die Child-Elemente zu.

            Antwort zur Frage: Ja, da gibt es Möglichkeiten.

            PHP-Code:
            $("tab-1").find("input").each(function() {}); 

            Kommentar


            • #7
              Du brauchst defivitiv ein besseres System als das, was du gerade hast. Das mag vllt. irgendwann einmal funktionieren, ist aber für Außenstehende nicht zu verstehen und nach 2 Monate nicht mehr wartbar.

              PS: Nur der Vollständigkeit halber:

              PHP-Code:
              <div>
                  <
              form id="f1">
                      <
              input type="text" value="588"/>
                  </
              form>
                  <
              form id="f2">
                      <
              input type="text" value="588"/>
                  </
              form>
              </
              div
              PHP-Code:
              $("#f1 input").each(function(){
                  
              alert("hier");
              }
                                  );

              $(
              "input").each(function(){
                  
              alert("hier alle");
              }
                                  ); 
              Edit: Zu spät...
              [URL="http://php.net/manual/en/migration55.deprecated.php"]mysql ist veraltet[/URL] [URL="http://php-de.github.io/jumpto/mail-class/"]Mails senden: Ohne Probleme und ohne mail()[/URL]
              [PHP]echo 'PS: <b>Meine Antwort ist keine Lösung, sondern nur eine Hilfe zur Lösung.</b>';[/PHP]

              Kommentar


              • #8
                Zitat von Chris. Beitrag anzeigen
                Frage 1: Wieso lädst du die Formulare überhaupt per JavaScript?
                Frage 2: Warum so viele komplizierte IDs? Verwende doch einfach die ID der Registerkarte und greife von dort aus auf die Child-Elemente zu.

                Antwort zur Frage: Ja, da gibt es Möglichkeiten.

                PHP-Code:
                $("tab-1").find("input").each(function() {}); 
                genial. Danke
                dies ist natürlich viel besser.

                Ich greife also so nur auf den Eltern-Container zu um dann darin die ganzen Input's auszulesen.
                Das macht es für mich viel einfacher da ich mit dieser Methode nun auch direkt auf die Kind-Elemente zugreifen kann was ich ja eigentlich bräuchte da ich nur die neuen Zeilen benötige

                Wieso über Javascript?

                ich wollte vermeiden das ich (so kannte ich das von früher) bei jedem Submit die Seite neu laden muss.

                Es ist so:
                Ich trage Daten in ein Formular für jede Woche ein, dabei ist es dem User überlassen wie viele Wochen er einträgt.
                Als erstes wird also Woche1 geladen, nachdem Klick auf den Button wird diese abgespeichert und via Ajax wird in den letzten definierten Container eine neue Zeile hinzu gefügt.
                So bleiben stets die letzten eingetragenen Zeilen unberührt, werden via Javascript gesperrt und die Seite wird nicht ständig neu geladen sondern nur Zeilen hinzugefügt.
                Da jede Zeile einen eindeutigen DIV-Container hat, und ich diesen nun ansprechen kann, hätte ich mir das mit den eindeutigen ID's für jedes Input-Element der Zeilen sparen können.

                Mist, das hätte ich besser machen können.

                Mein Gedankengang ging dahin, das ich ja immer die gleichen Input-Felder in jeder Zeile verwende. Um nun die Datensätze richtig filtern zu können z.B. wenn der Datensatz abgespeichert wurde und eine neue Zeile geladen wird, wird ja die letzte Zeile gesperrt, dachte ich müsse auch eindeutige ID's für die Inputfelder verwenden.

                Ich wusste nicht das ich ja die Container in deren ID's nur eindeutig haben müsste

                mmmhhh

                Grüße Jürgen

                Kommentar


                • #9
                  Zitat von ChrisvA Beitrag anzeigen
                  Du brauchst defivitiv ein besseres System als das, was du gerade hast. Das mag vllt. irgendwann einmal funktionieren, ist aber für Außenstehende nicht zu verstehen und nach 2 Monate nicht mehr wartbar.

                  PS: Nur der Vollständigkeit halber:


                  Edit: Zu spät...
                  Na ja zu spät ist Eure Info nicht gerade. Diese Seite die ich gerade baue ist zwar sehr umfangreich ich kann und werde sie aber noch ändern da ich mir mit Eurer Methode doch vieles an Code und an Filtern spare.

                  Grüße Jürgen

                  ps.. wow. nach Eurer Info ärgere ich mich gerade tierisch. da habe ich einen ganz schönen Bockmist gebaut
                  hätte ich hier nur mal früher die richtigen Fragen gestellt.
                  Wenn ich gewusst hätte das dies mit jquery so easy geht... aber wie immer man muss es erstmal wissen.
                  Das waren nun ein paar Tage umsonst Arbeit

                  Kommentar


                  • #10
                    Lieber spät als nie ..

                    Habe versucht das Vorhaben noch genauer zu verstehen, aber habe es nicht lückenlos verstanden, um weiter Tipps hinsichtlich Struktur und Verbesserungen für die UX geben zu können. Bei weiteren Fragen einfach hier posten.

                    Kommentar


                    • #11
                      Zitat von Chris. Beitrag anzeigen
                      Lieber spät als nie ..

                      Habe versucht das Vorhaben noch genauer zu verstehen, aber habe es nicht lückenlos verstanden, um weiter Tipps hinsichtlich Struktur und Verbesserungen für die UX geben zu können. Bei weiteren Fragen einfach hier posten.
                      Hallo,
                      super das Du mir behilflich sein möchtest.

                      Ich werde jetzt eh alles umprogrammieren da ich mit meiner Variante einen viel zu großen Code habe.

                      Ich will es nochmals versuchen zu schildern was ich vorhabe.

                      Ich habe hier Registerkarten <ul><li> etc. in diesen Regsiterkarten wird bei onclick ein Formular geladen.
                      dieses besteht in der ersten Ansicht aus einer Zeile.
                      Diese Zeile besitzt meist 8 Eingabefelder, 2 Radio Buttons und eine Anzeige für die Woche (also pro Woche eine Zeile)

                      Da pro Zeile nur 4 Eingabefelder ausgefüllt werden dürfen, werden zuerst beim Laden alle Felder via Javascript gesperrt.
                      Nun muss der User einen der Radio-Button klicken um 4 der 8 zu aktivieren.

                      Dabei ist das Format der Felder 00.00 also 2 plus 2 Nachkommastellen.
                      Die Felder habe ich mit type="number" deklariert und auch die Anzahl der Stellen vor deklariert.

                      Hat der User alles ausgefüllt und den Button "absenden" geklickt (hier ist auch wieder ein onclick hinterlegt der bestimmte Variablen hat (Woche, Registerkarte und versch. id's)
                      Von diesen Buttons gibt es 3 Stück.

                      Der erste Button bewirkt das die eingegeben Daten im Hintergrund via Ajax abgespeichert werden und eine neue Zeile nachgeladen wird (wieder zum Eingeben der gleichen Daten nur für eine andere Woche) der zweite Button bewirkt das die Daten im Hintergrund abgespeichert werden, einen weitere Zeile geladen wird und zusätzlich werden noch weitere Eingabefelder und Auswahlfelder geladen, der Dritte Button bewirkt das die gesamte Eingabe abgeschlossen ist und somit nur noch das Ergebnis angezeigt wird.

                      der Zweite Button holt eine ziemlich umfangreiche Zeile. diese besteht nicht nur aus den ersten 8 Eingabefelder plus den radios zusätzlich werden auch Schieberegler geladen mit denen man Zeiträume und Start sowie Endzeiten bestimmen kann.

                      Das Problem was ich hatte.
                      Da ich ja alles ausgelesen habe also alle Input-Felder hatte ich das Problem wenn ich von Regsiterkarte zu Regsiterkarte gesprungen bin, dass dann im Hintergrund also im Seitenquelltext immer noch das erste Formular gespeichert war.
                      Somit hatte meine jquery-Suche mit each auch diese Input-Felder gescannt.
                      Ich musste also alles umständlich ausfiltern.
                      Auch musste ich nach den Eingabezeilen ausfiltern und zum Schluss noch welche der 8 Felder nun ausgewählt wurden usw...

                      Erst dann konnte der Ajax-string erstellt werden damit die Daten dann via http an eine php-seite gesendet werden die die Daten a) verarbeitet, also abspeichert etc. und b) noch die neuen Zeilen liefert


                      Aktuell funktioniert zwar alles wunderbar aber der Code sieht grausam aus.

                      Mit der Idee jede Zeile mit einer eindeutigen ID zu versehen habe ich die ganzen Probleme nicht mehr... ich habe das gerade schon getestet.

                      Den Http-String den lasse ich mir dann anhand des Ergebnisses der jquery find und each Funktion erstellen.

                      Auf der anderen Seite wo dann die Daten verarbeitet werden will ich auch den mysql string durch das $_GET-array automatisch erstellen lassen.
                      Aktuell wird noch nichts in die DB geschrieben da ich nur an den Frontend Funktionen gearbeitet habe


                      Ist das so nun besser verständlich?

                      Sorry aber ich kanns nicht besser beschreiben

                      Grüße Jürgen

                      Kommentar


                      • #12
                        • Du schreibst, dass du per JavaScript Felder aktivierst und deaktivierst. Gehe auf Nummer sicher und validiere die Eingaben via PHP, wenn das Formular abgesendet wird. Es ist sehr einfach als Client deaktivierte Felder zu aktivieren. Du solltest nicht darauf bauen, dass die Felder immer korrekt aktiviert & deaktiviert sind.
                        • Warum lädst du das Anfangsformular auch per JavaScript? Soweit ich aus früheren Antworten herauslesen konnte, ist in jeder Registerkarte das Formular das selbe.
                        • Mit Number-Type Input-Feldern auch vorsichtig sein. Es kann gut sein, dass das in älteren Browsern nicht so funktioniert, wie es sollte. Auch hier auf Validierung setzen.
                        • Das onclick-Attribut wird generell als Bad Practice angesehen. Siehe: Unobstructive JavaScript

                          Verwende stattdessen Frameworks wie jQuery:

                          PHP-Code:
                          $('selector').on('click', function() {}); 
                        • Um Formulare klar zu unterscheiden, schreibe dir Funktionen, um Daten abzuspeichern, neue Input-Felder hinzuzufügen, ... und handhabe es für jeden Button einzeln. D.h. in jQuery für jeden Button einen Selector hinzufügen für das click-Event und daraus folgend die bereitgestellten Funktionen ausführen.
                        • Beim MySQL-Part direkt auf Prepared Statements mithilfe von mysqli bzw. PDO setzen. Das wird dir weiter viele Schmerzen ersparen. Dauert womöglich einen Ticken länger sich einzuarbeiten, ist es aber definitiv wert. Und auch hier nicht vergessen, die GET-Parameter zu validieren.
                        • Auch solltest du in Sicherheit Zeit investieren. Es sollte nur das Script in der Lage sein, die Datenbank zu updaten. Es ist wichtig, dass nicht irgendein Client die PHP-Datei aufrufen kann und wildes Zeugs in die Datenbank schreiben kann.
                        • Warum GET-Parameter? Wäre POST nicht viel einfacher und würde auch mehr Sinn machen, wenn man sich überlegt, was du mit den Parametern vor hast? Was meinst du mit AJAX-String? Meinst du eine JSON Repräsentation der Daten?

                        Kommentar


                        • #13
                          Hallo,
                          das was Du schreibst bereitet mir gerade sehr viele Gedanken zu meiner Struktur.
                          Ich kann vieles auch nachvollziehen, hätte aber bei einigen dingen noch Fragen.
                          ich will morgen darauf eingehen und würde mich sehr freuen hier ein wenig Hilfestellung zu bekommen.

                          Ja, mittlerweile habe ich gemerkt das jquery hier doch sehr hilfreich sein kann. Am Anfang hatte ich mich wirklich darum gewunden es einzusetzen, mittlerweile ist es für mich aber viel besser nach zu vollziehen (begreifbarer )als Javascript .

                          Ich bräuchte mal eine gutes Tutorial für jquery um mich da besser einzuarbeiten.
                          Wenn ich die Beispiele wie oben sehe dann macht es Klick und ich begreife es .

                          Bis morgen dann und einen guten Rutsch

                          Jürgen

                          Kommentar


                          • #14
                            jQuery ist für mich ein unabdingbares Framework. Aber bitte nicht den Fehler begehen und denken, dass jQuery kein JavaScript ist. jQuery ist ein JavaScript-Framework.

                            Ein bestimmtes jQuery Tutorial kenne ich nicht. Ich habe seit je her mit Google gearbeitet. Man findet meist Einträge in anderen Foren wie z.B. stackoverflow.com oder stoßt auf die jQuery Dokumentation, die wirklich sehr gut geschrieben ist und auch mit zahlreichen Beispielen ausgestattet ist.

                            Wichtig bei der Entwicklung mit JavaScript ist eben, dass man sich mit den Web-Entwickler Tools in Browsern auskennt, wie z.B. der Web-Konsole. Für mich in FF eines der wichtigsten Tools neben Bildschirmtester und Netzwerkanalyse. Für den Rest kommt FireBug in Einsatz.

                            Auch von mir: Guten Rutsch!

                            Kommentar


                            • #15
                              Hallo ,
                              wünsche ein frohes, gesundes und glückliches Jahr 2015

                              Zitat von Chris. Beitrag anzeigen
                              • Du schreibst, dass du per JavaScript Felder aktivierst und deaktivierst. Gehe auf Nummer sicher und validiere die Eingaben via PHP, wenn das Formular abgesendet wird.
                              Zuerst sind alle Felder beim Laden schon deaktiviert, das steht so im html-code.So zwinge ich den User erstmal auf einen Button zu klicken. Das ist der Radio.
                              so nun kann er nur noch 4 statt 8 Felder ausfüllen.

                              Ja die ganzen Fehlerprüfungen ob Zahl gleich richtig eingegeben wurde etc. passiert noch via Javascript.
                              Das mit den type=number ist ja auch so eine Sache. Ich habe eine Art RegExp für Pattern gesehen das soll wohl gut funktionieren auch mit aktuellen Browsern.

                              Beim Browser ist es bei mir nicht so wichtig.

                              Solange der Chrome, Firefox und ein aktueller IE damit noch klar kommen ist es gut.
                              Meine Anwendung läuft nicht im Web sondern meist nur lokal. Sie steuert mehrere Aquarien ob Süß ob Seewasser egal. Deswegen muss ich sehr sehr viel mit Tabellen arbeiten die in Abhängigkeit stehen und muss auch viele Daten eintragen und später messen die auch reingeschrieben werden sollen.

                              Zum Thema.

                              Ich dachte ich könnte auf der PHP-Seite mir eine nochmalige Prüfung sparen da ich ja nicht im Web arbeite und der User der das Programm benutzt es ja schliesslich selber so wollte, also befürchte ich nicht von ihm oder einem seiner Mitnutzer das sie böswillig falsche Daten eingeben

                              Ich musste nur vom User her ausschliessen das er kein O statt einer Null eingegeben hat usw..und ob die Kommas stimmen etc.

                              Ok ich könnte aber doch nochmal auf PHp Seite gegenprüfen.
                              Man weiss ja nie



                              Zitat von Chris. Beitrag anzeigen
                              • Es ist sehr einfach als Client deaktivierte Felder zu aktivieren. Du solltest nicht darauf bauen, dass die Felder immer korrekt aktiviert & deaktiviert sind.
                              Wie sollte ich das dann machen... dann müsste ich ja auch schon die einen 4 Felder oder die anderen 4 via Ajax nachladen so dass sie gar nicht erst vorhanden sind oder?

                              Zitat von Chris. Beitrag anzeigen
                              • Warum lädst du das Anfangsformular auch per JavaScript? Soweit ich aus früheren Antworten herauslesen konnte, ist in jeder Registerkarte das Formular das selbe.
                              Gute Frage
                              Ganz ehrlich. weil ich es cool finde
                              ich wollte damit Folgendes erreichen:
                              ich habe ja oben meine Menüleiste diese wird ganz normal geladen je nach Menüauswahl, also ganze Seite baut sich neu auf (diese Navbar wird immer mit includes in die Seiten eingebunden sowie meine header.php und der footer.php als auch die javascript.js als auch meine stylesheets oder die auth.php die die Session regelt oder die db.php die die Authentifizierung für die db.php regelt

                              Klickt man auf einen Button in der Navigationsleiste so baut sich die Seite mit dem ersten Inhalt neu auf.
                              Bei aktuellen Beispiel ist das eine Regisiterkarte.
                              Diese Regsiterkarte baut sich anhand von Daten auf die in der Datenbank stehen.
                              In diesem Beispiel um welche Typen von Becken es sich handelt. Süßwasser, Seewasser, Zucht,- oder Pflanzenbecken usw.

                              Für diese Becken kann der User nun Daten eingeben wie ph-Werte usw.
                              Ab dem Klick auf eine der Regsietrkarten wird alles nur noch via Javascript und Ajax nachgeladen
                              Grund:
                              Ich wollte somit den lästigen Seitenaufbau für die gesamte Seite vermeiden.
                              Es sieht für mich einfach gut aus, wenn sich die Seite nicht bewegt und ruck-zuck eine neue Zeile hinzugefügt wird oder aber später wenn die Daten schon in der Datenbank stehen, bei Klick eben diese Daten in die Registerkarte geladen werden.

                              Ich hatte das zuvor auf einer anderen Eingabeseite mal probiert. Dort ging es um das Anlegen von Aqua-Becken. Je nachdem ob er Süß,- oder Seewasser gewählt wurden dann nur noch entsprechende Formularfelder via Ajax nachgeladen. Das gefiel mir sehr gut und ich möchte dabei bleiben.

                              Wie gesagt, da die Anwendung erstmal nur lokal läuft und wenn überhaupt sie im Web mal erreichbar sein soll dann auch nur von dem User selbst benutzt werden kann, gehe ich von keiner Böswilligkeit aus.
                              Der User muss sich ja erstmal Authentifizieren um überhaupt rein zu kommen


                              Zitat von Chris. Beitrag anzeigen
                              • Mit Number-Type Input-Feldern auch vorsichtig sein. Es kann gut sein, dass das in älteren Browsern nicht so funktioniert, wie es sollte. Auch hier auf Validierung setzen.
                              das hatte ich schon gelesen und ist ja eine Neuerung seit HTML5,
                              Aber wie oben schon beschrieben habe ich damit kein Problem da ich dem User schon vorschreiben kann welchen Browser er nutzen soll.
                              Solange es mit den aktuellen geht wie Chrome, Firefox und einem aktuelle IE ist es ok.
                              Ich müsste das mit den type=number wohl nur noch mit dem Element pattern erweitern oder?
                              aktuell prüfe ich die Eingabe noch via Javascript und bei Komma-Eingabe ersetze ich dies einfach mit einem Punkt für meine mysql-db

                              ich werde das aber nun wohl doch nochmals unter PHP gegenprüfen.



                              Zitat von Chris. Beitrag anzeigen
                              • Das onclick-Attribut wird generell als Bad Practice angesehen. Siehe: Unobstructive JavaScript

                                Verwende stattdessen Frameworks wie jQuery:
                              Als ich nun nach x-Jahren erstmals wieder mit php und Javascript in Berührung kam stolperte ich über jQuery und wusste damit gar nichts anzufangen.
                              Erst hier in diesem Forum wurde mir dessen Einfachheit bewusst und aktuell möchte ich es mehr und mehr nutzen. Früher verfluchte ich eigentlich Javascript mit jQuery komme ich aber besser zurecht.
                              Trotzdem fehlt mir noch vieles an Grundlagen.

                              So wie ich das jQuery verstehe ist das doch nur Javascript in umgekehrter Form oder?
                              Bei javscript habe ich ein onclick Event was dann eine Funktion aufruft
                              in jQuery dagegen habe ich eine Funktion die ein HTML-Element überwacht und dort auf was wartet wie auf den click oder?



                              PHP-Code:
                              $('selector').on('click', function() {}); 
                              Genau.
                              De jQuery selector bzw. die es davon gibt sind ja wirklich genial.
                              Ich habe gerade noch auf der jQeury Seite mir einige angesehen und festgestellt das ich ja einfach im name="" Attribut suchen kann nach einem bestimmten Namen.
                              Das ist bei mir genial. So erspare ich mir das ganze Filtern.

                              Aktuell bläht sich mein Javscript-code so wahnsinnig auf da ich eben alle Felder eingelesen habe.
                              Ich werde nun alles umschreiben .
                              Dann muss ich nur jede neue Zeile untersuchen da ich auf der DIV ID's zugreife und dann dort den radio auswerte um dann mit
                              PHP-Code:
                              $( "input[name$='dassucheich']" ).val"gefunden" ); 
                              so nur das bekomme was ich brauche.

                              Ich begreife das nur noch nicht so ganz mit dem selector wann ich ein "#" einen "." oder gar nichts davor hängen muss. Auch muss ich noch sehr viel dazu lernen was die Kombination von Befehlen angeht. So spare ich mir dann wohl viel Schreibarbeit

                              Zitat von Chris. Beitrag anzeigen
                              • Um Formulare klar zu unterscheiden, schreibe dir Funktionen, um Daten abzuspeichern, neue Input-Felder hinzuzufügen, ... und handhabe es für jeden Button einzeln. D.h. in jQuery für jeden Button einen Selector hinzufügen für das click-Event und daraus folgend die bereitgestellten Funktionen ausführen.
                              Bingo. Ja, als ich diese Empfehlung von Dir gelesen habe und ich mir dann noch die Selector's bei jQuery ansah wurde es mir sofort bewusst. Genau so werde ich es auch machen. Das ist natürlich ideal.

                              Ich könnte mich in den Ar... beissen... da ich schon viel weiter sein könnte... ich muss jetzt ca.90% meines Codes in die Tonne kippen.

                              Zitat von Chris. Beitrag anzeigen
                              • Beim MySQL-Part direkt auf Prepared Statements mithilfe von mysqli bzw. PDO setzen. Das wird dir weiter viele Schmerzen ersparen. Dauert womöglich einen Ticken länger sich einzuarbeiten, ist es aber definitiv wert. Und auch hier nicht vergessen, die GET-Parameter zu validieren.
                              Habe mir gerade mal ein weinig was in Sache Prepared angesehen
                              ist eigentlich auch genau das was ich brauche, da ich meine Daten via $_Get bekomme und somit den mysql-string in einer Schleife erstellen lassen kann, da mein http-String der mir die ganzen Daten liefert als keys den Datenfeldnamen in der mysql-db hat (meine ganzen Input-felder sind mit dem Namen der Datensatz-Felder in der DB gleich.



                              Zitat von Chris. Beitrag anzeigen
                              • Auch solltest du in Sicherheit Zeit investieren. Es sollte nur das Script in der Lage sein, die Datenbank zu updaten.
                              das ist jetzt schon so, ich müsste nur noch die ganzen $_GET Werte überprüfen.


                              Zitat von Chris. Beitrag anzeigen
                              • Warum GET-Parameter? Wäre POST nicht viel einfacher und würde auch mehr Sinn machen, wenn man sich überlegt, was du mit den Parametern vor hast? Was meinst du mit AJAX-String? Meinst du eine JSON Repräsentation der Daten?
                              Warum GET ? ich weiss nicht wie ich das anders hätte lösen können.

                              Hier mein Anlauf

                              1) Formular (aktuell noch via onclick) übergibt die Daten an Javascript
                              2) in Javascript wird alles geprüft und entscheiden ob korrekt oder Abbruch
                              3) generieren des http-strings als array "data1"
                              4) aufruf dieser jQuery Funktion
                              PHP-Code:

                                            
                              $.ajax({
                                              
                              url:"pages/phecSettings.php"
                                              
                              type:'GET',
                                              
                              datadata1,  // string mit keys und werten als array
                                              
                              success:function(data){
                                                  $(
                              '#'+tab).html(data); // Schreibt die Ausgabe in den Container mit der id="tab"    
                                              
                              }
                                            }); 
                              5) in phecSettings.php wird via $_GET der String ausgewertet und anhand der Daten was in die Datenbank geschrieben
                              (In Zukunft erfolgt eine nochmalige Überprüfung in der Seite phecSettings.php bevor eine weitere Aktion ausgeführt wird)
                              6) Nach Eintrag in die DB wird anhand einer ID emntschieden welches Template nachgeladen wird
                              - entweder Ende
                              - nur neue Eingabe-Zeile
                              - oder neue Eingabezeile mit zusätzlichen Eingabefeldern für Zeitangaben, Datumsangaben usw. die als Slider dann beim User auftauchen

                              Sorry das Ganze war jetzt etwas umfangreich... aber ich hoffe das so meine Denkweise wieso ich auch die Daten via $_Get verarbeite deutlicher wurde

                              Ich kenne aber keine andere Möglichkeit sonst in Verarbeitungsscripts wie hier dem phecSettings.php an die Daten zu kommen

                              Grüße Jürgen


                              ps.. in Sachen Datenbank (ich verwende mysqli ) muss ich auch hier meine ganze Datenbank-Strktur nochmals überarbeiten .
                              Ich benötige und habe sehr viele Abhängigkeiten
                              Da es um Aquariums eines Züchters geht gibt es Räume die bestimmte Becken haben Raum1 z.B Süßwasser, Raum2 z.B Seewasser, Raum3 z.B. Süwasserzucht usw.
                              in den Räumen gibt es bestimmte Becken, diese Becken haben wider bestimmte Inhalte, die Inhalte benötigen bestimmte Werte an PH/EC usw. dann gibt es für diese Becken bestimmte Pumpen und Reinigungsfilter und und und
                              Alles was ich hier aktuell für das Webfrontend mache und im Hintergrund in die DB geschrieben wird, wird später von einem Microcontroller ausgewertet der mit diesen Daten arbeiten muss um Pumpen und Filter sowie Lampen usw. steuern zu können.
                              Aus dem Grund muss ich wahnsinnig auf die korrekten Beziehungen der Tabellen untereinander achten.
                              Da brauch ich auch noch einiges an Wissen von mysql damit es mir hier nicht auch so geht wie unter meinen verrückten Javascript-Filter-Methoden die ich mir zu 90% ersparen hätte können

                              Kommentar

                              Lädt...
                              X