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

  • #16
    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
    Diese Einstellung habe ich bei Programmierern schon ziemlich oft gesehen und finde ich richtig richtig schlecht. Nur weil es wenige Leute verwenden soll die Anwendung schlecht und unsicher programmiert werden? Sehe ich nicht so! Es geht ja auch nicht nur darum, um die Sicherheit zu stärken, es geht auch um Fehlermeldungen und die Validierung, sodass eine Weiterverarbeitung überhaupt möglich ist.

    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?
    Nein, musst du nicht. Du musst in deiner Validierung zunächst die einen vier Felder überprüfen und dann die anderen. Wenn der User die Felder selbst aktiviert, dann muss man keine korrekte Weiterverarbeitung garantieren. Z.B. kannst du testen, ob Felder 1 aktiviert ist. Wenn ja, überprüfe die ersten vier Felder. Wenn nein, überprüfe die anderen vier Felder. Je nachdem, was das Ergebnis ist, ob Fehler auftraten oder ob keine der zwei Möglichkeiten in Frage kommt, gebe Fehlermeldungen aus.

    ich wollte damit Folgendes erreichen:
    Bei dieser Anmerkung geht es nicht um Sicherheit, sondern um Effizient. Warum einen ganzen Request an den Server senden, wenn das Formular doch immer das selbe ist? Lade es doch einfach direkt beim Request, blende es via CSS aus und blende es ein, sobald es benötigt wird. AJAX sollte nur verwendet werden, wenn auch ein Request von Nöten ist und Sinn macht.

    Aber wie oben schon beschrieben habe ich damit kein Problem da ich dem User schon vorschreiben kann welchen Browser er nutzen soll.

    [...]

    aktuell prüfe ich die Eingabe noch via Javascript
    1. Siehe Antwort ganz oben im Beitrag zu Einstellungen von Programmierern.
    2. Validierung via JavaScript? Sollte mit PHP auch validiert werden. JavaScript ist immer client-seitig und daher nicht das sicherste. Eine Serverseitige Validierung ist immer sicherer.

    Ich begreife das nur noch nicht so ganz mit dem selector wann ich ein "#" einen "." oder gar nichts davor hängen muss.
    Ist wie in CSS. # = ID, . = Klasse, nichts = HTML-Element.

    da mein http-String der mir die ganzen Daten liefert als keys den Datenfeldnamen in der mysql-db hat
    Wie schon geschrieben. Mit Request-Paramentern vorsichtig sein. Da kann jeder reinschreiben, was er möchte. Daher vorsichtig sein, wenn man einen SQL Query anhand von Parametern baut. Wieso den Query immer wieder neu bauen? Die Feldnamen verändern sich doch nie, oder liege ich falsch?

    Warum GET ? ich weiss nicht wie ich das anders hätte lösen können.
    Muss nicht viel anderst sein. Lediglich POST statt GET verwenden. Grund kann hier nachgelesen werden: http://stackoverflow.com/a/46639

    Kommentar


    • #17
      Zitat von ChrisvA Beitrag anzeigen
      Du brauchst defivitiv ein besseres System
      Bin schon dabei es umzuschreiben... mir sind Eure Argumente klar geworden das mein Stil ein großer Schei... war/ist

      Zitat von ChrisvA Beitrag anzeigen
      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:

      $("input").each(function(){
          
      alert("hier alle");
      }
                          ); 
      Edit: Zu spät...
      auch das beispiel von Ditr ist mir sofort klar geworden das dies viel besser ist.

      Nun möchte ich aber vermeiden das ich wieder grobe Züge falsch mache.

      Frage:

      Das ich mit Registerkarten arbeite und hier Zeilen nachgeladen werden ist bekannt.
      Das ich diese eindeutig machen muss durch <div id="eindeutig1"> Container oder eindeutige ID's auch.

      ob ich das mit <form> oder mit <div> mache ist ja egal so denke ich mal.

      zumal wenn ich das Elternelement angeben kann so kann ich auch den Inhalt darin finden.
      Ich vermute mal das geht dann auch mit Verschachtelungen wie Eltern=> Kind => Enkelkind
      sorry
      Aber ich glaube ihr wisst was ich meine.


      Da ich nun auch die onclick="meinefunction(1,2,4,6)"; Variante überlege die ich bei meinen buttons anwende will ich nun den Rat befolgen für jeden Button eine eigen jquery $( "#button1id" ).click(function() anzulegen.

      Ich habe nur noch ein Verständnisproblem wie ich die Parameter übergeben soll.
      Bis dato habe ich das einfach in meine onclick reingeschrieben und schon hatte die Funktion alles was sie brauchte.

      Wenn ich jedoch auf onclick verzichten sollte wie hier empfohlen , dann frage ich mich wie ich die Parameter in die Funktion bekomme.

      Eine für mich nun umständliche Variante wäre via jQuery bei click das Elternelement zu ermitteln und dort unter Umständen hidden-id's abzufragen.

      Ich muss ja die Werte die in das Formular eingegeben wurden nicht nur auslesen sondern auch bestimmten groupId's und typeId's zuweisen können mit denen ich arbeite

      Habt ihr da noch einen Tipp...

      Ach ja, bis dato habt ihr mir schon sehr geholfen, zumindest habe ich erkannt das mein Programmierstil völliger Nonsens war/ist

      und die Empfehlung zu den selectors von jQuery war auch super da wurde es mir noch klarer vor den Augen


      Grüße Jürgen

      Kommentar


      • #18
        Hallo Chris,

        ich muss mich erstmal für die wirklich hilfreichen Tipps und den ASufwand von Dir und den Anderen ganz herzlich bedanken... DANKE!!!

        Ihr habt mir wirklich sehr die Augen geöffnet

        Zitat von Chris. Beitrag anzeigen
        Diese Einstellung
        Ich werde dies nun auch auf der PHP-Seite nochmals gegenprüfen.
        Ist für mich auch einfacher dies jetzt schon zu implementieren als später wenn die Anwendung doch mal öffentlich von mehreren genutzt werden sollte
        Vielleicht war es bis dato auch die scheu mich mit regulären Ausdrücken zu beschäftigen da mich die Schreibweise doch ab und an umhaut
        Aber gut ich traue es mir zu und irgend wann fresse ich das schon



        Zitat von Chris. Beitrag anzeigen
        Nein, musst du nicht. Du musst in deiner Validierung zunächst die einen vier Felder
        genau das mache ich ja schon bzw. machte ich total umständlich ich jagte alles durch 1000 If Abfragen was aber totaler Blödsinn ist

        Beispiel:

        Meine Eingabefelder lauten alle
        entweder
        phsuessmin
        phsuessmax
        usw.

        oder
        phsalzmin
        phsalzmax
        usw.

        jetzt nehme ich einfach jquery frage den radio-button ab ob der Wert bei 0 oder 1 ist und je nachdem
        nehme ich dann
        $("tab-1").find("input[name*='suess']").val();
        oder
        $("tab-1").find("input[name*='salz']").val();

        da ich aber mit Regsiterkarten arbeite die zuvor schon geöffnet waren muss ich mit Eltern, Kind und weiteren Kind-Elementen arbeiten
        Ich habe zwar durch die Container einen Eindeutigkeit aber ich brauche diese innerhalb der Container für die Kindeelemente auch
        z.B.
        <div id="Zeile-n">Eingabefelder</div>


        Zitat von Chris. Beitrag anzeigen
        Warum einen ganzen Request an den Server senden, wenn das Formular doch immer das selbe ist? Lade es doch einfach direkt beim Request,
        Diese Argumentation leuchte mir auch ein nur ist es bei mir so.
        Sorry zumindest für mein Verständnis so...

        Lade ich Zeilen via CSS nach oder blende diese zuvor aus und lade sie bei klick nach
        So muss ich ja auch alles parsen ich muss für jede Zeile den DIV Container ermitteln, denn die Felder usw... und dann schiebe ich zum Schluss wenn alles überprüft wurde in die DB

        Passiert mir da was auf dieser Strecke und der Benutzer hat vielleicht zw. 40 und 60 Felder ausgefüllt sich eine großen Kopf darüber gemacht welche Werte er nun einträgt da es ja um Chemie-Werte geht die sein Aquariumwasser überwachen und einstellen sollen.

        Wenn da irgend etwas schief geht, verliere ich evtl. alle mühsam eingegeben Werte

        Wenn ich (was in diesem Fall den Server nicht großartig belastet da es wie schon gesagt eine lokale Anwendung ist, ja auch das kann man anders auslegen ) jeden Datensatz einzeln abspeichere so hängt dieser schon mal gesichert in der Datenbank. Das war und ist der Hauptgrund.
        Ok.. an die CSS variante dachte ich nicht... aber wenn ich daran gedacht hätte hätte ich wahrscheinlich auch schiss diese anzuwenden und zu riskieren das dann alle Daten weg sind falls die Verbindung oder wass auch immer schief geht

        Zitat von Chris. Beitrag anzeigen
        Serverseitige Validierung ist immer sicherer.
        das habe ich begriffen und das mache ich nun auch so

        ich muss eh nun alles umschreiben

        Zitat von Chris. Beitrag anzeigen
        Ist wie in CSS. # = ID, . = Klasse, nichts = HTML-Element.
        habe ich mittlerweile
        hier
        gelesen

        Zitat von Chris. Beitrag anzeigen
        SQL Query anhand von Parametern baut.
        da ich es nun nochmals überprüfe auf PHP-Seite und auch die ganzen eingetragene Werte validiere

        möchte ich zumindest beim Bau des SQL-Strings dann ein wenig dynamisch sein

        Zitat von Chris. Beitrag anzeigen
        Wieso den Query immer wieder neu bauen? Die Feldnamen verändern sich doch nie, oder liege ich falsch?
        Genau... da ich aber den http-String auch so erstelle also:
        settings.php?phsuessmin=6.08&phsuessmax=6.75 usw
        und meine felder in der DB genaus bezeichnet sind könnte ich ja aus dem $_GET Array zumindest wenn ich die Werte validiert habe gleich den SQL-String erstellen oder?




        Zitat von Chris. Beitrag anzeigen
        Muss nicht viel anderst sein. Lediglich POST statt GET verwenden. Grund kann hier nachgelesen werden: http://stackoverflow.com/a/46639
        da werde ich dann gleich nachlesen obwohl ich das nicht richtig von der Logik verstehe

        wenn ich via Ajayx was absende und eine Antwort erwarte so ist das doch GET und wie das Post sein kann häää.
        ok ich bin da eh ganz frisch hinter den Ohren

        Grüße Jürgen

        Kommentar


        • #19
          Hallo an Alle,

          ich glaube mit meiner obigen Fragestellung hatte ich mich zu verwirrend ausgedrückt.

          Mittlerweile habe ich wohl gefunden nach was ich suchen musste und was mir hier empfohlen wurde
          da ja der Eventhandler onclick den ich bei meinem Button verwende ein schlechter Programmierstil ist.

          Ich wusste ja nicht das es unter HTML5 ein data- Attribut gibt was ich wieder ,mit Javascript oder jQuery auslesen kann.

          Frage was ist nun zu empfehlen?:

          das hier also meine Methode:

          PHP-Code:
          echo '<button class="button" onclick="meinefunction('.$userid.','.$zusatzId1.', '.$zusatzId2.' );">meinbutton</button>'
          Code:
          function meinefunction( userid, zusatzId1,zusatzId2)
          {
          //mach was
          }
          oder das ich den Button dem data- Attribut ausstatte mit

          PHP-Code:
          echo '<button class="button zusatzids" data-userid="'.$userid.'" data-zusatzId1="'.$zusatzId1.'" data-zusatzId2="'.$zusatzId2.'">meinbutton</button>'
          und mit

          Code:
          $( ".zusatzids" ).click(function() {
           
                   var alleids     = $(".zusatzids").data(); // lese ich alle data- Attribute aus
                  //oder mit
                   var nuruserid = $(".zusatzids").data("userid"); // erhalte ich nur die userid
          
                // und nun mach was damit
          
          });
          wäre diese letztere Methode dann ein sogenannter guter Programmierstil?

          Grüße Jürgen

          Kommentar


          • #20
            Definitiv dein zweiter Vorschlag. Aber wieso schreibst du die UserID in das Document? Sollte diese nicht in Sessions etc. gespeichert sein? Die UserID kann doch jeder im Document abändern. Somit könnte jemand anderes die Daten einer anderen Person beeinflussen.

            Und wieso hast du weiterhin diese ZusatzIDs? Verwende doch einfach die Struktur deines Documents.

            Kommentar


            • #21
              Zitat von Chris. Beitrag anzeigen
              Definitiv dein zweiter Vorschlag. Aber wieso schreibst du die UserID in das Document? Sollte diese nicht in Sessions etc. gespeichert sein? Die UserID kann doch jeder im Document abändern. Somit könnte jemand anderes die Daten einer anderen Person beeinflussen.

              Und wieso hast du weiterhin diese ZusatzIDs? Verwende doch einfach die Struktur deines Documents.
              Hallo,

              vieloen dank für die schnelle Antwort.

              Das mit der Userid war und ist nur ein Beispiel.
              Ja die wird in der Session abgespeichert.

              In meinem Fall geht es um eine typeId und eine groupId.
              Die PH-Werte die ich eintragen muss werden zu bestimmten Typen zugeordnet also Süsswasser oder Seewasser, dann gibt es bestimmte Becken die wieder bestimmten Gruppen zugeordnet sind z.B. Aufzucht, Niedere-Tiere, Pflanzen, Fische
              so ungefähr muss man sich das vorstellen.

              Da ich mit diesen ID's arbeiten muss, muss ich diese auch der Funktion irgendwie mitteilen

              ich wusste gar nicht das es so eine einfaches Attribut wie data- gibt deswegen auch meine komische Fragerei

              Sorry nochmals deswegen...

              Jetzt muss ich erstmal meinen kompletten Code umbauen.


              Ein wichtige Frage noch zur Gestaltung dieser Registerkarten, den Containern usw.:

              Ich arbeite ja mit Parent und Child-Elementen
              wobei sich bei mir auch alle Parent-Elemente unterscheiden müssen, da ich ja via Ajax die Regsiterkarten befülle.
              Somit bleibt mir beim Wechsel von Regk-1 zu Regk-2 immer der alte HTML-Code im Browser.


              ich würde das jetzt so machen

              PHP-Code:
              echo '<div id="tab-'.$typeId.'">';
                     echo 
              '<div id="row-1>';
                     echo 
              '</div>';
                     echo 
              '<div id="row-2>';
                     echo 
              '</div>';
                   echo 
              '<button class"button alleids" data-typeId="'.$typeId.'" data-groupID="'.$groupId.'" data-rowId="'.$row.'">klickmich</button>';
              echo 
              '</div>'
              und hier ein Beispiel einer weiteren Registerkarte wobei sich das Elternelement mit der $typeId immer unterscheidet

              PHP-Code:
              echo '<div id="tab-'.$typeId.'">';// $typeId = 2
                     
              echo '<div id="row-1>';
                     echo 
              '</div>';
                     echo 
              '<div id="row-2>';
                     echo 
              '</div>';
                   echo 
              '<button class"button alleids" data-typeId="'.$typeId.'" data-groupID="'.$groupId.'" data-rowId="'.$row.'">klickmich</button>';
              echo 
              '</div>'
              PHP-Code:
              echo '<div id="tab-'.$typeId.'">'// $typeId = 3
                     
              echo '<div id="row-1>';
                     echo 
              '</div>';
                     echo 
              '<div id="row-2>';
                     echo 
              '</div>';
                   echo 
              '<button class"button alleids" data-typeId="'.$typeId.'" data-groupID="'.$groupId.'" data-rowId="'.$row.'">klickmich</button>';
              echo 
              '</div>'

              die Frage die ich mir nun stellen muss ist.
              wenn alle Buttons die class = alleids
              haben wie kann ich diese dann eindeutig ansprechen wenn ich zu diesem Zeitpunkt die "tab-'.$typeId.'" des Elternelements noch gar nicht kenne?

              oder müsste dann die function

              Code:
              $( ".alleids" ).click(function() {
               
                       var alles     = $(".alleids").data(); // lese ich alle data- Attribute aus
                      //oder mit
                       var nuruserid = $(".zusatzids").data("userid"); // erhalte ich nur die userid
              
                    // und nun mach was damit
              
              });
              die data-typeId ermitteln um dann in der Folge mit dieser typeid ein child-Element zu bilden um auf die row-1 oder row-2 zugreifen zu können?

              Denn ohne diese eindeutige Parent-ID die ja durch tab-"'.$typeId.'" bestimmt wird, wäre ja der Zugriff auf die Childs row-1 usw. gar nicht möglich oder?


              Bitte nicht sauer sein.. ich weiss ich frage hier etwas nervig ich muss das aber richtig begreifen...

              Danke fürs Verständnis

              Grüße Jürgen

              Kommentar


              • #22
                Hier ein Link

                Hallo,

                ich bitte nochmals um Eure Unterstützung
                versuche gerade meine ganze Struktur umzubauen

                habe mal ein Beispiel hier eingestellt
                http://jsfiddle.net/c2ys47kh/

                abgeaendert

                Leider ist dort das Design nicht sauber zu sehen

                Es geht wie schon erwähnt um Regsiterkarten.
                Jede Registerkarte hat eine eindeutige ID in diesem Fall box1, box2 usw.
                (die Nummern werden hier in meinem Programm über PHP vergeben und sind ID's einer Tabelle in der DB

                Wie in dem Code ersichtlich sind die Container der Zeilen in jeder Box gleich
                also row-1 , row-2 usw.
                Es sind auch die Textfelder immer gleich.

                Ich hätte nur eine eindeutige Zuordnung über die box1 oder box2.

                Wie im script ersichtlich versuchte ich schon über diese box id darauf zuzugreifen.

                Ich suche nun eine Möglichkeit wenn man verschachtelte Container hat wie man dann eindeutig auf die Unter-Container zugreifen kann.

                ich bitte um Verständnis das wenn ich mich falsch ausdrücke in Sachen Container oder Eltern,- Kindelemente oder Knoten das man dies berücksichtigt.

                Viele Grüße

                Jürgen

                Ps. dies oben ist nur eine Testseite für mich damit ich verstehen lerne wie man auf verschachtelte Elemente zugreift
                Da ich später in diesen Registerkarten weitere Unterregister einfügen muss

                Nachtrag:

                mit der Erweiterung

                Code:
                var text  = $( "#box"+box+" div:nth-child("+row+") input[name*='Suess']" ).val();
                kann ich nun direkt auf die verschiedenen Zeilen einer bestimmten Box zugreifen und finde dort alle input-felder mit dem Namen *suess*

                Das Problem was ich nur noch habe sind die Buttons

                ich verwende in dem Beispiel immer zwei Buttons.
                Das musste ich so simulieren da ich mit Registerkarten arbeite in denen Templates nachgeladen werden.
                Wenn ich also als erstes Box1 aufrufe dann funktioniert das noch mit dem
                Code:
                ('.button2').click(function() {});
                oder
                Code:
                ('.button1').click(function() {});
                rufe ich jedoch im Anschluss eine andere Registerkarte auf z.B. Box2
                wird dort auch dieses Template geladen. der Unterschied ist nur in der angehängten Nummer an BOX also Box1 od Box2.....

                Da ich nicht für jede einzelne Box gesondere Funktionen schreiben möchte
                jedoch die Buttons die gleiche ID haben stellt sich nun die Frage
                was ich machen muss damit jQuery erkennt aus welcher Box der Button angeklickt wurde ?

                Kommentar

                Lädt...
                X