DB-Eintrag über Checkboxen

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

  • #16
    PHP-Code:
    $records "(".$value.",".$_POST["LfdNr"][$key].",".( !empty($_POST["box"][$key]) ? "1" "0" ).")"
    ich gehe mal davon aus, 1 = weg, 0=bleibt.
    Kissolino.com

    Kommentar


    • #17
      Mal gespannt !

      Thanks und bis heute Abend !

      Kommentar


      • #18
        Es funzt einfach nicht !
        Wenn ich z. B. eine CheckBox überspringe, sprich nicht anhacke, sollte die übersprungene CheckBox den Wert "0" übertragen und die darauf folgende CheckBox, die ja angehackt wurde, soll den Wert "1" übertragen.
        Wo liegt der Fehler ???

        Formular:

        // ausführen einer SQL Anfrage
        $result3 = mysql_query("SELECT Fonds AS 'Fonds',Konto AS 'Konto',Kürzel AS 'Kürzel',FondsNr AS 'FondsNr',lfd_nr AS 'lfd_nr',status AS 'status' FROM dritt_fonds AS A LEFT OUTER JOIN streichliste AS B ON A.Konto=B.FondsNr WHERE Konto=799121 ORDER BY lfd_nr ASC");
        echo '<form action="streichen.php" method="post">';
        echo '<table border=1>';
        // Ausgabe des Tabellenkopfes
        echo '<tr><td ALIGN=center colspan="2"><FONT SIZE=2 FACE=ARIAL><B>'.$kurz.'</B></FONT></td></tr>';
        // Ausgabe der Tabellenzeilen

        while ($line=mysql_fetch_array($result3))
        {
        echo '<tr><td>'.$line['lfd_nr'].'</td>
        <td>
        <INPUT type="hidden" name="Fonds[]" value='.$line['FondsNr'].'>
        <INPUT type="hidden" name="LfdNr[]" value='.$line['lfd_nr'].'>
        <INPUT type="checkbox" name="box[]" value="1" '.($line['status']==1 ? " checked" : "").'></td></tr>';
        }
        echo '</table>';
        ?>
        <input type=submit value="streichen"></form>


        Formular-Verarbeitung:

        foreach ( $_POST["Fonds"] AS $key=>$value )
        {
        $records = "(".$value.",".$_POST["LfdNr"][$key].",".( !empty($_POST["box"][$key]) ? "1" : "0" ).")";
        mysql_query("REPLACE INTO streichliste (FondsNr, lfd_nr, status) VALUES $records") or die(mysql_error());
        echo ''.$records.'';
        }

        Kommentar


        • #19
          gib mal bitte folgendes aus und poste das hier:
          PHP-Code:
          echo "<pre>";
          print_r($_POST['box']);
          echo 
          "</pre>"
          btw: es heisst "haken", eine "hacke" benutzt du im garten
          und die php-tags erleichtern das lesen ungemein ^^ da oben der button
          wo "php" draufstehen tut.
          Kissolino.com

          Kommentar


          • #20
            Bitte schön !

            PHP-Code:
            Array
            (
                [
            0] => 1
                
            [1] => 1
                
            [2] => 1
            )

            Array
            (
                [
            0] => 1
                
            [1] => 1
                
            [2] => 1
            )

            Array
            (
                [
            0] => 1
                
            [1] => 1
                
            [2] => 1
            )

            Array
            (
                [
            0] => 1
                
            [1] => 1
                
            [2] => 1
            )

            Array
            (
                [
            0] => 1
                
            [1] => 1
                
            [2] => 1
            )

            Array
            (
                [
            0] => 1
                
            [1] => 1
                
            [2] => 1
            )

            Array
            (
                [
            0] => 1
                
            [1] => 1
                
            [2] => 1
            )

            Array
            (
                [
            0] => 1
                
            [1] => 1
                
            [2] => 1
            )

            Array
            (
                [
            0] => 1
                
            [1] => 1
                
            [2] => 1
            )

            Array
            (
                [
            0] => 1
                
            [1] => 1
                
            [2] => 1
            )

            Array
            (
                [
            0] => 1
                
            [1] => 1
                
            [2] => 1
            )

            Array
            (
                [
            0] => 1
                
            [1] => 1
                
            [2] => 1
            )

            Array
            (
                [
            0] => 1
                
            [1] => 1
                
            [2] => 1

            Kommentar


            • #21
              also mit isset ruder ich mal zurück, das sollte passen.

              wenn ich dein form ^^ kopiere und das einsetze
              PHP-Code:
              foreach ( $_POST["Fonds"] AS $key=>$value )
              {
              echo isset(
              $_POST["box"][$key]) ? "1" "0" ;

              erhalte ich auch die richtige zusammensetzung von 0 & 1 vorausgesetzt ich klicke nicht wild hin und her.

              sobald du 1,3 und 5 wählst stehen die im array "box" unter dem key 0,1,2
              => also aufeinanderfolgend.

              du musst dir also bei der formularerstellung einen counter erzeugen nachdem
              fond, lfdnr + box eindeutig zuzuordnen sind.

              gib mal print_r($_POST) aus (mit unterschiedlich gewählten checkboxen), dann siehst du was ich meine.
              Kissolino.com

              Kommentar


              • #22
                Ich verstehe, was du meinst !

                Aber leider bin ich noch nicht so fit - wie kann man denn sowas mit 'm Counter machen ???

                Kommentar


                • #23
                  PHP-Code:
                  $i=0;
                  while (
                  $line=mysql_fetch_array($result1)) {
                  echo 
                  '<tr><td>'.$line['lfd_nr'].'</td>
                  <td>
                  <INPUT type="hidden" name="Fonds[$i][]" value='
                  .$line['FondsNr'].'>
                  <INPUT type="hidden" name="LfdNr[$i][]" value='
                  .$line['lfd_nr'].'>
                  <INPUT type="checkbox" name="box[$i][]" value="1" '
                  .($line['status']==" checked" "").'></td></tr>';
                  $i++;

                  oder
                  PHP-Code:
                  while ($line=mysql_fetch_array($result1)) {
                  echo 
                  '<tr><td>'.$line['lfd_nr'].'</td>
                  <td>
                  <INPUT type="hidden" name="Fonds[]" value='
                  .$line['FondsNr'].'>
                  <INPUT type="hidden" name="LfdNr[]" value='
                  .$line['lfd_nr'].'>
                  <INPUT type="checkbox" name="box['
                  .$line['lfd_nr'].']" value="1" '.($line['status']==" checked" "").'></td></tr>';

                  vesruchs mal damit und lass dir das gesendete form noch mal mit print_r($_POST) ausgeben ...

                  EDIT:
                  sorry, ich hab grad das essen auf dem herd ... bin also hin- und hergerissen
                  Zuletzt geändert von Wurzel; 01.09.2003, 19:37.
                  Kissolino.com

                  Kommentar


                  • #24
                    Geht nicht !

                    http://www.rok.formativ.net/form1.php

                    Kommentar


                    • #25
                      wenn du schon mit replace arbeiten willst und nicht mit insert/update, dann replace doch einfach immer alles auf 0 und mach danach das replace das du hattest
                      Ich denke, also bin ich. - Einige sind trotzdem...

                      Kommentar


                      • #26
                        @Wurzel: Nee, 2. Variante geht auch nicht, bringt nur Unsinn ! Sieh selbst !

                        http://www.rok.formativ.net/form1.php


                        @mrhappiness: Ich kann mir nicht vorstellen, wie das funzen soll !

                        Kommentar


                        • #27
                          du hast doch nun alles, was du brauchst:
                          lfdnr[0] => 155 .... box[155] => 1
                          demzufolge box[lfdnr[0]] => 1

                          was mich irritiert, ist die tatsache, dass der ganze kram x-mal kommt
                          Kissolino.com

                          Kommentar


                          • #28
                            du hast doch nun alles, was du brauchst:
                            Nicht ganz: Wenn ich z. B. noch die 159 anhake, bekomme ich folgendes Ergebnis:


                            [155] => 1
                            [156] => 1
                            [157] => 1
                            [159] => 1

                            Das ist ja soweit auch richtig. Aber müsste denn nicht auch noch die 158 mit dem Wert "0" übertragen werden ? Also:


                            [155] => 1
                            [156] => 1
                            [157] => 1
                            [158] => 0
                            [159] => 1

                            Kommentar


                            • #29
                              Nein, wenn eine Checkbox nicht angeklickt wurde, dann wird ist $_POST['name_der_checkbox'] gar nicht erst vorhanden, und nicht 0.

                              Kommentar


                              • #30
                                Also, ich hab' jetzt mal meine "Formular-Verarbeitung" stark vereinfacht:

                                PHP-Code:
                                foreach ($_POST['Fonds'] AS $k => $v

                                echo 
                                ''.$v.'/'
                                echo 
                                ''.$_POST["LfdNr"][$k].'/'
                                echo 
                                ''.$_POST["box"][$k].'<br>'


                                Wenn ich jetzt die CB-Nr. 15,16 und 17 anhake, bekomme ich folgendes Ergebnis:
                                799121/15/1
                                799121/16/1
                                799121/17/1
                                799121/18/
                                799121/19/

                                Das ist ja bis hierhin auch vollkommen richtig !


                                Wenn ich jetzt die CB-Nr. 15,16 und 18 anhake, bekomme ich leider dasselbe Ergebnis:
                                799121/15/1
                                799121/16/1
                                799121/17/1
                                799121/18/
                                799121/19/

                                Wie Ihr seht, wird die "1", die für die CB-Nr. 18 bestimmt ist, fälschlicherweise der CB-Nr. 17 im Array zugeordnet.

                                Ich bin am Verzweifeln !
                                Weiß denn niemand, wie ich dieses Problem beheben kann ???

                                Hier noch mal zum Ausprobieren: http://www.rok.formativ.net/form1.php

                                Der Code des Formulars sieht so aus:
                                PHP-Code:
                                while ($line=mysql_fetch_array($result3)) {
                                echo 
                                '<tr><td>'.$line['lfd_nr'].'</td>
                                <td>
                                <INPUT type="hidden" name="Fonds[]" value='
                                .$line['FondsNr'].'>
                                <INPUT type="hidden" name="LfdNr[]" value='
                                .$line['lfd_nr'].'>
                                <INPUT type="checkbox" name="box[]" value="1" '
                                .($line['status']==" checked" "").'></td></tr>';
                                }
                                echo 
                                '</table>';
                                ?>
                                <input type=submit value="streichen"></form> 

                                Kommentar

                                Lädt...
                                X