checkbox in verbindung mit einem textfeld ?

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

  • checkbox in verbindung mit einem textfeld ?

    Hallo,

    ich habe folgendes Problemmmm !!!

    ich bin anfänger und möchte ein Form erstellen. Es handelt sich um karten, die online angezeigt werden. Der kunde hat die wahl zu kaufen ( ja, nein) mit einem Checkbox. Rechts davon in einem Textfeld die anzahl. Nach Submit soll der Kunde sehen was er eingegeben hat.

    Kartennamen: Stückzahl: Preis:

    karte1 2 20 Euro
    karte2 4 10 Euro
    ----------

    Total 6 30 Euro

    Nach zweitem Submit sollen die daten in datenbank gespeichert, wo der admin darauf den Zugriff haben soll.

    Mein form sieht wie folhgt aus:

    ...
    echo "<input type=\"checkbox\" name=\"kartenname[]\" value=\"".$row['Name']."\" /> Ja&nbsp&nbsp\n";
    echo " <label for=\"anzahl\">Anzahl</label>\n";
    echo " <input type=\"text\" size=\"3\" name=\"anzahl[]\" value=\"1\"/>\n";
    echo "</td>";

    .....


    und Phpcode:


    .....

    PHP-Code:

             
    if(isset($_POST['submit'])) {
                
                             
                        
            
    $kname=$_POST['kartenname'];
            
    $kartenanzahl=$_POST['anzahl'];
             echo 
    "\nkartenname:";
            if(isset(
    $kartenname)) {
                    for (
    $i=0$i<count($kname) ;$i++) {
                    
                         
                    echo  
    $kname[$i];  
                    echo  
    $kartenanzahl[$i];
                            }
                    
                    
                    }
                    
                    else 
                    {
                    echo 
    "scheisse";
                    
                    }
                    
                    
                    } 
    ....


    Der output ist auch ok wenn alle checkboxe gechecked sind und die anzahl eingetragen ist.

    Wenn ich bei der ersten karte checkbox unchcked lasse und eine Anzahl eintrage, ändert sich da die arrays Reihenfolge !!!

    Einfacher gesagt -> ICH KRIEGE DAS NICHT HIN.

    Es soll NUR sie passende Anzahl x Preis zu einer gecheckten Karten ausgeben.

    Danke für die Antwort im voraus
    Zuletzt geändert von nasroo; 05.10.2004, 21:55.

  • #2
    Salut Nasroo

    Wenn ich bei der ersten karte checkbox unchcked lasse und eine Anzahl eintrage, ändert sich da die arrays Reihenfolge !!!
    Dieser Fall sollte gar nicht eintreten. Denn wenn die Checkbox nicht angekreuzt ist, dann sollte auch keine Anzahl verarbeitet werden.
    Du musst also den Fall abfangen, wenn die Checkbox nicht gesetzt ist.

    PHP-Code:
    if($_POST['kartenname']) 
    dann verarbeite die Daten

    wenn die Abfrage false ergibt, dann musst du auf die Bearbeitung des Inputs verzichten.

    Code:
    "<input type=\"checkbox\" name=\"kartenname[]\" value=\"".$row['Name']."\" />
    Ich würde den Value der Checkbox auf Ja setzen, dann kannst du mit folgender Abfrage sicherstellen, dass die Checkbox gesetzt ist
    PHP-Code:
    if(($_POST['kartenname']) && ($_POST['kartenname'] == "Ja"))
    {
          
    tu was
    }
    else
    {
         
    tu nichts

    Nach Submit soll der Kunde sehen was er eingegeben hat.
    Da hast du zwei Möglichkeiten: Entweder der User sendet das gesamte Form an den Server --> dann kannst du es mit PHP machen. Der Server sendet dann eine neue Seite zurück mit den Bestellungsdaten und Preis

    Oder du bearbeitest die Daten beim User --> dann geht's nur mit JavaScript, welches aber vom User u.U. deaktiviert sein kann.

    Gruss

    tobi
    Zuletzt geändert von jahlives; 05.10.2004, 22:09.
    Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

    [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
    Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

    Kommentar


    • #3
      Re: checkbox in verbindung mit einem textfeld ?

      Original geschrieben von nasroo
      Wenn ich bei der ersten karte checkbox unchcked lasse und eine Anzahl eintrage, ändert sich da die arrays Reihenfolge !!!
      klar, für checkboxen die nicht angekreuzt sind, wird kein wert übermittelt.

      wenn du in die klammern beim namen von checkbox und input feld noch einen fortlaufen nummerischen index in die eckigen klammern einfügst, hast du die angekreuzten checkboxen auf jeden fall immer passend zum entsprechenden textfeld. musst dann halt nur noch prüfen, ob zum index eines nicht-leeren input-wertes auch ein eintrag für die checkbox existiert.


      tipp: mit print_r($_POST) mal schauen, in welcher struktur die daten übermittelt werden, hilft oft besser durchzusehen ...
      I don't believe in rebirth. Actually, I never did in my whole lives.

      Kommentar


      • #4
        Danke für die super schnelle Antwort:

        @jahlives

        es handelt sich un 2 verschiedene arrays kartenname[] und kartenanzahl[] und beide sind getrennt in einer Tabelle in 2 Spalten ausgegeben. Aber wenn ich karte1 nicht checke und die dazugehörige Anzahl auf null oder gar auf 1 stehen lasse dann habe ich folgendes Problem:

        Array kartenname {

        0 -> Karte2
        1-> Karte3

        }

        Array Kartenanzahl {

        0-> anzahl1
        1-> anzahl2
        ....

        }

        meine Frage lautet, wie ich die daten dieser arrays miteinander verknüpfe, so dass fals Karte1 unchcked bleibt, muss im array Kartenanzahl wie folgt aussehen:

        Array Kartenanzahl {

        0-> anzahl2
        1-> anzahl3
        ....

        }

        danke

        Kommentar


        • #5
          bei deinem Aufbau wird schwierig mit PHP zu prüfen, denn anzahl[] wird auf jeden Fall übertragen, sobald irgendwas drin steht, kartenname[] jedoch nur wenn checked. Hier kannst du die Beziehung zueinander nicht finden. Wenn du nur PHP-seitig das Problem lösen willst, mußt du dein Formular umbauen, um eine eindeutige Beziehung festzulegen, z.B. kartenname[1] zu anzahl[1], somit sind die Indizes vorgegeben und du kannst per foreach das $_POST-Array durchlaufen, die Elemente entnehmen, Index von kartenname auslesen und in anzahl übertragen. Wenn nicht gescheckt ist dann wird Indexlücken in kartenname entstehen, aber das ist nicht schlimm, denn die Beziehung zu anzahl bleibt.

          Ansonstens kannst du dein Formular auch so lassen wie jetzt ist und prüfst vor dem Senden mit JS und löschst (zu NULL setzen) ggf. die Werte in anzahl[] bei unchecked. Es wird aber problematisch für dich, wenn JS abgeschaltet ist.

          Kommentar


          • #6
            benam doch die jeweiligen checkboxen und textfelder etwa so
            PHP-Code:
            <input type="checkbox" name="karte_1[name]">
            <
            input type="text" name="karte_1[anzahl]">

            <
            input type="checkbox" name="karte_2[name]">
            <
            input type="text" name="karte_2[anzahl]"
            usw....
            dann müßte das doch alles richtig sortiert sein.
            gruss
            peter
            Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
            Meine Seite

            Kommentar


            • #7
              Hallo,

              danke danke danke für schnelle Antwort

              @asp2php

              bei deinem Aufbau wird schwierig mit PHP zu prüfen, denn anzahl[] wird auf jeden Fall übertragen, sobald irgendwas drin steht, kartenname[] jedoch nur wenn checked. Hier kannst du die Beziehung zueinander nicht finden. Wenn du nur PHP-seitig das Problem lösen willst, mußt du dein Formular umbauen, um eine eindeutige Beziehung festzulegen, z.B. kartenname[1] zu anzahl[1], somit sind die Indizes vorgegeben und du kannst per foreach das $_POST-Array durchlaufen, die Elemente entnehmen, Index von kartenname auslesen und in anzahl übertragen. Wenn nicht gescheckt ist dann wird Indexlücken in kartenname entstehen, aber das ist nicht schlimm, denn die Beziehung zu anzahl bleibt.
              Wie soll form und php code dazu aussehen ?





              @kropff


              PHP-Code:
              <input type="checkbox" name="karte_1[name]">
              <
              input type="text" name="karte_1[anzahl]">

              <
              input type="checkbox" name="karte_2[name]">
              <
              input type="text" name="karte_2[anzahl]"
              wie soll dazu php code zum Auslesen der arrays aussehen ?


              danke

              Kommentar


              • #8
                Original geschrieben von nasroo
                Wie soll form und php code dazu aussehen ?
                [...]
                wie soll dazu php code zum Auslesen der arrays aussehen ?
                darüber denkst du jetzt bitte erst mal selber nach!

                wir sind nicht hier, um dir dein script fertigzustellen.

                also, nächste anfrage von dir zu diesem thema frühestens morgen (und auch dann erst, wenn du ein paar ergebnisse eigenen denkens vorweisen kannst) - andernfalls mach' ich den thread dicht.
                I don't believe in rebirth. Actually, I never did in my whole lives.

                Kommentar

                Lädt...
                X