Checkbox

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

  • Checkbox

    Hallo, folgende Frage:

    Habe verschiedene DS die angezeit werden, mit Berechnungen.

    Es kommt eine Checkbox und dann die Datensätze.


    Wie bekomme ich das hin, das wenn ich die Checkbox "deaktiviere", das dieser DS entfernt wird und die Seite neu geladen wird, ohne diesen Datensatz ?

  • #2
    Mal wieder nicht lange überlegt?

    Deien DS kommen aus der SQL-DB? Dann löschst du mit DELETE. Das sind aber absolute grundlagen.

    Dass alles andere NICHTS mit PHP zu tun hat, solltest du ebenfalls wissen. Denn auch das könnte man als Grundlage bezeichnen. Kannst du mir grad noch mal erklären, was der unterschied zwischen Serverseitiger und Clientseitiger Programmierung ist?

    Kommentar


    • #3
      Checkbox

      Hallo, folgende Frage, ich hoffe das hier richtig bin.

      Ich lasse mir mehrere/einen DS aus der DB ausgeben.
      So jetzt stehen dort die Daten und vor den Daten ist eine Checkbox. Wenn die deaktiviert werden, dann soll die DS von der Seite verschwinden und nur noch die anderen angezeigt werden.

      Wie löse ich das Problem ?

      Ich mache auf der Seite verschiedene Berechnungen, d.h. sollte dieser DS "rausgenommen" werden, müssen auch die Berechnungen neu gemacht werden !

      Danke

      Kommentar


      • #4
        unterlasse cross-posting, sonst werden wir dir auch noch das Recht zu posten entfernen

        **zusammenführen**

        Kommentar


        • #5
          1. Verschicke das entsprechende Formular
          2. Lies die Werte der Checkboxen aus (z.B. ID der entspr. Datensätze, die noch markiert waren)
          3. Generiere daraus einen String für die SQL-Abfrage (z.B. $abfrg_str = '102,134,135')
          4. Erstelle die Abfrage, z.B. SELECT ... FROM ... WHERE ... AND ID IN ($abfrg_str)

          Gruß
          Stephan
          [font=Verdana]SteGaSoft
          Theorie ist, wenn jeder weiß, wie es geht, aber nichts funktioniert, Praxis ist, wenn alles funktioniert und niemand weiß warum.
          [/font]

          Kommentar


          • #6
            Hallo Stefan,

            ja das klingt ja alles richtig wie ist es aber wenn ich zuerst eine ganz "normale" Abfrage mache, mir alle DS ausgeben lasse und dort drinne steht "where ....." dann zeigt er mir ja keinen an ?!

            Kommentar


            • #7
              Du mußt natürlich zwei Abfragen generieren, eine, die nur beim ersten Seitenaufruf ausgeführt wird (also Deine bisherige) und die zweite, die nach dem Abschicken des Formulars ausgeführt wird.
              Um den Formularversand festzustellen, kannst Du noch ein input-Feld vom Typ "hidden" mitschicken oder einfach den Wert des Submit-Buttons abfragen

              Deine Checkboxen (wahrscheinlich über eine Schleife ausgegeben, oder?) könnten so aussehen:

              <input type="Checkbox" name="ds_check[$i]" value="$ds_id">

              $i: Laufvariable, $ds_id wäre die Datensatz_ID.

              Falls rigister_globals = off, dann kannst Du die Checkboxen so abfragen:

              $checker = $_POST['ds_check'];

              $checker[0] hat dann den Wert von ds_check[0]. Wenn der Wert nicht NULL oder leer ist, weiß Du, dass die Box noch markiert war (über FOR-Schleife einfach abzufragen). In der Schleife baust Du dann noch den String für die MySQL-Abrage auf.

              $abfr_str = "";
              for ($i...) {
              if (trim($checker[$i] !=""))
              $abfr_str .= $checker[$i].",";
              }

              Danach noch das letzte Komma entfernen und die "zweite Abfrage" aufbauen:

              SELECT * FROM tabelle WHERE ds_id IN ($abfr_str)

              Gruß
              Stephan
              [font=Verdana]SteGaSoft
              Theorie ist, wenn jeder weiß, wie es geht, aber nichts funktioniert, Praxis ist, wenn alles funktioniert und niemand weiß warum.
              [/font]

              Kommentar


              • #8
                Hi, also ich habe kein Submit Button, sondern ist so, dass nur die Checkbox zu sehen ist und halt die Werte:

                PHP-Code:
                $result=mysql_query("Select ps.*, 
                p.* FROM project_spec ps, project p
                WHERE ps.country='
                $country' and 
                ps.icd_id='
                $icd_id' and 
                ps.speciality_id='
                $speciality_id
                and ps.project_id=p.project_id"
                );

                . . . . . . 

                <
                form name='form1' method='post' action=''>
                ........
                <
                input name='checkbox' type='checkbox' value=
                .......
                'checkbox' checked></td
                So sieht es bis jetzt aus, keine Ahnung mit dem hiddenfeld, also was macht ist ja klar, aber wie was reinmuss etc ist unklar, auch wenn du mir das beschrieben hast verstehe ich Bhf :-(

                Danke

                Kommentar


                • #9
                  OK, dann versuch ich's mal mit einem Beispiel:

                  PHP-Code:
                  ...

                  if(
                  $aktion == "sent") {
                    
                  $abfrage_string "";
                    for(
                  $i=0$i<$max_ds$i++) {
                      if (
                  trim($checkbox[$i]) != "")
                        
                  $abfrage_string .= $checkbox[$i].",";
                    }
                     
                  // letztes Komma aus String entfernen
                    
                  $abfrage_string substr($abfrage_string,0,strlen($abfrage_string)-1);   
                    
                  $result=mysql_query("Select ps.*,p.* FROM project_spec ps, 
                  project p WHERE ps.project_id IN (
                  $abfrage_string)");
                  }
                  else
                    
                  $result=mysql_query("Select ps.*,p.* FROM project_spec ps, 
                  project p WHERE ps.country='
                  $country' and ps.icd_id='$icd_id' and 
                  ps.speciality_id='
                  $speciality_id' and ps.project_id=p.project_id");

                  $i 0;
                  print(
                  "<form ....>");
                  while (
                  $row mysql_fetch_row($result)) {
                   print (
                  "<input name='checkbox[$i]' type='checkbox' value='$row[4]'
                     checked onChange='document.form1.submit()'> ...."
                  );
                   
                  $i++;
                  }
                  print(
                  "<input type='hidden' name='aktion' value='sent'>
                    <input type='hidden' name='max_ds' value='
                  $i'>");
                  ... 
                  Dabei habe ich mal vorausgesetzt, dass $row[4] die Werte von p.project_id beinhaltet (ggf. anpassen und durch die ID ersetzen, die den DS eindeutig bestimmt).
                  Außerdem wird nach jedem Klick in die Checkbox das Formular abgeschickt (ist nicht gerade die beste Methode!).

                  Gruß
                  Stephan
                  EDIT:
                  by TobiaZ: Hier musste man endlich mal die Zeilen brechen!
                  Zuletzt geändert von TobiaZ; 31.05.2005, 16:18.
                  [font=Verdana]SteGaSoft
                  Theorie ist, wenn jeder weiß, wie es geht, aber nichts funktioniert, Praxis ist, wenn alles funktioniert und niemand weiß warum.
                  [/font]

                  Kommentar


                  • #10
                    Original geschrieben von steiner82
                    kein Submit Button
                    onChange="this.form.submit" oder so ähnlich, hab die syntax grad nicht genau im kopf, weil ich das fast nie brauche. Musste ma bei SelfHTML gucken

                    edit:
                    Es müsste onChange="this.form.submit()" lauten

                    Kommentar


                    • #11
                      Hi, danke werde es mal ausprobieren, aber als was ist $aktion deklariert ?

                      Kommentar


                      • #12
                        So, ich habe das mal probiert so umzusetzen, wie du/ihr es mir beschrieben habt, hier der Code:

                        PHP-Code:
                        IF($aktion == "sent") {
                          
                        $abfrage_string "";
                          for(
                        $i=0$i<$max_ds$i++) {
                            if (
                        trim($checkbox[$i]) != "")
                              
                        $abfrage_string .= $checkbox[$i].",";
                          }
                          
                        $abfrage_string substr($abfrage_string,0,
                        strlen($abfrage_string)-1);    // letztes Komma aus String entfernen
                          
                        $result=mysql_query("Select ps.*,p.* 
                        FROM project_spec ps, project p WHERE 
                        ps.project_id IN (
                        $abfrage_string)");
                          }
                          else
                          
                        $result=mysql_query("Select ps.*, p.* 
                        FROM project_spec ps, project p WHERE 
                        ps.country='
                        $country' and ps.icd_id='$icd_id
                        and ps.speciality_id='
                        $speciality_id' and 
                        ps.project_id=p.project_id"
                        );
                        $i 0;

                        while (
                        $inhalt=mysql_fetch_array($result)){

                        $project_spec_id htmlspecialchars($inhalt[project_spec_id]);

                        .................

                        <
                        form name='form1' method='post' action=''>

                        ................

                        print (
                        "<input name='checkbox[$i]' type='checkbox' 
                        value='
                        $project_spec_id' onChange='this.form.
                        submit()'  checked>"
                        );
                        $i++;

                        .................

                        print(
                        "<input type='hidden' name='aktion' value='sent'>
                        <input type='hidden' name='max_ds' value='
                        $i'>"); 
                        So jetzt ist es so, dass ich (z.B. in meinem jetzigen Falle 2DS), beide DS per Checkbox ausschalten muss und dann verschwinden diese erst, wenn ich einen ausschalten will, passiert garnix :-(

                        Kommentar


                        • #13
                          Du mußt zunächst erstmal sehen, dass Du das Formular abgeschickt bekommst.
                          Ändere evtl. onChange in onClick. Ist JS aktiviert ?
                          Zur Not mußt Du probehalber doch erstmal einen Submit-Button einbauen (zum Testen).

                          Gruß
                          Stephan
                          [font=Verdana]SteGaSoft
                          Theorie ist, wenn jeder weiß, wie es geht, aber nichts funktioniert, Praxis ist, wenn alles funktioniert und niemand weiß warum.
                          [/font]

                          Kommentar


                          • #14
                            wäre ohnehin nicht schlecht, damit das ganze auch ohne javascript auskommt.

                            kannst den button ja per javascript ausblenden.
                            wenn's deaktiviert ist, dann bleibt der button da, und du kannst das form trotzdem benutzen... weißt?

                            Kommentar


                            • #15
                              Würd den Button wenn dann per CSS ausblenden

                              PHP-Code:
                              <input type="submit" style="visibility: hidden;"
                              Dann spart man sich den javascript kram und wenn einer ohne Styles daher kommt ist der Button wieder da.

                              Kommentar

                              Lädt...
                              X