Problem mit Formulardaten

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

  • Problem mit Formulardaten

    Ich habe eine Reihe von Checkboxen, die in einem Formular zusammengefasst an die nächste Seite übermittelt werden.

    Dort würde ich gerne überprüfen, welche davon markiert waren.
    Mittels 'isset' ist das ja möglich, da nicht markierte ja nicht übermittelt werden.

    Die Namen der Checkboxen lauten $Nummer1, $Nummer2, ...

    Auf der nächsten Seite möchte ich diese in einer Schleife abfragen und den value in ein Array speichern.

    PHP-Code:
    for($i=1;$i<20;$i++)
    {
       if(isset(
    "$Nummer".$i))
       {
          array[
    $i]="$Nummer".$i;
       }

    Wenn ich wüsste, wieviele Checkboxen es sind könnte ich Sie einzeln direkt mit Namen abfragen. Da es aber immer unterschiedlich viele sind geht das nicht. Wenn ich den Variablennamen erst in einen String abspeicher und dann isset($string) mach kommt ja immer true, weil es dann die Variable String auf vorhandensein kontrolliert, und nicht deren Inhalt '$NummerX'.

    Weiss jemand, wie ich durchnummerierte Checkboxen in einer Schleife abfragen kann?

    P.S.: Das mit dem Value zuweisen ist nicht dringend. Hab einen anderen Weg gefunden, das zuzuweisen.
    Zuletzt geändert von LazyLow; 21.10.2002, 10:58.

  • #2
    PHP-Code:
    $checkboxname="meinebox";
    $i=1;
    $temp=$checkboxname.$i;
    while(isset($
    $temp))
    {
       echo 
    "checkbox $i ist angeklickt";
       
    $i++;
       
    $temp=$checkboxname.$i;

    geht die Checkboxen "meinebox1" "meineboxunendlich" durch

    solltest aber besser mit $_POST arbeiten
    prüfe dort auf

    isset($_POST[$checkboxname.$i])
    TBT

    Die zwei wichtigsten Regeln für eine berufliche Karriere:
    1. Verrate niemals alles was du weißt!


    PHP 2 AllPatrizier II Browsergame

    Kommentar


    • #3
      Danke

      Es funktioniert jetzt einwandfrei.

      Kannst du mir nur kurz erklären, warum ich '$_POST[$bla]' verwenden soll, wenn es nur mit '$bla' auch funktioniert?

      Kommentar


      • #4
        weil Register_Globals seit PHP4.1 ? standartmäßig deaktiviert ist (mit der Version bin ich mir nicht 100% sicher).
        Das ganze wurde auf Grund von Sicherheitsaspekten so entschieden. Die meißten Webhoster und User haben es zwar wieder aktiviert, ist aber eben nicht mehr standart.
        Ist es deaktiviert, kannst du eben nicht mehr einfach mit $var auf die Übergebenen Variablen zugreifen.

        schau mal hier (im Teil Umgebungsvariablen):
        http://www.php.net/manual/de/languag...predefined.php

        gruss

        Kommentar


        • #5
          Reicht es dann, die Variable einmal mit $_POST[$bla] anzusprechen (danach wieder nur über '$bla')?
          Oder muss ich das jedesmal, wenn die Variable benutzt wird mit $_POST[$bla] machen?

          Kommentar


          • #6
            immer $_POST[$bla]
            TBT

            Die zwei wichtigsten Regeln für eine berufliche Karriere:
            1. Verrate niemals alles was du weißt!


            PHP 2 AllPatrizier II Browsergame

            Kommentar


            • #7
              immer $_POST['bla"] stimmt, aber einfacher ist es, worauf du auch sicherlich ohne mienen hinweis gekommen waerst am anfang deines skriptes, einfafch alle variablen die entweder per get oder post uebergeben werden, wie folgt wieder einfacher verfuegbar zu machen *hmmm irgendnen wort fiel mir nicht ein, deswegen der komische satz*


              bei variablen die ueber ein formular uebergeben werden :
              PHP-Code:
              $bla $_POST['bla']; 
              bei variablen die ueber die url uebergeben werden

              PHP-Code:
              $bla $_GET['bla']; 

              Es ist zwar nicht pflicht die variablen so aufzurufen es ist aber zukunftssicher. momentan ist mir kein provider bekannt, bei dem man register globals auf off hat. aber es wird wohl nur eine frage der zeit sein, bis dies bei den ersten so ist und spaetestens wenn du fuer firmen programmierst musst du es so machen, denn es ist einfach sauberer.

              Kommentar


              • #8
                Kann es sein, dass $_POST und $_GET erst ab Version 4.x möglich ist?
                Bei mir macht er das nicht, hab nämlich immer noch Version 3.irgendwas.

                Kommentar


                • #9
                  3 ??

                  da gabs sowas noch nicht

                  gruss

                  Kommentar


                  • #10
                    Bei PHP 3 stehen die ini aber mit sicherheit auf on (eigentlich klar, sonst würds dein script nut tun )

                    Weiß jetzt net genau. Aber könnte Sein, dass $HTTP_GET_VARS[] bzw $HTTP_POST_VARS[] bei dir klappt.

                    Kommentar


                    • #11
                      Ganz genau gibt es die Superglobals seit PHP Version 4.1.0


                      http://www.php.net/manual/de/languag...predefined.php

                      Kommentar


                      • #12
                        Danke für die Hilfe und Auskunft!

                        Noch eine kurze Frage, die wohl eher in den Bereich Javascript oder HTML fällt.

                        Wie kann ich erreichen, dass ich die gleichen Formulardaten an zwei verschiedene Felder verschicken kann?

                        Beispiel:

                        Im form-tag kann ich ja nur eine Seite als Action angeben.
                        Wenn ich nun aber auf meiner Seite zwei Buttons hab, über die ich zu verschiedenen Seiten komme, beide Seiten aber die Formulardaten erhalten sollen. Wie kann ich das machen?

                        Muss ich dann das selbe Formular nochmals integrieren nur mit einer anderen Seite bei action=\"Seite.php\" ?

                        Ich hoffe das war einigermaßen verständlcih

                        Kommentar


                        • #13
                          Da hatte ich letztens auch Probleme mit.

                          Du willst also 1 Formular haben, aber zwei Submits. einer der die daten an seite1.php sendet, und der andere sendet an seite2.php

                          Mein Lösungsansatz war folgender:

                          Die Formularseite:
                          action=index.php
                          Button 1: name = aktion1
                          Button 2: name = aktion2


                          in der index.php:
                          if isset($aktion1) { include seite1.php }
                          elseif isset($aktion2) {include seite2.php }

                          Kommentar


                          • #14
                            @Tobiaz: Hab das jetzt so gemacht, wie du es vorgeschlagen hast und es funktioniert. Vielen Dank für die Hilfe.

                            Auf so simple aber geschickte Lösungen komme ich nur selten selbst. Ich glaube ich denke immer zu kompliziert.

                            Kommentar


                            • #15
                              Ich habe jetzt das meiste mit Formulardaten übermittelt, dadurch ist die URL nicht mehr so lang.
                              Vorher hatte ich alle Informationen als String angehängt und das konnte ganz schön lang werden.

                              Jetzt habe ich aber ein neues 'Problem'. Bei jedem Seitenaufruf, bei dem Formulardaten übergeben werden, fragt der Browser ob die Daten unverschlüsselt über das Netz gesendet werden sollen. Ist nicht brutal tragisch, aber auf Dauer nervt das irgendwie schon.

                              Kann man da was dagegen machen?

                              Kommentar

                              Lädt...
                              X