Hugo Zeiss: Bei mehr als einer Auswahl, sollte jeweils ein Komma erscheinen.

Hallo,

folgendes Problem:
3 Checkboxen stehen zur Auswahl
------------------------------

  • offen
  • cancel
  • bezahlt

Ein Button -> "Prüfen..."

Nach betätigen des Buttons, erscheinen die jeweiligen Optionen
die vorher ausgewählt waren.
z.B. ich wähle: offen und bezahlt
Ausgabe: offen bezahlt
Nun hätte ich gerne die Ausgabe so formatiert, dass nach
mehr als einer Option, ein Komma erscheint.
Ausgabe: offen, bezahlt

Grund: ich möchte später über ein sql Statement die "IN" Funktion
verwenden. Somit könnte ich mir alle Rechnungen ausgeben lassen
die offen bzw. bezahlt sind.

Im Voraus schon einmal danke für Eure Hilfe

Hugo Zeiss

....
<?
if (isset($_REQUEST['rechnung'])) {
  reset($_REQUEST['rechnung']);
  foreach ($_REQUEST['rechnung'] as $k => $v) {
    print "$v\n";
  }
}
else {
  print "Es ist keine Option ausgewählt.\n";
}
?>
<body>
<form action="<? print $_SERVER['PHP_SELF'] ?>" method="post">
  <input type="checkbox" name="rechnung[]" value="offen" />offen<br>
  <input type="checkbox" name="rechnung[]" value="cancel" />cancel<br>
  <input type="checkbox" name="rechnung[]" value="bezahlt" />abbruch<br>
  <input type="submit" value="Prüfen...">
</form>
</body>
...

  1. <?
    if (isset($_REQUEST['rechnung'])) {
      reset($_REQUEST['rechnung']);                         //was ist das??????
      foreach ($_REQUEST['rechnung'] as $k => $v) {
        print "$v,\n";                                      //da einfach nur ein komma oder was meintest Du?
      }
    }
    else {
      print "Es ist keine Option ausgewählt.\n";
    }
    ?>
    <body>
    <form action="<? print $_SERVER['PHP_SELF'] ?>" method="post">
      <input type="checkbox" name="rechnung[]" value="offen" />offen<br>
      <input type="checkbox" name="rechnung[]" value="cancel" />cancel<br>
      <input type="checkbox" name="rechnung[]" value="bezahlt" />abbruch<br>
      <input type="submit" value="Prüfen...">
    </form>
    </body>
    ...

    Gruß aus Berlin!
    eddi

    1. Hi Eddi,

      print "$v,\n";                                      //da einfach nur ein komma oder was meintest Du?

      dies macht mir aufjedenfall ein Komma hinter die
      Option. Was ist, wenn ich aber nur eine Option auswähle
      -> z.B. offen
      Ausgabe: offen, -> und das möchte ich nicht

      Problem ist leider noch nicht gelöst.

      Gruß
      Hugo

      1. Hi Hugo

        Sorecht schlau werde ich nicht daraus. Also nach erneutem püberdenken habe ich es so verstanden:

        Du willst eine Variable definiren die etwas so ausieht >>>$rechnung[0],$rechnung[1],$rechnung[2],<<<aber das letzte Komma nicht

        |<?

        if (isset($_REQUEST['rechnung'])) {

        $a=count($_REQUEST['rechnung']);

        foreach ($_REQUEST['rechnung'] as $k => $v) {

        global $a;                                   //foreach-Schleifen hasse ich ja wie die Pest sieh selbts bitte noch mal nach, ob $a si richtig eingebunden wurde
                $i++;
                $b=$v;
                if(i<($a+1))
                      $b.=",\n";
            }
          print $b;                                          //$b ist das auch chice für die DB

        }

        else {
          print "Es ist keine Option ausgewählt.\n";
        }
        ?>
        <body>
        <form action="<? print $PHP_SELF ?>" method="post">
          <input type="checkbox" name="rechnung[]" value="offen" />offen<br>
          <input type="checkbox" name="rechnung[]" value="cancel" />cancel<br>
          <input type="checkbox" name="rechnung[]" value="bezahlt" />abbruch<br>
          <input type="submit" value="Prüfen...">
        </form>
        </body>

        1. Hi Hugo

          Sorecht schlau werde ich nicht daraus. Also nach erneutem püberdenken habe ich es so verstanden:

          Du willst eine Variable definiren die etwas so ausieht >>>$rechnung[0],$rechnung[1],$rechnung[2],<<<aber das letzte Komma nicht

          |<?

          if (isset($_REQUEST['rechnung'])) {
              $a=count($_REQUEST['rechnung']);
            foreach ($_REQUEST['rechnung'] as $k => $v) {
                  global $a;                                   //foreach-Schleifen hasse ich ja wie die Pest sieh selbts bitte noch mal nach, ob $a si richtig eingebunden wurde
                  $i++;
                  $b=$v;
                  if(i<$a)                                     //fehler sorry die hitze
                        $b.=",\n";
              }
            print $b;                                          //$b ist das auch chice für die DB
          }

          else {
            print "Es ist keine Option ausgewählt.\n";
          }
          ?>
          <body>
          <form action="<? print $PHP_SELF ?>" method="post">
            <input type="checkbox" name="rechnung[]" value="offen" />offen<br>
            <input type="checkbox" name="rechnung[]" value="cancel" />cancel<br>
            <input type="checkbox" name="rechnung[]" value="bezahlt" />abbruch<br>
            <input type="submit" value="Prüfen...">
          </form>
          </body>

          Gruß aus Berlin!
          eddi

        2. Also ich mach das immer so:

          echo implode(';',$checkboxen);

          und zwischen jedem Wert ist ein Semikolon...

          Wenn $checkboxen leer ist dann musst du den implode unterbinden.

          Hoffe das hilft weiter.

  2. hallo
    mache aus deinen checkboxen doch ein array
    <input type=checkbox name=checkbox[] value=wasweisich>wasweisich
    jetzt hast du auf der nächsten seite die möglichkeit das array mit foreach auszulesen und ein komma nach jedem eintrag anzuhängen.
    vergesse aber nicht am ende (wenn foreach geschlossen ist) das letzte komma wegzuschneiden.

    1. Hi

      mache aus deinen checkboxen doch ein array
      <input type=checkbox name=checkbox[] value=wasweisich>wasweisich

      Das habe ich doch gemacht -> siehe Codeanhang

      jetzt hast du auf der nächsten seite die möglichkeit das array mit foreach auszulesen und ein komma nach jedem eintrag anzuhängen.
      vergesse aber nicht am ende (wenn foreach geschlossen ist) das letzte komma wegzuschneiden.

      Das mit dem wegschneiden interessiert mich.
      Genau das ist mein Problem.
      Über Hilfestellung würde ich mich freuen.

      Gruß
      Hugo

      1. HH (Hallo Hugo),

        $neuer_wert = substr($alter_wert,-1);

        und gut ists

        Tom

        1. HH (Hallo Hugo),

          $neuer_wert = substr($alter_wert,-1);
          $neuer_wert = substr($alter_wert,0,-1); // besser so!

          und gut ists

          Tom

    2. Halli Hallo,

      wenn es denn schon ein Array ist, kann man auch explode() benutzen. Das lässt das letzte Trennzeichen automatisch weg un dist viiiiel schneller.

      Tom