DB-Eintrag über Checkboxen

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • #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

    Comment


    • #17
      Mal gespannt !

      Thanks und bis heute Abend !

      Comment


      • #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.'';
        }

        Comment


        • #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

          Comment


          • #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

            Comment


            • #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

              Comment


              • #22
                Ich verstehe, was du meinst !

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

                Comment


                • #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
                  Last edited by Wurzel; 01-09-2003, 19:37.
                  Kissolino.com

                  Comment


                  • #24
                    Geht nicht !

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

                    Comment


                    • #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...

                      Comment


                      • #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 !

                        Comment


                        • #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

                          Comment


                          • #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

                            Comment


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

                              Comment


                              • #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> 

                                Comment

                                Working...
                                X