gerald: Frage zum Wiki-Artikel „Radio-Buttons_und_Checkboxen“

0 48

Frage zum Wiki-Artikel „Radio-Buttons_und_Checkboxen“

gerald
  • frage zum wiki
  • html
  1. 1
    Rolf B
    1. 0
      Gerald
      1. 0
        Matthias Scharwies
        1. 1
          Auge
          1. 0
            Matthias Scharwies
      2. 0
        Auge
        • html
      3. 0
        Gerald
        1. 0
          Gunnar Bittersmann
          1. 0
            Rolf B
            1. 0
              Gunnar Bittersmann
              • zu diesem forum
    2. 0
      Auge
      1. 0
        Gunnar Bittersmann
        • formulare
        • html
        • literatur
      2. -1
        Gerald
        1. 0
          Auge
          • html
          • meinung
        2. 0
          Gunnar Bittersmann
          • meinung
          1. 0
            gerald
            1. 1
              Rolf B
            2. 1
              Rolf B
              1. 0
                klawischnigg
              2. 0
                Keine Alternative
                1. -1
                  gwerald
                  1. 0
                    Gunnar Bittersmann
                  2. 2
                    Rolf B
                    1. 1

                      Recht

                      Robert B.
                      • menschelei
                      • offtopic
                    2. 0
                      Gerald
                      1. 0
                        Rolf B
                        1. 0
                          Gerald
                          1. 0
                            Robert B.
                            • formulare
                            • php
                            • zu diesem forum
                          2. 0
                            Robert B.
                            • meinung
                            • menschelei
                            1. 0
                              Christian Kruse
                          3. 0
                            Gerald
                            1. 0
                              gerald
                              1. 0

                                Kann man eine Antwort in einen anderen Teilbaum verschieben?

                                Robert B.
                                • zu diesem forum
                                1. 0
                                  Rolf B
                            2. 0
                              Rolf B
                              1. 0
                                Gerald
                                1. 0
                                  Rolf B
                                  1. 0
                                    Gunnar Bittersmann
                                    • php
                                    1. 0
                                      Rolf B
                            3. 0
                              Robert B.
                              • html
                              • php
                              1. 0
                                Grald
                                1. 0
                                  Rolf B
                                  1. 0
                                    Gerald
                                    1. 0
                                      Rolf B
                                2. 0
                                  Robert B.
                                  • html
                                  • php
                                  • programmiertechnik
                                  1. 0
                                    Gunnar Bittersmann
                                    • menschelei
                                    1. 0
                                      Robert B.

Wie kann Ich den aktiven Radio einer Gruppe von 8 Radiobutton speichern und nach submit wieder herstellen?

  1. Hallo gerald,

    du machst einen Submit?

    D.h. du hast einen Server, der die Daten empfängt und die Seite vorher generiert hat? Da läuft also serverseitig Software, die Du erstellt hast. Oder hast Du den Serverteil verständnisfrei von irgendwoher zumammenkopiert?

    Korrektes Vorgehen ist jedenfalls: Generiere serverseitig beim entsprechenden Radiobutton ein checked Attribut.

    Das ist bei der Arbeit mit einem Affenformular immer so: Daten entgegennehmen, validieren, im Fehlerfall die Seite mit Fehlermeldung zurückschicken und die empfangenen Daten vorbelegen.

    Dass die Fehlermeldung im gezeigten Zusammenhang komplett nutzlos ist, muss ich Dir sicherlich nicht sagen – ich gehe davon aus, dass Du im Experimentierstadium bist. In der Praxis muss eine Fehlermeldung sagen, in welchem Eingabefeld eine Unregelmäßigkeit festgestellt wurde und worin die Unregelmäßigkeit besteht. Ausnahme davon ist ein Login-Formular, dort darf es aus Sicherheitsgründen nur zwei Meldungen geben: "Sorry, Anmeldung gesperrt" (wenn sie für JEDEN gesperrt ist) und "Nö, so kommst Du nicht rein".

    Ergänzung zum Affenformular: Mit JavaScript das submit-Event des Forms abfangen, die Daten im Hintergrund per FormData zum Server schicken und eventuelle Fehlermeldungen in das Formular einblenden. Wenn keine Fehlermeldung kommt, auf die Folgeseite weiterleiten. Das ist allerdings deutlich komplexer und braucht Programmierung in JavaScript UND PHP (oder was auch immer Du serverseitig einsetzt). Ein solches Vorgehen ist aber immer nur progressive Enhancement, d.h. wenn das JavaScript nicht ausgeführt wird, muss der Server in den Affenformularmodus zurückfallen können.

    Rolf

    --
    sumpsi - posui - obstruxi
    1. Danke fur die Antwort aber das ist an der Frage vorbei. Das Bild zeigt einen Teil meines Formulars. Die Fehlermeldung hat mit dem Radio nichts zu tun, sondern soll den Nutzer nur darauf hinweisen das das rot makierte Feld nicht leer sin darf. Ich bin nicht ganz neu. Natürlich kann ich im Radio das checked Attribut verwenden. Aber dann ist nach jedem Submit immer das gleiche Atribut vorausgewählt. Ich möchte aber nach submit die Auswahl des Nutzers behalten. Entweder habe ich die Frage schlecht formuliert oder du hast mich nicht verstanden.

      1. Servus!

        Danke fur die Antwort aber das ist an der Frage vorbei. Das Bild zeigt einen Teil meines Formulars.

        Die Fehlermeldung hat mit dem Radio nichts zu tun, sondern soll den Nutzer nur darauf hinweisen das das rot makierte Feld nicht leer sin darf.

        Ich hatte aber auch auf die Radiobuttons geschielt.

        Schau dir mal HTML/Attribute/required an:

        <label for="kursentwicklung">geschätzte Kursentwicklung</label>
        <input type="number" id="kursentwicklung" required>
        

        Ich bin nicht ganz neu. Natürlich kann ich im Radio das checked Attribut verwenden. Aber dann ist nach jedem Submit immer das gleiche Atribut vorausgewählt. Ich möchte aber nach submit die Auswahl des Nutzers behalten. Entweder habe ich die Frage schlecht formuliert oder du hast mich nicht verstanden.

        Herzliche Grüße

        Matthias Scharwies

        --
        Die Signatur findet sich auf der Rückseite des Beitrags.
        1. Hallo

          Schau dir mal HTML/Attribute/required an:

          <label for="kursentwicklung">geschätzte Kursentwicklung</label>
          <input type="number" id="kursentwicklung" required>
          

          Hilft das, wenn in dem Feld eine 0 notiert ist, aber (mutmaßlich) ein Wert ≠ 0 erwaret wird? Ich denke, in diesem (von mir angenommenen) Fall braucht man eher die Attribute range und/oder pattern.

          Tschö, Auge

          --
          „Habe ich mir das nur eingebildet, oder kann der kleine Hund wirklich sprechen?“ fragte Schnapper. „Er behauptet, nicht dazu imstande zu sein“ erwiderte Victor. Schnapper zögerte (…) „Nun …“ sagte er schließlich, „ich schätze, er muss es am besten wissen.“ Terry Prattchett, Voll im Bilde
          1. Servus!

            Hallo

            Schau dir mal HTML/Attribute/required an:

            <label for="kursentwicklung">geschätzte Kursentwicklung</label>
            <input type="number" id="kursentwicklung" required>
            

            Hilft das, wenn in dem Feld eine 0 notiert ist, aber (mutmaßlich) ein Wert ≠ 0 erwaret wird? Ich denke, in diesem (von mir angenommenen) Fall braucht man eher die Attribute range und/oder pattern.

            Stimmt!!!!!

            Herzliche Grüße

            Matthias Scharwies

            --
            Die Signatur findet sich auf der Rückseite des Beitrags.
      2. Hallo

        Danke fur die Antwort aber das ist an der Frage vorbei. Das Bild zeigt einen Teil meines Formulars. Die Fehlermeldung hat mit dem Radio nichts zu tun, sondern soll den Nutzer nur darauf hinweisen das das rot makierte Feld nicht leer sin darf.

        Dazu habe ich nebenan schon etwas geschrieben.

        Ich bin nicht ganz neu. Natürlich kann ich im Radio das checked Attribut verwenden. Aber dann ist nach jedem Submit immer das gleiche Atribut vorausgewählt.

        ?

        Ich möchte aber nach submit die Auswahl des Nutzers behalten.

        Genau das hat Rolf beschrieben. Das checked-Attribut muss auf den Server in das passende Radiobutton-Element eingesetzt werden. Das ist beim ersten Aufruf vielleicht das Feld für einen Standardwert, bei erneuten Aufrufen des Formulars soll es natürlich jenes Feld sein, dass der Nutzer zuvor ausgewählt hatte.

        Entweder habe ich die Frage schlecht formuliert oder du hast mich nicht verstanden.

        … oder du hast die Antwort nicht richtig verstanden (im Sinne von interpretieren können). Das von Rolf erwähnte Affenformular verarbeitet nach dem Absenden des Formulars die Eingaben und zeigt im Falle einen fehlenden oder Fehleingabe das Formular mit den bereits korrekt ausgefüllten Eingaben und einer hilfreichen Markierung für Fehlendes oder unpassend Ausgefülltes erneut an.

        Tschö, Auge

        [edit]: Typos behoben

        --
        „Habe ich mir das nur eingebildet, oder kann der kleine Hund wirklich sprechen?“ fragte Schnapper. „Er behauptet, nicht dazu imstande zu sein“ erwiderte Victor. Schnapper zögerte (…) „Nun …“ sagte er schließlich, „ich schätze, er muss es am besten wissen.“ Terry Prattchett, Voll im Bilde
      3. Ergänzung: Du kannst auf die Hompge gehen. Dort findest du unter dem Menuepunkt ist die Rente sicher einen Rentenrechner den ich in php gemacht habe.

        1. @@Gerald

          Ergänzung: Du kannst auf die Hompge gehen.

          Nein.

          Dort findest du unter dem Menuepunkt ist die Rente sicher einen Rentenrechner den ich in php gemacht habe.

          Man findet gar nicht erst die Homepage.

          Kwakoni Yiquan

          --
          Ad astra per aspera
          1. Hallo Gunnar,

            man findet schon, wenn man dem Link-Icon unter dem Namen folgt, aber der Rentenrechner zeigt die Radiobuttons nicht.

            Dafür zeigt er sofort beim Einstieg eine Fehlermeldung an - die Form-Erzeugung unterscheidet nicht zwischen Erstaufruf (GET) und Folgeaufruf (POST).

            Im übrigen ist die Schrift viel zu klein, die gut meinten ? Helper sind schlecht gemacht – man kriegt sie nämlich nicht auf (es sei denn, man hat zufällig eine Maus zur Hand), und inhaltlich ist das Ding fragwürdig, denn es fragt mich zwar nach meinem Renteneintrittsalter, aber WIE berechnet es eine Monatsrate, wenn es gar nicht weiß, wie lange das noch hin ist? Die Miete ist eine weitere Merkwürdigkeit, ich hab doch ein Haus?!

            Die Rentenlücke ist ebenfalls reine Phantasie. Denn die Inflationsrate wird bei der Miete berücksichtigt, beim Nettoeinkommen aber nicht. Wieso nicht? Damit es dramatischer aussieht? So verarscht man Leute, die nicht rechnen können!

            Und wieso will die Seite mir Kryptowährung für meine Rente verkaufen? Gibt's das Hanfseil gleich mit dazu, wenn ich mit 68 merke, dass meine Kryptocoins gerade totspekuliert wurden?

            Uiuiui…

            Rolf

            --
            sumpsi - posui - obstruxi
            1. @@Rolf B

              man findet schon, wenn man dem Link-Icon unter dem Namen folgt

              Warum sollte man das tun? Da geht’s zur Homepage des Autors, nicht des fraglichen Projekts. Sollte jedenfalls.

              Die problematische Seite gehört ins Feld „problematische Seite“. Sind wir zu blöd, die Felder zu beschriften? 🤔

              Kwakoni Yiquan

              --
              Ad astra per aspera
    2. Hallo

      Dass die Fehlermeldung im gezeigten Zusammenhang komplett nutzlos ist, muss ich Dir sicherlich nicht sagen – ich gehe davon aus, dass Du im Experimentierstadium bist. In der Praxis muss eine Fehlermeldung sagen, in welchem Eingabefeld eine Unregelmäßigkeit festgestellt wurde und worin die Unregelmäßigkeit besteht.

      Wo die Unregelmäßigkeit aufgetreten ist, sagt uns Sehenden vermutlich die farbliche Markierung des Eingabefelds, dass weit rechts des Textes „geschätzte Kursentwicklung“ steht. Nicht oder schlecht sehenden Menschen hilft das natürlich nichts. Die brauchen zusätzliche Informationen zum konkret beanstandeten Feld. Und was da jetzt konkret falsch ist oder fehlt, weiß man auch nicht. Vermutlich muss da eine Zahl ungleich 0 rein, aber das bleibt für uns spekulativ.

      Dass selbst die optische Beziehung zwischen dem mutmaßlichen Label „geschätzte Kursentwicklung“ und dem Eingabefeld (wohl je nach Breite der Anzeige) schwer erkennbar sein kann, ist ein weiterer Punkt. Die Beschriftung des Formularfelds über das Feld selbst zu setzen, macht die Beziehung sehr viel besser erkennbar. Zumal erleichtert es das Styling in unterscheidlichen Anzeigebreiten.

      Tschö, Auge

      --
      „Habe ich mir das nur eingebildet, oder kann der kleine Hund wirklich sprechen?“ fragte Schnapper. „Er behauptet, nicht dazu imstande zu sein“ erwiderte Victor. Schnapper zögerte (…) „Nun …“ sagte er schließlich, „ich schätze, er muss es am besten wissen.“ Terry Prattchett, Voll im Bilde
      1. @@Auge

        Wo die Unregelmäßigkeit aufgetreten ist, sagt uns Sehenden vermutlich die farbliche Markierung des Eingabefelds, dass weit rechts des Textes „geschätzte Kursentwicklung“ steht. Nicht oder schlecht sehenden Menschen hilft das natürlich nichts. Die brauchen zusätzliche Informationen zum konkret beanstandeten Feld.

        Und diese Informationen gehören ins label. Siehe Seiten 56 ff. in Adam Silvers Buch Form Design Patterns. Erwähnte ich schon, dass jeder, der Webformulare baut, das Buch in seinem (virtuelle) Regal haben sollte? Und auch schon gelesen?

        Dass selbst die optische Beziehung zwischen dem mutmaßlichen Label „geschätzte Kursentwicklung“ und dem Eingabefeld (wohl je nach Breite der Anzeige) schwer erkennbar sein kann, ist ein weiterer Punkt. Die Beschriftung des Formularfelds über das Feld selbst zu setzen, macht die Beziehung sehr viel besser erkennbar. Zumal erleichtert es das Styling in unterscheidlichen Anzeigebreiten.

        Im Buch auf Seite 31.

        Kwakoni Yiquan

        --
        Ad astra per aspera
      2. OK ich dachte es kann mir jemand helfen, aber ihr zieht euch an der Frage des Fehlers und des Dessigns hoch. das hilft mir echt nicht weiter. Wie gesagt ich muß nach der Eingabe der Daten über submit das Ausgabeformular aufrufen. Zumindestens habe ich es bis jetzt so gehandhabt. Damit ist erst einmal wieder bei das mit dem checked Attribut versehene Button gewählt. Ich möchte aber das das zuvor vom Nutzer gewählte erhalter bleibt.Ich danke euch trotzdem.

        1. Hallo

          OK ich dachte es kann mir jemand helfen, aber ihr zieht euch an der Frage des Fehlers und des Dessigns hoch. das hilft mir echt nicht weiter. Wie gesagt ich muß nach der Eingabe der Daten über submit das Ausgabeformular aufrufen. Zumindestens habe ich es bis jetzt so gehandhabt. Damit ist erst einmal wieder bei das mit dem checked Attribut versehene Button gewählt. Ich möchte aber das das zuvor vom Nutzer gewählte erhalter bleibt.

          Sowohl Rolf aus auch ich haben dir unter dem Stichwort Affenformular erklärt, wie das prinzipiell geht. Es wäre an dir, anzumerken, was du an den Erklärungen nicht verstehst, falls du etwas davon nicht verstehst. Wir wissen nicht, wie weit dein eigenes Wissen reicht und auch nichts über das Umfeld (verwendete Programmiersprachen, etc.)

          Ohne solche Informationen kann dir niemand, über generelle Informationen hinaus, helfen. Mehr gab deine Problembeschreibung bis jetzt leider nicht her. Dass wir hier auch noch auf weitere offensichtliche Unzulänglichkeiten eingehen, darfst du als Bonus nehmen. Aber es ist halt nur der Bonus.

          Tschö, Auge

          --
          „Habe ich mir das nur eingebildet, oder kann der kleine Hund wirklich sprechen?“ fragte Schnapper. „Er behauptet, nicht dazu imstande zu sein“ erwiderte Victor. Schnapper zögerte (…) „Nun …“ sagte er schließlich, „ich schätze, er muss es am besten wissen.“ Terry Prattchett, Voll im Bilde
        2. @@Gerald

          OK ich dachte es kann mir jemand helfen, aber

          dass du die Hilfe nicht erkennst, dafür können wir nichts.

          Kwakoni Yiquan

          --
          Ad astra per aspera
          1. Gehe einfach auf die Hompage dann siehst du wie weit mein Wissen rech. Es ist sicher nicht perfeckt sonst würde ich nicht fragen. Mein Losungsansatz wäre den den Zustand Radio zwischen zu speichern. Eventuell über das Objekt Radio. Und dann nach Submit über das Objekt Radio den Zustand wieder herzustellen. Aber dazu reicht mein Wissen eben nicht. Vileicht habe ich mich jetzt auch wieder falsch ausgedrückt. Das ist in allem was ich bis jetzt gelesen habe leider nicht beschrieben. Ich arbeite mit Makromedia Dreamwaver 2004. Ist zwar recht alt aber funktioniert noch. Der direkte link zum fertigen Rentenrechner ist: https://blackfort24.com/rentenrechner/.

            1. Hallo gerald,

              nein, ist er nicht.

              Der richtige Link ist https://geldanlage24.online/finanzrechner/rentenrechner-blogsicher.php, diesen Webangebot bindest Du per iframe ein.

              Ich setze voraus, dass Du die Erlaubnis für diese Einbindung hast.

              Entweder hast Du sie Dir selbst gegeben, weil Du diese Unterseite selbst hostet. Scheint recht wahrscheinlich, denn laut DNS sind blackfort24.com und geldanlage24.online beide bei IONOS gehostet und haben die gleiche IP. Jedenfalls musst Du dann das rentenrechner-blogsicher.php selbst anpassen. Was darin zu tun ist, habe ich erklärt, du hast hier ein PHP Thema, kein HTML-Thema. Zur Not KÖNNTE man mit JavaScript herumbasteln - kannst Du JavaScript?

              Oder der/die Autor(in) von rentenrechner-blogsicher.php hat sie Dir gegeben, dann muss die/der die Anpassung vornehmen.

              Oder du hast sie nicht, dann ist das Thema hier erledigt…

              Das Impressum oder die Datenschutzerklärung von blackfort24 sollte den Besucher jedenfalls über die Unterseite aufklären und zumindest erwähnen, dass diese Formalseiten auch für geldanlage24.online gelten.

              Rolf

              --
              sumpsi - posui - obstruxi
            2. Hallo gerald,

              by the way - deine Seite ist rechtswidrig, was sich ein Listenkandidat einer Rechtspartei nicht erlauben sollte. Und sie lügt irrt dementsprechend in der Datenschutzerklärung.

              Gemäß Hanlons Razor unterstelle ich aber lieber gefährliches Un- bis Halbwissen statt vorsätzlichem kriminellen Handeln.

              Du kannst mir nicht erzählen, dass es legitimes Interesse sei, Cookies von translate-pa.googleapis.com und von youtube.com zu speichern. Das Blackfort-Tutorial auf der Startseite kann auch anderes verlinkt werden.

              Das Laden von Fonts von gstatic.com ist übrigens ebenfalls nicht ohne Nutzereinwilligung zulässig, diese Abrufe ermöglichen ein Tracking. Hoste die Fonts bitte selbst.

              Von schulferien.orgabird.de gibt's immerhin nur einen Session-Cookie, das ist ok. Aber wieso bindest Du deren Kalender überhaupt ein? In Hessen sind Schulferien sind, das zeigt er mir nicht an.

              Dass ihr nicht trackt - hm. Euer Forum ist anderer Meinung, es verpasst mir für ein Jahr einen "unique_id" Cookie. Das macht mich wiedererkennbar, das ist Tracking. Ich habe mich nicht ans Forum angemeldet. Wieso markiert es mich, wieso gibt es mir einen unread_cleared Cookie? Ich bestreite dein legitimes Interesse an diesen Cookies.

              Und schließlich: Der Zwang zum Chrome-Browser für die Instalation (sic!) STINKT.

              Rolf

              --
              sumpsi - posui - obstruxi
              1. Hi there.

                [...] was sich ein Listenkandidat einer Rechtspartei nicht erlauben sollte.

                Ok, daher die vielen Rechtschreibfehler, hab' mich schon gewundert...

              2. […] was sich ein Listenkandidat einer Rechtspartei in Teilen gesichert rechtsextremen Partei nicht erlauben sollte.

                Fixed this for you.

                1. Was den Rechner betrifft KOIVI HTML Form to FDF Parser for PHP (C) 2004 Justin Koivisto Version 2.1 Last Modified: 2005-04-21

                  This library is free software; you can redistribute it and/or modify it
                  under the terms of the GNU Lesser General Public License as published by
                  the Free Software Foundation; either version 2.1 of the License, or (at
                  your option) any later version.
                  
                  This library is distributed in the hope that it will be useful, but
                  WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
                  or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
                  License for more details.
                  
                  You should have received a copy of the GNU Lesser General Public License
                  along with this library; if not, write to the Free Software Foundation,
                  Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 
                  
                  Full license agreement notice can be found in the LICENSE file contained
                  within this distribution package.
                  
                  Justin Koivisto
                  justin.koivisto@gmail.com
                  http://koivi.com
                  

                  Ich denke das sollte eure Bedenken zerstreuen. Bilder Sind entweder auch frei verfügbar, oder ich habe die Genehmigung. Und den Rest des gesagten habe ich einfach überhört. Das sollte hier keine Rolle spielen. Den Rechner habe ich selber gemacht. Er ist eine eigene PHP Datei, den ich nur deshalb einbinde, da ich in Wordpress nicht in PHP programmieren kann. Natürlich hat der Rechner keine Radio es ging ja darum, das ich erst einen neuen erstellen will, und ihr gefragt habt wie weit meine Voraussetzungen sind. Zu mindestens kann ich mit Dreamweaver arbeiten und kenne mich auch einigermaßen aus. Aber ich bin kein Profi. Alles was ihr bisher gesagt habt war nur herumgeredet. Über Dessingfragen kann man streiten. Erst muss es funktionieren. Da bin ich auch immer offen. Denn meine Frage war nicht wie ich Radios erstelle, oder benutze sondern wie ich diese auch ohne „checked“ mit PHP steuern kann. Der Rechner ist natürlich noch nicht auf der HP. Aber gut ich gehe euch nicht weiter auf die Nerven. Und übrigens Ich mag zwar alt sein aber nicht doof.

                  1. @@gwerald

                    und ihr gefragt habt wie weit meine Voraussetzungen sind. Zu mindestens kann ich mit Dreamweaver arbeiten und kenne mich auch einigermaßen aus. Aber ich bin kein Profi. Alles was ihr bisher gesagt habt war nur herumgeredet.

                    Offensichtlich fehlen dir die Voraussetzungen, um das einschätzen zu können.

                    Und übrigens Ich mag zwar alt sein aber nicht doof.

                    Das Erste kann ich nicht beurteilen. Das Zweite will ich nicht beurteilen.

                    Kwakoni Yiquan

                    --
                    Ad astra per aspera
                  2. Hallo gwerald,

                    übrigens Ich mag zwar alt sein aber nicht doof.

                    Wenn nicht doof, dann informationsimprägniert. Und zu hektisch um deinen Namen schreiben zu können? Werde ruhiger, dass hilft sicher auch in der Politik.

                    Aus PHP heraus musst du checked Attribute generieren, um Radiobuttons vorab auszuwählen.

                    sondern wie ich diese auch ohne „checked“ mit PHP steuern kann

                    GAR NICHT. Du musst im PHP Script Logik einbauen, die den vom Benutzer gewählten Button mit checked versieht.

                    Mit Javascript kann man sich behelfen, das führt aber zu einer Menge von Folgeproblemen bei Handling und Datenschutz. Letzterer ist hierzu sehr wichtig, weil sensible Daten eingegeben werden. Meine Frage zu deinen Javascript Kenntnissen hast du ignoriert

                    Was diese Form to FDF Parser Lizenz mit meiner Frage nach der Nutzungserlaubnis für den Rechner zu tun hat, ist mit schleierhaft. Rechte für ein Tool und Rechte für eine Anwendung sind getrennte Dinge.

                    Rolf

                    --
                    sumpsi - posui - obstruxi
                    1. Moin,

                      Rechte für ein Tool und Rechte für eine Anwendung sind getrennte Dinge.

                      dass eine solche Erklärung nötig ist, grenzt an Realsatire: Rechte, die gerne aufs Recht pochen, haben Probleme mit Rechten.

                      Viele Grüße
                      Robert

                    2. Danke Rolf das war zu mindestens eine Antwort. Die Logik im PhP Skript kenne ich zumindest ein wenig. Ich muss sie ja auch bei Berechnungen verwenden. Allerdings verträgt sich HTML nicht sonderlich mit PHP Skript. Also mal zur meinem Ansatz. Ich wollte in PHP eine Abfrage starten ... wenn eine variable zb. 1 ist dann soll er im Formular

                      <input type="radio" name="stadt" value="Guetersloh" checked /> ausführen wenn nicht

                      <input type="radio" name="stadt" value="Guetersloh"/> Lieblingsstadt ist Guetersloh<br/>.

                      Ich kann zwar in PHP die Bedingung schreiben, aber dann kann ich nicht im PHP

                      <input type="radio" name="stadt" value="Guetersloh"/>Lieblingsstadt ist Guetersloh<br/>

                      anwenden. Wie gesagt mit Radio Button habe ich bisher nur in Formularen gearbeitet. Na Ja es ist auch schon eine Weile her da ich in PHP geschrieben habe. Ich werde weiter suchen ob ich ein Code Schnipsel finde. Bitte nicht wundern ich hab einfach mal ein kurzes Beipie geladen wo ich 3 Radio habe. Das dann auf meine Bedürfnisse zu übertragen klappt schon wenn ich dieses zum Laufen bringe. Noch ein Satz zu dir Robert. Es ist mir persönlich vollkommen egal, wie du in politischen Fragen dankst. Sie haben hier nichts zu suchen. Zu mindestens habe ich deine Äußerung so verstanden. Du hast sicher nicht richtig gelesen. Den Rechner habe ich selber erstellt. Damit habe ich auch die Rechte daran. Die Vorlege kann und soll verändert werden. Ich übersetze es dir nochmal.“ Diese Bibliothek ist freie Software; Sie können sie weiterverteilen und/oder verändern“.

                      1. Hallo Gerald,

                        gelesen haben wir dies hier und Dich auf der Liste gesehen, weshalb einige recht(s) pointierte Anspielungen fielen.

                        Vielleicht ist das auch ein Namensvetter, vielleicht auch nicht, jedenfalls ist hier ist kein Politikforum, und solange deine Webseite keine AfD-Politik verkündet, sehe ich auch keinen Anlass, sie zu boykottieren. Dass ich persönlich die Inhalte fragwürdig finde, ist genau das: persönlich. Deswegen soll es mich nicht bei Fragen zur Formularerstellung mit PHP beeinflussen.

                        Wenn Du eine Gruppe zusammengehöriger Radiobuttons auf einer Seite hast und diese sich gegenseitig ausschalten sollen, dann müssen sie alle das gleiche name-Attribut haben. Zum Beispiel name="nodes". Beim Submit kommt das in $_POST["nodes"] an – dieser Eintrag kann aber auch leer sein, wenn kein Radiobutton ausgewählt war.

                        Wenn Du die Seite generierst, hast Du vermutlich irgendwo ein Array mit den möglichen Nodes-Werten. Oder auch nicht, dann gibst Du die <input type="radio"> Elemente nacheinander aus.

                        Du musst also an 2 Stellen aktiv werden:

                        1. beim Einlesen der POST-Werte - hier musst Du $_POST["nodes"] auf Existenz prüfen. Fehlt es, setze $nodes auf 0, ansonsten auf intval($_POST["nodes"]), um den Zahlenwert zu haben.

                        2. beim Ausgeben des Formulars. Ich nehme mal an, dass Du die möglichen nodes-Werte in einem Array stehen hast, ich nenne es mal $nodes_werte.

                        ...
                        $id_nr = 0;
                        foreach ($nodes_werte as $nodes_wert):
                           $id_nr += 1;
                           $id = "nodes_$id_nr";
                        ?>
                           <input type="radio" 
                                  name="nodes" id="<?= $id ?> 
                                  value="<?= $nodes_wert ?>"
                                  <?= ($nodes == $nodes_wert ? "checked" : "") ?>>
                           <label for="<?= $id ?>"><?= $nodes_wert ?></label>
                        <?php
                        endforeach;
                        ...
                        

                        Dieser Code gibt für jeden Wert in $nodes_werte einen Radiobutton zusammen mit einem Label aus. Ist der Wert, der dem Radiobutton zugeordnet wird, mit dem gespeicherten Wert in $nodes identisch, wird für diesen Radiobutton das checked-Attribut hinzugefügt.

                        Das Label ist übrigens wichtig. Wichtig ist auch, Label und Input-Element über eine ID zu verknüpfen. Andernfalls ist die Seite nicht zugänglich.

                        Da ich für die Ausgabe der HTML Elemente den PHP-Modus verlasse (das ist deutlich eleganter als eine echo-Wüste zu produziere), verwende ich die alternative Syntax für Kontrollstrukturen. Die ist in diesem Fall besser lesbar als die geschweiften Klammern.

                        Das Einsteuern von PHP-Werten mit dem Echo-Tag <?= ... ?> kennst Du?

                        Den ternären Bedingungs-Operator ?: kennst Du auch?

                        Die Zeilenumbrüche im input-Element sind nur für die Lesbarkeit im Forum.

                        Rolf

                        --
                        sumpsi - posui - obstruxi
                        1. Danke Rolf für dein Statement. Du hast dir offensichtlich, im Gegensatz zu anderen den Inhalt der Hp gelesen. Ich bin 100% deiner Meinung. Politisch Hp’s sind in einem Hilfechat immer kritisch. Die Hp hat allerdings keinen politischen Charakter. Sicher kann man sich über einige Aussagen streiten. Ich will eigentlich nur Anregungen für den Benutzer geben, über ihre finanzielle Situation nach zu denken. Ich habe so gut es mir möglich ist, die verschiedenen Anlageformen und auch Rentenformen abgehadelt. Natürlich liegt letztendlich der Schwerpunkt auf der Kryptowährung. Ich denke das wird in Zukunft für alle wichtig werden. Ich komme voraussichtlich erst am Wochenende wieder dazu, an der HP zu arbeiten. Ja der echo –Tag ist mir bekannt. Den habe ich ja auch im Rechner verwendet. Zusätzlich arbeite ich vorrangig mit Strings. Ich wandele Zahlen erst bei der Ausgabe um. Beispiel: <input name="nettoverdienst" type="text" value="<?php echo number_format($nettoverdienst,2, ",", ".") ; ?>" <?php if ( !floatval($nettoverdienst) > 0) {echo 'class="error"'; $fehler=1;} ?> size="10">&euro; Dadurch kann ich Fehler bei den Eingaben abfangen. Es ist sicher nicht die eleganteste Lösung, aber es hat sich einfach bewährt. Außerdem kann ich dann gleich eine Fehlerbehandlung machen. Ich werde mich am Wochenende mit deinem Vorschlag befassen. Das was ich bereits gesehen habe ist, das du eine Schleife durchläufst. Damit wird es unabhängig von der Anzahl der Radio. Ich danke dir erst einmal Gerald

                          1. Moin Gerald,

                            da dieses Forum (eine Art) Markdown verwendet, wird ein einzelner Zeilenvorschub zu einem Leerzeichen und der Text landet in einer Zeile. Das hätte Dir in der Vorschau auffallen können.

                            Einen neuen Absatz kennzeichnest Du durch eine Leerzeile dazwischen.

                            Politisch Hp’s sind in einem Hilfechat immer kritisch.

                            Das SELFHTML-Forum ist – wie der Name schon sagt – ein Forum und kein Chat!

                            Ja der echo –Tag ist mir bekannt.

                            Es gibt ein „echo-Tag“ in HTML? Das wäre mir neu. Meinst Du das gleichnamige PHP-Sprachkonstrukt?

                            Ich wandele Zahlen erst bei der Ausgabe um. Beispiel:

                            <input name="nettoverdienst" type="text" value="<?php echo number_format($nettoverdienst,2, ",", ".") ; ?>" <?php if ( !floatval($nettoverdienst) > 0) {echo 'class="error"'; $fehler=1;} ?> size="10">&euro;
                            

                            Dadurch kann ich Fehler bei den Eingaben abfangen. Es ist sicher nicht die eleganteste Lösung, aber es hat sich einfach bewährt. Außerdem kann ich dann gleich eine Fehlerbehandlung machen.

                            Serverseitige Validierung ist auf jeden Fall immer notwendig – wenn man sie richtig macht: Geldbeträge sollte man niemals als Floating Point Zahlen behandeln! Durch die Darstellung zur Basis 2 (anstelle von 10) können zwangsläufig nicht alle benötigten Zahlen dargestellt werden – selbst mit nur zwei Nachkommastellen. Stattdessen rundet der Computer und es können „Beträge verloren gehen“.

                            (Sind die Cent des Nettoverdiensts bei der Berechnung überhaupt notwendig?)

                            Zusätzlich ist natürlich auch clientseitige Validierung dringend zu empfehlen.

                            Für <?php echo?> kennt PHP die alternative Syntax <?=?>, die der Lesbarkeit dient. Und !floatval($nettoverdienst) > 0 ist natürlich das Gleiche wie floatval($nettoverdienst) <= 0

                            Viele Grüße
                            Robert

                          2. Moin Gerald,

                            meine zweite Antwort ist weniger inhaltlich als mehr auf der Meta-Ebene.

                            Ich will eigentlich nur Anregungen für den Benutzer geben, über ihre finanzielle Situation nach zu denken.

                            Prinzipiell eine gute Idee, wobei es natürlich nichts ohne Risiko gibt. Klar ist jedenfalls, dass ein(e) Ehepartner(in) keine Altersvorsorge ist.

                            Ich habe so gut es mir möglich ist, die verschiedenen Anlageformen und auch Rentenformen abgehadelt. Natürlich liegt letztendlich der Schwerpunkt auf der Kryptowährung. Ich denke das wird in Zukunft für alle wichtig werden.

                            Eine hochspekulative, äußerst volatile, von unseriösen Anbietern durchsetzte Anlage ist IMHO ein ähnlich sicheres Investment wie ein Online-Casino oder Sportwetten. Es gibt dort meines Wissens noch nicht einmal eine Einlagensicherung.

                            Ich werde mich am Wochenende mit deinem Vorschlag befassen. Das was ich bereits gesehen habe ist, das du eine Schleife durchläufst. Damit wird es unabhängig von der Anzahl der Radio. Ich danke dir erst einmal Gerald

                            Sofern die geäußerten Vermutungen über Deine Person stimmen, stellt sich nach dem Lesen dieses Absatzes die gleiche Frage, die sich in diesem politischen Umfeld immer wieder stellt: Warum ist denjenigen, denen „Deutschland“ oder eine „deutsche Kultur“ so wichtig erscheint, die deutsche Sprache eigentlich so egal? Sprache ist ein essentieller Teil einer Kultur.

                            Viele Grüße
                            Robert

                            1. Hallo Robert,

                              Ich habe so gut es mir möglich ist, die verschiedenen Anlageformen und auch Rentenformen abgehadelt. Natürlich liegt letztendlich der Schwerpunkt auf der Kryptowährung. Ich denke das wird in Zukunft für alle wichtig werden.

                              Eine hochspekulative, äußerst volatile, von unseriösen Anbietern durchsetzte Anlage ist IMHO ein ähnlich sicheres Investment wie ein Online-Casino oder Sportwetten. Es gibt dort meines Wissens noch nicht einmal eine Einlagensicherung.

                              In dem Zusammenhang sei auch die Website „Web3 is Going Just Great“ von der großartigen Molly White erwähnt.

                              Freundliche Grüße,
                              Christian Kruse

                          3. Hallo Rolf. Ich habe zwar einen kleinen Fehler in deiner Vorlage gefunden, aber das Teil geht trotzdem nicht. Ich denke nunmehr bin ich betriebsblind. Ich poste mal den Code rein. In Dreamweaver sieht es ganz gut aus. Ach grafisch sollte es passen Weiß der Geier. Vielleicht hab ich es falsch interpretiert. Eventuell müssen die $ weg. Vielleicht siehst du es sofort. Danke Gerald

                            <form action="stadtauswahltest.php" method="post">
                            
                            <p>Wählen Sie ihre Lieblingsstadt aus</p>
                            
                            
                            
                            <?php
                            $id_nr = 0;
                            foreach ($Guetersloh as $Warendorf){
                               $id_nr += 1;
                               $id = "stadt _$id_nr";}
                            ?>  
                            
                               <input type="radio" 
                                      name="stadt" id="<?= $id ?>"
                                      value="<?= $Guetersloh ?>"
                                      <?= ($stadt == $Guetersloh ? "checked" : "") ?>/>
                            		  
                               <label for="<?= $id ?>"><?= $Guetersloh ?> Guetersloh 
                            
                               <input type="radio" 
                                      name="stadt" id="<?= $id ?>" 
                                      value="<?= $Bielefeld?>"
                                      <?= ($stadt == $Bielefeld ? "checked" : "") ?>/>
                               <label for="<?= $id ?>"><?= $Bielefeld ?> Bielefeld 
                               
                               <input type="radio" 
                                      name="stadt" id="<?= $id ?>" 
                                      value="<?= $Warendorf ?>"
                                      <?= ($stadt == $Warendorf ? "checked" : "") ?>/>
                               <label for= "<?= $id ?>"> <?= $Warendorf ?>  Warendorf 
                               <input type="submit" value="senden"/>
                            
                            </form>
                            
                            <?php
                            endforeach;
                            
                            
                            echo $id;
                            
                            
                            $x =  $_POST['stadt'];
                            echo $x;
                            if ($x=="Guetersloh") $a=1;
                            if ($x=="Bielefeld") $a=2;
                            if ($x=="Warendorf") $a=3;
                            echo "    ";
                            echo $a;  
                            
                            
                            ?>
                            
                            1. Hallo Robert ich glaube ich habe keinen Link zu INHO gesetzt. Hast du einen gefunden, dann werde ich es überarbeiten. Ich bin nicht beratungsresistent. Allerdings muss ich ja wenigstens die Quelle benennen. Und die Aussagen sind nach meiner Meinung OK gewesen. Letztlich muss jeder selber entscheiden welche Risiken er eingeht. Wenn du im Internet so ran gehst darfst du keine Homepage mehr lesen. Ich denke du hast dich auf mich eingeschossen, warum auch immer.
                              Die HP ist sehr umfangreich, es muss jeder wissen was er verwenden kann. "Jedem Menschen Recht getan, ist eine Kunst die niemand kann." Noch eines Robert vielleicht unterlaufen mir ab und zu Schussel Fehler Ich entschuldige mich in aller Form bei dir.

                              1. Hallo Gerald,

                                Du wolltest vermutlich auf meinen Kommentar antworten. Warum Du deine Antwort auf mich als Antwort an Dich schreibst, vermag ich nicht zu beantworten. Ich habe sie jedenfalls nur durch Zufall entdeckt, weil ich mir den gesamten Thread und nicht nur die „meine Beitragsstränge“ angeschaut habe.

                                Ich möchte Dich zur Vermeidung von Chaos bitten deine Antwort an der richtigen Stelle noch einmal zu posten. Das Duplikat hier kann dann entfernt werden. Oder kann eine Antwort auch im Forum verschoben werden?

                                Vielen Dank und viele Grüße
                                Robert

                                1. Hallo Robert,

                                  Kann man eine Antwort in einen anderen Teilbaum verschieben?

                                  Nein

                                  Rolf

                                  --
                                  sumpsi - posui - obstruxi
                            2. Hallo Gerald,

                              Ich bin nicht ganz neu
                              Und übrigens Ich mag zwar alt sein aber nicht doof.

                              Du arbeitest hart am Beweis des Gegenteils.

                              Eventuell müssen die $ weg.

                              Ja. Eventuell. Ist Dir der Unterschied zwischen Variable, Konstante und Zeichenkette bekannt? Ist Dir die foreach-Schleife bekannt? Ist Dir überhaupt bekannt, was eine Schleife ist?! Dein Codehaufen beweist, dass die Antwort auf diese Fragen jedesmal NEIN lautet.

                              Ich kann Dir hier nicht Programmieren oder die Sprache PHP beibringen. Das musst Du selbst tun, das PHP Handbuch ist eigentlich ziemlich gut. Verwende – beispielsweise – https://onlinephp.io, um PHP Codeschnipsel auszuprobieren (Forms gehen da allerdings nicht).

                              Vergleiche nochmal die Voraussetzungen, die ich für meinen Codeschnipsel beschrieben habe. Da war kein Fehler drin, lediglich die Variablen $nodes_werte und $nodes habe ich nicht vorbelegt, weil ich schrieb, dass ich deren Existenz voraussetze. Wenn das in deinem Experimentiercode jetzt Städte sind, dann benenne sie entsprechend um und befülle sie entsprechend.

                              Wichtig ist auch, dass man ERST die POST-Werte einliest (und auf Verwendbarkeit prüft), bevor man die Antwortseite ausgibt. Eine Abfrage wie ($stadt == $Warendorf ? "checked" : "") setzt voraus, dass in $stadt der value des Warendorfer Radiobuttons steht.

                              Und vor allem setzt diese Abfrage voraus, dass in $Warendorf ein sinnvoller Wert steht. Zum Beispiel "Warendorf". Aber das widerspricht der Schleifenidee. Die Schleifenlösung setzt voraus, dass es ein Array wie $staedte gibt, in dem die Städtenamen stehen. Die foreach-Schleife durchläuft dieses Array dann und platziert pro Durchlauf einen Array-Eintrag in der Variablen hinter dem as. Individuelle Städtenamen tauchen in der Schleife nicht auf.

                              Guck Dir auf onlinephp.io mal an, was dieser Code tut:

                              $staedte = ARRAY("Gütersloh", "Bielefeld", "Warendorf");
                              foreach ($staedte as $stadt):
                              ?>
                                 <p><?= $stadt ?></p>
                              <?php
                              endforeach;
                              

                              Und dann versuche mal, deinen Code zu verbessern.

                              Rolf

                              --
                              sumpsi - posui - obstruxi
                              1. Hallo Rolf ich kann mich ja irren. Deine Zeile bei dir lautete name="nodes" id="<?= $id ?> ich denke sie sollte heißen name="nodes" id="<?= $id ?>" aber ich zweifel schon langsam an mir selber. ich habe lange nichts mehr gemacht und ich merke es wird Zeit wieder an zu fangen. Das war wenn ich recht haben sollte keine Kritik. kommt schon mal vor. Ja im Prinzip ist mir die foreach-Schleife bekannt. Allerdings muss ich sagen im Moment bringe ich wahrscheinlich alles durcheinander. In Pascale würde das etwa lauten for intI := 1 to 10 do . Also von i=1 bis 1=10 durchlaufen. Dabei ist int ein Integer. Aber das ist eigentlich für den Fall hier egal. Ich werde mir also Stück für Stück die den Syntax in Php noch einmal ansehen.

                                Also grob gesagt ist HTML Text orientiert und wird auf dem Rechner des Benutzers ausgeführt, PHP ist vergleichbar mit einer Programmiersprache und wird auf dem Server des Webspaces ausgeführt. Das Grrundgerüst Von HlmL ist vereinfacht etwa so <!DOCTYPE html> <html lang="de"> <head> :der Kopf <meta charset="utf-8"> :Definition <title>Titel</title> :Der Seiten Name <link href="design.css" > einbinden von Stilvorlagen </head> <body> <p>Der Inhalt der Seite</p> </body> </html>

                                Im PHP stehen die Anweisungen zwischen <?php ?> Wobei es an einer festen Syntax gebunden ist Es gibt Konstanten const ; Variablen $ wird verwendet um Weite zu speichern Dateitypen sind boolean, (wahr oder unwahr) integer,(ganze Zahl mit oder ohne Vorzeichen) float,( Gleitkommazahlen) String,(Text), Array (liste von Werten des gleichen Typs)und Object(können mehrere verschieden Konstanten, Variablen und Funktionen enthalten. Sie gehören zum selben Objekt. Mit Objekten aber ich nur ansatzweise in Pascale gearbeitet Der Datentyp einer Variablen wird wenn nichts angegeben ist automatisch zu gewiesen Die ganzen Funktionen kenne ich nicht all. Nur die wichtigsten zb. echo. Ich denke das sind in etwa meine vorhandenen Grundlagen Gruß Gerald

                                1. Hallo Gerald,

                                  ich denke sie sollte heißen name="nodes" id="<?= $id ?>"

                                  Mjam, mjam, urrgh, mjam, kotz - die eigenen Worte fressen zu müssen ist echt die übelste Speise von allen.

                                  Vermutlich wär's mir aufgefallen wenn ich das Form wirklich gepostet hätte.

                                  (mir ist) die foreach-Schleife bekannt. (...). In Pascale würde das etwa lauten for intI := 1 to 10 do .

                                  Nein, diese Schleife würde in PHP als for ($i=1; $i<=10; $i++) notiert werden.

                                  In dem Pascal, das man mir in den 80er Jahren des letzten Jahrtausend eingetrichtert hat, würde die foreach-Schleife gar nicht existieren. In neueren Versionen von Delphi oder FreePascal gibt's aber die for...in-Schleife (for strStadt in strStadtArray do), und das ist äquivalent zu foreach in PHP. In JavaScript wäre es die for...of-Schleife. Der Unterschied zwischen PHP einerseits und Pascal/JavaScript andererseits ist, dass in PHP das Array vorn steht (vor dem AS) und bei den anderen hinten (hinter dem IN bzw. OF).

                                  Dieser Schleifentyp setzt eine Collection (Array, Liste, etc) voraus, die iterierbar ist. Das heißt: sie kennt Operationen wie: geh zum Anfang, geh zum Nächsten, gib mir den aktuellen Wert. In PHP geht das mit Arrays (und anderem, aber das geht jetzt zu weit)

                                  Also grob gesagt ist HTML Text orientiert und wird auf dem Rechner des Benutzers ausgeführt

                                  Text - ja. Ausgeführt – nein, HTML wird nicht ausgeführt. HTML Tags sind keine Befehle. HTML ist keine Programmiersprache, sondern eine Beschreibungssprache (das ist mein Inhalt). Zusammen mit CSS (so soll es aussehen) wird dann ein Seitenlayout daraus.

                                  PHP ist vergleichbar mit einer Programmiersprache und wird auf dem Server des Webspaces ausgeführt.

                                  Da sprichst Du ein wahres Wort gelassen aus. Aber, good news, mittlerweile ist PHP so weit gereift, dass es nicht nur sowas ähnliches wie eine Programmiersprache ist, sondern sogar eine richtige Programmiersprache 😉

                                  Das schicke an PHP ist, dass man nicht alles zwischen <?php und ?> schreiben muss. Man kann zwischen zwei beliebigen Befehlen den PHP Modus mit ?> beenden, HTML ausgeben und dann mit <?php zu PHP zurückkehren, sogar innerhalb eines Schleifenblocks. Und, wie Du auch gesehen hast, lässt sich <?php echo $wert; ?> durch <?= $wert ?> abkürzen.

                                  Wenn Du feststellst, dass Du größere HTML-Mengen mit ECHO ausgibst, dann solltest Du sofort innehalten und überlegen, wie Du geschickt den PHP-Modus verlässt und das HTML direkt ausgibst. Gelegentlich kommt man nicht drumherum, HTML aus Strings zu konstruieren. Aber das ist selten.

                                  Ich empfehle Dir wirklich die Grundlagenkapiten des PHP Handbuchs.

                                  Rolf

                                  --
                                  sumpsi - posui - obstruxi
                                  1. @@Rolf B

                                    Mjam, mjam, urrgh, mjam, kotz - die eigenen Worte fressen zu müssen ist echt die übelste Speise von allen.

                                    (mir ist) die foreach-Schleife bekannt. (...). In Pascale würde das etwa lauten for intI := 1 to 10 do .

                                    Nein, diese Schleife würde in PHP als for ($i=1; $i<10; $i++) notiert werden.

                                    Auch dies kannste wieder – mjam, mjam, … – fressen.

                                    Kwakoni Yiquan

                                    --
                                    Ad astra per aspera
                                    1. Hallo Gunnar,

                                      vor dem Schreiben habe ich noch gedacht: das ist ein <=. Wieso ich das dann nicht getippt habe, ist mir schleierhaft.

                                      knurpsel, krrk, ptuf

                                      Rolf

                                      --
                                      sumpsi - posui - obstruxi
                            3. Moin Gerald,

                              […] aber das Teil geht trotzdem nicht.

                              Es geht nichts über eine konkrete Fehlerbeschreibung.

                              Ich denke nunmehr bin ich betriebsblind.

                              Angesichts des im Folgenden präsentierten Codes wäre die Frage, welcher Betrieb damit gemeint ist. Wie sind denn deine Kenntnisse in Bezug auf HTML und PHP? Das ist wichtig für uns zu wissen, damit wir dir zielgerichtet helfen können.

                              <form action="stadtauswahltest.php" method="post">
                              
                              <p>Wählen Sie ihre Lieblingsstadt aus</p>
                              
                              <?php
                              $id_nr = 0;
                              foreach ($Guetersloh as $Warendorf){
                                 $id_nr += 1;
                                 $id = "stadt _$id_nr";}
                              ?>  
                              
                                 <input type="radio" 
                                        name="stadt" id="<?= $id ?>"
                                        value="<?= $Guetersloh ?>"
                                        <?= ($stadt == $Guetersloh ? "checked" : "") ?>/>
                              		  
                                 <label for="<?= $id ?>"><?= $Guetersloh ?> Guetersloh 
                              
                                 <input type="radio" 
                                        name="stadt" id="<?= $id ?>" 
                                        value="<?= $Bielefeld?>"
                                        <?= ($stadt == $Bielefeld ? "checked" : "") ?>/>
                                 <label for="<?= $id ?>"><?= $Bielefeld ?> Bielefeld 
                                 
                                 <input type="radio" 
                                        name="stadt" id="<?= $id ?>" 
                                        value="<?= $Warendorf ?>"
                                        <?= ($stadt == $Warendorf ? "checked" : "") ?>/>
                                 <label for= "<?= $id ?>"> <?= $Warendorf ?>  Warendorf 
                                 <input type="submit" value="senden"/>
                              
                              </form>
                              
                              <?php
                              endforeach;
                              
                              1. Du schließt das form-Element nach jedem Schleifendurchlauf anstatt nach dem Ende der Schleife.
                              2. Jeder Radio-Button hat die gleiche ID. Das ist nicht nur verboten, sondern auch falsch, weil eine ID eindeutig sein muss. Daher beziehen sich alle label bei Dir auch auf den gleichen Radio-Button.
                              3. Zur foreach-Schleife hat Rolf schon etwas geschrieben.
                              echo $id;
                              

                              Das gibt die letzte ID aus der Schleife aus.

                              Viele Grüße
                              Robert

                              1. Hallo Rolf Ich habe jetzt einen für mich einfacheren Ansatz gewählt. An sich geht es auch. Aber eines geht nicht. Beim Start ist Auswahl ="". Ich habe eigentlich dieses ab getestet. Er müsste diese auf 1 setzen also das erste Element. Macht er aber nicht. Wenn die erste Auswahl eines Radio gewählt ist arbeitet es ordentlich. was mache ich nun wieder falsch?

                                <form action="Radio.php" method="post">
                                
                                <td colspan="6">        <p>
                                        <?php
                                
                                $WZ = array ('1' => '100' , '2' => '200' , '3' => '1000' , '4' => '2000' , '5'=> '5000' , '6' => '10000' , '7' => '20000' , '8' => '50000');
                                
                                foreach ($WZ as $wert => $bezeichner) {
                                	if ($_POST['Auswahl']=="") {$HTTP_POST_VARS['Auswahl'] = "1";
                                       ?>
                                        <input type="radio" name="Auswahl"  value="<?php echo $wert; ?>" 
                                		<?php if ($wert == $_POST['Auswahl']) { echo 'checked="checked"'; $test = $bezeichner; } ?>>
                                        <?php  
                                         echo $bezeichner;    		
                                	}
                                	else
                                	{	
                                		?>
                                        <input type="radio" name="Auswahl"  value="<?php echo $wert; ?>" 
                                		<?php if ($wert == $_POST['Auswahl']) { echo 'checked="checked"'; $test = $bezeichner; } ?>>
                                        <?php 
                                         echo $bezeichner; 
                                		  
                                		  
                                	}
                                }
                                
                                	?> 
                                	<input name="submit" type="submit"> 
                                	
                                	</form>
                                	<?php
                                 if(isset($_POST["submit"])){
                                        echo $_POST["Auswahl"] . " ist aktuell";
                                    }
                                ?>
                                
                                1. Hallo Gerald,

                                  ich habe viel zu meckern, aber irgendwo darin ist auch die Antwort auf deine Frage 😉

                                  $HTTP_POST_VARS['Auswahl'] = "1";

                                  PHP 5.4 guckt verwirrt: „DAS HABE ICH DOCH ABGESCHAFFT!“. Welche PHP Version verwendest Du?

                                  Bereits seit PHP 4.1 gibt es $_GET und $_POST, um auf URL-Parameter und POST-Body zuzugreifen. Diese Variablen werden intern anders konstruiert und haben Performancevorteile. In PHP 5 gab es anfangs noch Kompatibilitätsoptionen, um die Langversion (also $HTTP_GET_VARS und $HTTP_POST_VARS) zu simulieren, aber mit PHP 5.4 wurde das endgültig abgeschafft. Es gab sicher auch Gründe für die Umbenennung, aber die kenne ich nicht.

                                  Ich weiß auch gar nicht, warum Du das zuweist, zumindest im gezeigten Code verwendest Du es nicht. Eine Zuweisung an $HTTP_POST_VARS wird nicht in $_POST reflektiert. Deshalb funktioniert dein Code nicht.

                                  Und dann hast Du ein mächtig umständliches Konstrukt in der Schleife. Das sieht - abstrahiert - so aus:

                                  if (bedingung) {
                                     aktion 1;
                                     aktion 2;
                                  }
                                  else {
                                     aktion 2;
                                  }
                                  

                                  Solche Code-Duplikate sind extrem fehleranfällig, wenn man etwas am Programm ändert, muss man immer darauf achten, beides zu ändern. Daher kommt das Clean Code Prinzip DRY (don't repeat yourself). In deinem Fall wäre das so besser:

                                  if (bedingung) {
                                     aktion 1;
                                  }
                                  aktion 2;
                                  

                                  Und wenn Du das tust, erkennst Du, dass diese Abfrage gar nicht in der Schleife stehen muss.

                                  if ($_POST['Auswahl']=="")

                                  Ich würde Dir empfehlen, vor der foreach-Schleife zu testen, ob dieser Wert überhaupt existiert. Wenn in der Radiogruppe nichts ausgewählt ist, fehlt der Eintrag nämlich und es gibt eine Warning zu einem fehlenden Array-Key. Ab PHP 7 macht Dir der "null coalescing operator" ?? das Leben dafür leichter:

                                  $auswahl = $_POST['Auswahl'] ?? "1";
                                  

                                  Der ?? Operator liefert das, was links von ihm steht, solange es ein definierter Wert ist. Er unterdrückt auch die Warnmeldung zum fehlenden Key. Fehlt der Array-Eintrag oder enthält das Array an dieser Stelle NULL, bekommst Du den Wert rechts vom ??.

                                  Diese eine Zeile schreibt Dir also in $auswahl den value des gewählten Radiobuttons, oder "1", wenn keiner ausgewählt ist.

                                  Als nächstes solltest Du sicherstellen, dass diese Auswahl auch gültig ist:

                                  if (!array_key_exists($auswahl, $WZ)) {
                                     $auswahl = "1";
                                  }
                                  

                                  Ggf. ist ein unbekannter Wert für $auswahl sogar eine Fehlerbedingung.

                                  Dann noch zum input-Element und seiner Erzeugung:

                                  <input type="radio" name="Auswahl"  value="<?php echo $wert; ?>" 
                                  		<?php if ($wert == $_POST['Auswahl']) { echo 'checked="checked"'; $test = $bezeichner; } ?>>
                                          <?php  
                                           echo $bezeichner;  
                                  

                                  Schade eigentlich, dass Du meine Hinweise für modernen PHP Code einfach ignorierst.

                                  • Statt <?php echo $wert ?> verwendet man <?= $wert ?>.
                                  • Statt einer IF-Anweisung kannst Du den bedingten Operator ?: verwenden
                                  • checked="checked" braucht man nur, wenn man XML-kompatibel sein will (also XHTML oder polyglottes HTML). Ansonsten reicht einfach checked.

                                  Schade auch, dass Du meinen Hinweis zur Zugänglichkeit ignorierst. Ein input-Element braucht zwingend ein Label. Die Verbindung zwischen den beiden muss über eine ID hergestellt werden. Es gibt zwar auch die Möglichkeit, das input-Element als Kind-Element des labels zu erstellen, aber es gibt wohl Screenreader-Software, die damit nicht klarkommt.

                                  <?php
                                  
                                  // ...
                                  
                                  $auswahl = $_POST['Auswahl'] ?? "1";
                                  if (!array_key_exists($auswahl, $WZ)) {
                                     $auswahl = "1";
                                  }
                                  $id_nr = 0;
                                  foreach ($WZ as $wert => $bezeichner):
                                     $id_nr += 1;
                                     $id = "radio_$id_nr";
                                  ?>
                                     <input type="radio" id="<?= $id ?>"
                                            name="Auswahl"  value="<?= $wert ?>"
                                            <?= ($wert == $auswahl) ? "checked" : "" ?>>
                                     <label for="<?= $id ?>"><?= $bezeichner ?></label>
                                  <?php
                                  endforeach;
                                  

                                  Ob Variablennamen wie $wert und $bezeichner passend sind, kann man diskutieren. Ich hätte ja direkt die Menge im value-Attribut gespeichert und ein normales Array genommen, kein assoziatives Array. Die Existenzabfrage kann man dann mit in_array($auswahl, $WZ) machen. Aber das ist Deine Sache.

                                  Und dann noch

                                  <input name="submit" type="submit"> 
                                  

                                  Dafür nimmt man heutzutage das <button>-Element. Vorteil ist, dass man seinen Inhalt einfacher festlegen kann. Du hast keinen value festgelegt, deswegen wird der Browser da "Senden" anzeigen, und du wirst in $_POST['submit'] auch den Wert "Senden" vorfinden. Spätestens wenn Du mehr als einen Submit-Button hast, wird das umständlich. Da sollte man einen Namen mit unterschiedlichen Values haben, und je nach Value die Aktion auswählen.

                                  Der Nachteil von <input> ist, dass der angezeigte Text und der value identisch sind, d.h. du hast eine Abhängigkeit zur Textdarstellung in deinem Programmcode. Das ist unschön. Der Button trennt das:

                                  <button type="submit" name="rente" value="rechnen">Berechnen</button>
                                  

                                  Du kannst bei <button> sogar ein Icon zum Text hinzufügen, das geht bei <input> nicht.

                                  Rolf

                                  --
                                  sumpsi - posui - obstruxi
                                  1. Mir raucht der Kopf. Aber ich bemühe mich. Zur Information Ich habe dummerweise einfach auf einen meiner altern Scrips zurückgegriffen. Deswegen habe ich dort wahrscheinlich mit der alten PHP Version gearbeitet. Wenn ich die Sache so bedenke hoffe ich das Dreamweaver trotzdem noch korrekt arbeitet. Auf dem Server ist PHP 8.6.2. So langsam dämmert es mir warum einiges unter Wordpress nicht mehr ging als ich umgestellt habe. Mein Themes hatte nicht mehr funktioniert deswegen musste ich erst einmal zurückstellen und ein neues wählen damit Wordpress überhaupt gestartet hatte. Ich hatte ja gesagt, dass ich lange nichts mehr gemacht habe. Aber ich bin dir ja dankbar, dass du mir auf die Sprunge hilfst. Das bedeutet natürlich, dass ich nach und nach mein anderes Zeug auch überarbeiten muss falls ich es nochmal einsetzen will. Mir ist schon jetzt übel.

                                    1. Hallo Gerald,

                                      Auf dem Server ist PHP 8.6.2

                                      Nein. 8.2.6 würde ich Dir glauben, aber 8.6.x gibt's frühestens in 3 Jahren.

                                      Eine 8.2.6 sollte aber auf 8.2.18 upgedated werden, sicherheitshalber (wobei das auf einem Mietserver nicht in deiner Hand ist...).

                                      Mir ist schon jetzt übel

                                      Ja, Legacycode ist zum Kotzen. Vor allem bei PHP, das tröpfchenweise von einem Schrotthaufen zu einer brauchbaren Sprache saniert wird.

                                      Rolf

                                      --
                                      sumpsi - posui - obstruxi
                                2. Moin G(e)rald,

                                  wenn Du auf eine Antwort von @Rolf B antworten möchtest, tu das bitte auch. Ich bin Robert und definitiv eine andere Person als Rolf 😉

                                  Ich habe jetzt einen für mich einfacheren Ansatz gewählt. An sich geht es auch. Aber eines geht nicht. Beim Start ist Auswahl ="". Ich habe eigentlich dieses ab getestet. Er müsste diese auf 1 setzen also das erste Element. Macht er aber nicht.

                                  Dann funktioniert es entgegen der Aussage des ersten Satzes eben doch nicht.

                                  Wenn die erste Auswahl eines Radio gewählt ist arbeitet es ordentlich. was mache ich nun wieder falsch?

                                  Auf meine Beobachtungen in Deinem Code komme ich gleich. Vorab möchte ich Dich bitten, einmal kurz zu formulieren, was Du genau vorhast. Oft bewirkt eine solche Formulierung die ersten „Aha-Momente“ und es wird klarer, wo es klemmt.

                                  Jetzt spezifisch zu Deinem Code:

                                  <form action="Radio.php" method="post">
                                  
                                  <td colspan="6">        <p>
                                  

                                  form darf kein td enthalten.

                                  Den folgenden Code habe ich der Lesbarkeit umbrochen und einige kleine Abkürzungen durchgeführt:

                                  <?php
                                  $WZ = array ('1' => '100', '2' => '200', '3' => '1000',
                                               '4' => '2000', '5'=> '5000', '6' => '10000',
                                               '7' => '20000', '8' => '50000');
                                  
                                  foreach ($WZ as $wert => $bezeichner) {
                                      if ($_POST['Auswahl']=="") {
                                          $HTTP_POST_VARS['Auswahl'] = "1";
                                          ?>
                                          <input type="radio" name="Auswahl" value="<?= $wert ?>" 
                                          <?php if ($wert == $_POST['Auswahl']) {
                                              echo 'checked="checked"'; $test = $bezeichner;
                                          } ?>>
                                          <?php
                                          echo $bezeichner;    		
                                      }
                                      else {	
                                          ?>
                                          <input type="radio" name="Auswahl" value="<?= $wert ?>" 
                                          <?php if ($wert == $_POST['Auswahl']) {
                                              echo 'checked="checked"'; $test = $bezeichner;
                                          } ?>>
                                          <?php 
                                          echo $bezeichner;		  
                                      }
                                  }
                                  ?>
                                  
                                  1. Abgesehen von der Zuweisung an $HTTP_POST_VARS['Auswahl'] sind beide Zweige deiner Abfrage gleich, es wird exakt der gleiche Code ausgeführt.
                                  2. Kann es sein, dass $HTTP_POST_VARS früher einmal synonym zu $_POST war? Es ist jedenfalls keine vordefinierte Variable (mehr) und daher führt die Zuweisung daran zu keiner Änderung von $_POST['Auswahl'].
                                  3. In der äußeren if-Bedingung kann daher $wert == $_POST['Auswahl'] nie erfüllt sein: Dein Array enthält keinen leeren String.
                                  4. Falls $wert == $_POST['Auswahl'] erfüllt ist, ist der HTML-Code für deinen Radio-Button auf Grund eines fehlenden Leerzeichens ungültig:
                                  <input type="radio" name="Auswahl" value=""checked="checked">
                                  
                                  1. Deine Radio-Buttons habe keine labels.
                                  2. $test wird nie ausgewertet.
                                  <input name="submit" type="submit"> 
                                  

                                  Der Absendebutton hat eine vom Browser vorgegebene Default-Beschriftung, weil der value fehlt.

                                  Viele Grüße
                                  Robert

                                  1. @@Robert B.

                                    Moin G(e)rald,

                                    wenn Du auf eine Antwort von @Rolf B antworten möchtest, tu das bitte auch. Ich bin Robert und definitiv eine andere Person als Rolf 😉

                                    Schraubst du deine Erwartungen, dass jemand, der seinen eigenen Namen nicht schreiben kann, fremde Namen lesen könnte, nicht etwas zu hoch?

                                    Kwakoni Yiquan

                                    --
                                    Ad astra per aspera
                                    1. Moin Gunnar,

                                      Schraubst du deine Erwartungen, dass jemand, der seinen eigenen Namen nicht schreiben kann, fremde Namen lesen könnte, nicht etwas zu hoch?

                                      so gesehen habe ich auf meine Frage auch noch keine Antwort von ihm bekommen … 🤔

                                      Schönes Wochenende
                                      Robert