Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Anzahl Felder berechnen

Einklappen

Neue Werbung 2019

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

  • [Erledigt] Anzahl Felder berechnen

    Morgen,

    ich moechte gerne die Anzahl der Textfelder berechnen, die in meinem Skript ausgefüllt wurden. Z.b. habe ich frei verfügbare Diagnosefelder & je nachdem wieiviel Felder mit Strings gefüllt wurden bekomme ich als Ergebniss in einem anderen Feld die Anzahl.

    Was einem spontan einfällt ist der Ansatz:
    PHP-Code:
    if ($_POST['Textfeld01'] != ''){ // $Zaehler um eins erhoehen} if ($_POST['Textfeld02'] 1=''){// $Zaehler um eins erhoehen} //etc 
    Das scheint mir aber viel zu umständlich zu sein...gibt es keinen besseren effektiveren Weg, um die bestimmten [Textfeld 01 bis 40] Textfelder nacheinander zu pruefen, ob Sie leer sind oder nicht? Gruß

  • #2
    Wenn sie alle nach dem Schema TextfeldXX aufgebaut sind kannst doch
    mit foreach() über $_POST laufen und bei jedem Key, der mit "Textfeld" beginnt einen Zähler erhöhen.

    Wäre jetzt spontan ne simple Lösung, gibt sicher elegantere...
    Competence-Center -> Enjoy the Informatrix
    PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

    Kommentar


    • #3
      Ja....sind alle nach diesem Schema auch benannt (name=Textfeld01 bis Texfeld40)..hab ein wenig geschaut und traf auf das hier
      PHP-Code:
      foreach($_POST as $key => $value)
        { print(
      htmlspecialchars("Name: [$key] Wert: [$value]")."<br>"); } 
      das is das was du meinst glaub ich.....jetzt übertragen...hm...
      PHP-Code:

      $Anzahl 
      0;
      foreach(
      $_POST as $key => $value)
        { if ([
      $key] != ""){$Anzahl++;} } 
      Würde das so klappen?

      Edit: Moment.....dann macht er das ja für alle Felder.....wenn ich sagen wir 120 Felder hab und davon 40 mit dem Name Textfeld01 bis 40....wie greife ich mit der foreach-schleife auf genau nur diese felder mit diesen name (Textfeld01)(Textfeld02) etc etc..

      Kommentar


      • #4
        wie greife ich mit der foreach-schleife auf genau nur diese felder mit diesen name (Textfeld01)(Textfeld02)
        Indem Du sie eben nicht mit Name01 etc. bezeichnest, sondern als Array, Name[1] ...
        [COLOR="#F5F5FF"]--[/COLOR]
        [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
        „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
        [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
        [COLOR="#F5F5FF"]
        --[/COLOR]

        Kommentar


        • #5
          In $key hast Du den Array-Schlüssel, also bspw. "Textfeld01".
          Nun mußt Du prüfen, ob es auch an dem ist.

          PHP-Code:
          $count 0;
          foreach(
          $_POST as $key=>$val)
            if(
          strpos('Textfeld',$key) === && trim($val) != ''$count++; 
          Competence-Center -> Enjoy the Informatrix
          PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

          Kommentar


          • #6
            Bezieht sich dein Code auf die HTML Bezeichnung ohne "Array"? Habs ausprobiert...kommt zwar keine Fehlermeldung aber der counter ist immer auf 0. Hier mal mein PHP Code:
            PHP-Code:
             foreach($_POST as $key=>$val) {
                          
            $count 0;
                            if(
            strpos('Diagnose',$key) === && trim($val) != '') {$count++;}}
                            
                            echo 
            'Der Zaehler ist ' $count 
            Hab den Counter mal reingezogen...macht hoffentlich kein Unterschied. Die Ausgabe:
            PHP-Code:
            Der Zaehler ist 0 
            Damit auch die anderen verstehen wie ich das HTML Formular bezeichnet ist. Ein Auszug:
            PHP-Code:
            <!-- *****  02. Erfassung der Diagnosen ****************************************************************************************  -->
              <div id="DivErfassungDiagnosen">
                <fieldset>
                <legend>Erfassung der Diagnosen</legend>
                <table width="100%" border="0">
                  <tr>
                    <td>&nbsp;</td>
                    <td height="30" class="Bezeichnung"><div align="center">Diagnose</div></td>
                    <td class="Bezeichnung">&nbsp;</td>
                    <td class="Bezeichnung"><div align="center">ICD-10</div></td>
                    <td class="Bezeichnung">&nbsp;</td>
                    <td class="Bezeichnung"><div align="center">*Quelle</div></td>
                    <td class="Bezeichnung">&nbsp;</td>
                    <td class="Bezeichnung"><div align="center">Sicherheit</div></td>
                    <td colspan="3" class="Bezeichnung"><div align="center" class="Bezeichnung">Zeitpunkt der Erstdiagnose</div></td>
                    <td colspan="3"><div align="center" class="Bezeichnung"> Diagnose aktuell?</div></td>
                    <td colspan="2"><div align="center" class="Bezeichnung">Subjektiver Beschwerdegrad</div></td>
                  </tr>
                  <tr>
                    <td width="10" class="Bezeichnung">01</td>
                    <td width="141" height="40"><span class="Spalte">
                      <label for="Diagnose01"></label>
                      <textarea name="Diagnose01" cols="20" rows="1" id="Diagnose01"></textarea>
                      </span></td>
                    <td width="20">&nbsp;</td>
                    <td width="141"><span class="Spalte">
                      <label for="ICD01"></label>
                      <textarea name="ICD01" cols="20" rows="1" id="ICD01"></textarea>
                      </span></td>
                    <td width="22">&nbsp;</td>
                    <td width="105"><label for="Quelle01"></label>
                      <select name="Quelle01" size="1" id="Quelle01">
                        <option value="" selected="selected">0-Nichts</option>
                        <option value="ST,HA,PA">1-ST,HA,PA</option>
                        <option value="HA,PA">2-HA,PA</option>
                        <option value="ST,PA">3-ST,PA</option>
                        <option value="ST,HA">4-ST,HA</option>
                        <option value="ST">5-nurST</option>
                        <option value="HA">6-nurHA</option>
                        <option value="PA">7-nurPA</option>
                      </select></td>
                    <td width="5">&nbsp;</td>
                    <td width="166"><label for="Sicherheit01"></label>
                      <select name="Sicherheit01" size="1" id="Sicherheit01">
                        <option value="" selected="selected">0-Nichts</option>
                        <option value="sicher">1-sicher</option>
                        <option value="sehrwahrscheinlich">2-sehr wahrscheinlich</option>
                        <option value="wahrscheinlich">3-wahrscheinlich</option>
                        <option value="fraglich">4-fraglich</option>
                        <option value="sehrunsicher">5-sehr unsicher</option>
                      </select></td>
                    <td width="16">&nbsp;</td>
                    <td width="57"><label for="Monat02"></label>
                      <select  type="text" name="Monat01" id="Monat01" value="">
                        
                        
                        ';
                       
                        
                        
                        <?php 
                         
            for($i 1$i <= 12$i++ )
                       {
                            print 
            '<option>'.$i.'</option> ';
                       }
                       
            ?>
                      </select>
                    </td>
                    <td width="97"><label for="Jahr01"><span class="Spalte">
                      <select  type="text" name="Jahr01" id="Jahr01" value="">
                        <?php 
                         $thisYear 
            date("o");
                       for(
            $i $thisYear$i >= 1900$i-- )
                       {
                            print 
            '<option>'.$i.'</option> ';
                       }
                       
            ?>
                      </select>
                      </span></label></td>
                    <td width="11">&nbsp;</td>
                    <td width="53" class="Informationen"><label for="DiagnoseAkt01"></label>
                      <input type="radio" name="DiagnoseAkt01" id="DiagnoseAkt01" value="AktuellJa" />
                      Ja</td>
                    <td width="72" class="Informationen"><input type="radio" name="DiagnoseAkt01" id="AktuellNein" value="AktuellNein" />
                      Nein</td>
                    <td width="24">&nbsp;</td>
                    <td width="192"><label for="SubjektiverBeschwerdegrad01"></label>
                      <select name="SubjektiverBeschwerdegrad01" size="1" id="SubjektiverBeschwerdegrad01">
                        <option value="">0-nichts</option>
                        <option value="keiner">1-keiner</option>
                        <option value="gering">2-gering</option>
                        <option value="deutlich">3-deutlich</option>
                        <option value="schwer">4-schwer</option>
                        <option value="nichtbeurteilbar">5-nicht beurteilbar</option>
                      </select></td>
                  </tr>
                  <tr>
                    <td width="10" class="Bezeichnung">02</td>
                    <td height="40"><span class="Spalte">
                      <label for="Diagnose02"></label>
                      <textarea name="Diagnose02" cols="20" rows="1" id="Diagnose02"></textarea>
                      </span></td>
                    <td>&nbsp;</td>
                    <td><span class="Spalte">
                      <label for="ICD02"></label>
                      <textarea name="ICD02" cols="20" rows="1" id="ICD02"></textarea>
                      </span></td>
                    <td>&nbsp;</td>
                    <td><label for="Quelle02"></label>
                      <select name="Quelle02" size="1" id="Quelle02">
                        <option value="" selected="selected">0-Nichts</option>
                        <option value="ST,HA,PA">1-ST,HA,PA</option>
                        <option value="HA,PA">2-HA,PA</option>
                        <option value="ST,PA">3-ST,PA</option>
                        <option value="ST,HA">4-ST,HA</option>
                        <option value="ST">5-nurST</option>
                        <option value="HA">6-nurHA</option>
                        <option value="PA">7-nurPA</option>
                      </select></td>
                    <td>&nbsp;</td>
                    <td><label for="Sicherheit02"></label>
                      <select name="Sicherheit02" size="1" id="Sicherheit02">
                        <option value=""selected="selected">0-Nichts</option>
                        <option value="sicher">1-sicher</option>
                        <option value="sehrwahrscheinlich">2-sehr wahrscheinlich</option>
                        <option value="wahrscheinlich">3-wahrscheinlich</option>
                        <option value="fraglich">4-fraglich</option>
                        <option value="sehrunsicher">5-sehr unsicher</option>
                      </select></td>
                    <td>&nbsp;</td>
                    <label for="Monat02"></label>
                    <td><select  type="text" name="Monat02" id="Monat02" value="">
                        
                        ';
                       
                        
                        <?php 
                         
            for($i 1$i <= 12$i++ )
                       {
                            print 
            '<option>'.$i.'</option> ';
                       }
                       
            ?>
                      </select></td>
                    <td><span class="Spalte">
                      <select  type="text" name="Jahr02" id="Jahr02" value="">
                        <?php 
                         $thisYear 
            date("o");
                       for(
            $i $thisYear$i >= 1900$i-- )
                       {
                            print 
            '<option>'.$i.'</option> ';
                       }
                       
            ?>
                      </select>
                      </span></td>
                    <td>&nbsp;</td>
                    <td width="53" class="Informationen"><label for="DiagnoseAkt02"></label>
                      <input type="radio" name="DiagnoseAkt02" id="DiagnoseAkt02" value="AktuellJa" />
                      Ja</td>
                    <td width="72" class="Informationen"><input type="radio" name="DiagnoseAkt02" id="AktuellNein" value="AktuellNein" />
                      Nein</td>
                    <td>&nbsp;</td>
                    <td width="192"><label for="SubjektiverBeschwerdegrad02"></label>
                      <select name="SubjektiverBeschwerdegrad02" size="1" id="SubjektiverBeschwerdegrad02">
                        <option value="">0-nichts</option>
                        <option value="keiner">1-keiner</option>
                        <option value="gering">2-gering</option>
                        <option value="deutlich">3-deutlich</option>
                        <option value="schwer">4-schwer</option>
                        <option value="nichtbeurteilbar">5-nicht beurteilbar</option>
                      </select></td>
                  </tr>
                  <tr>
                    <td width="10" class="Bezeichnung">03</td>
                    <td height="40"><span class="Spalte">
                      <label for="Diagnose03"></label>
                      <textarea name="Diagnose03" cols="20" rows="1" id="Diagnose03"></textarea>
                      </span></td>
                    <td>&nbsp;</td>
                    <td><span class="Spalte">
                      <label for="ICD03"></label>
                      <textarea name="ICD03" cols="20" rows="1" id="ICD03"></textarea>
                      </span></td>
                    <td>&nbsp;</td>
                    <td><label for="Quelle03"></label>
                      <select name="Quelle03" size="1" id="Quelle03">
                        <option value="" selected="selected">0-Nichts</option>
                        <option value="ST,HA,PA">1-ST,HA,PA</option>
                        <option value="HA,PA">2-HA,PA</option>
                        <option value="ST,PA">3-ST,PA</option>
                        <option value="ST,HA">4-ST,HA</option>
                        <option value="ST">5-nurST</option>
                        <option value="HA">6-nurHA</option>
                        <option value="PA">7-nurPA</option>
                      </select></td>
                    <td>&nbsp;</td>
                    <td><label for="Sicherheit03"></label>
                      <select name="Sicherheit03" size="1" id="Sicherheit03">
                        <option value="" selected="selected">0-Nichts</option>
                        <option value="sicher">1-sicher</option>
                        <option value="sehrwahrscheinlich">2-sehr wahrscheinlich</option>
                        <option value="wahrscheinlich">3-wahrscheinlich</option>
                        <option value="fraglich">4-fraglich</option>
                        <option value="sehrunsicher">5-sehr unsicher</option>
                      </select></td>
                    <td>&nbsp;</td>
                    <td><select  type="text" name="Monat03" id="Monat03" value="">
                        
                        ';
                       
                        
                        <?php 
                         
            for($i 1$i <= 12$i++ )
                       {
                            print 
            '<option>'.$i.'</option> ';
                       }
                       
            ?>
                      </select></td>
                    <td><span class="Spalte">
                      <select  type="text" name="Jahr03" id="Jahr03" value="">
                        <?php 
                         $thisYear 
            date("o");
                       for(
            $i $thisYear$i >= 1900$i-- )
                       {
                            print 
            '<option>'.$i.'</option> ';
                       }
                       
            ?>
                      </select>
                      </span></td>
                    <td>&nbsp;</td>
                    <td width="53" class="Informationen"><label for="DiagnoseAkt03"></label>
                      <input type="radio" name="DiagnoseAkt03" id="DiagnoseAkt03" value="AktuellJa" />
                      Ja</td>
                    <td width="72" class="Informationen"><input type="radio" name="DiagnoseAkt03" id="AktuellNein" value="AktuellNein" />
                      Nein</td>
                    <td>&nbsp;</td>
                    <td width="192"><label for="SubjektiverBeschwerdegrad03"></label>
                      <select name="SubjektiverBeschwerdegrad03" size="1" id="SubjektiverBeschwerdegrad03">
                        <option value="">0-nichts</option>
                        <option value="keiner">1-keiner</option>
                        <option value="gering">2-gering</option>
                        <option value="deutlich">3-deutlich</option>
                        <option value="schwer">4-schwer</option>
                        <option value="nichtbeurteilbar">5-nicht beurteilbar</option>
                      </select></td>
                  </tr>
                  <tr>
            Die Bezeichnung für die "gesuchten/gezaehlten" Felder ist also
            PHP-Code:
             <textarea name="Diagnose01" cols="20" rows="1" id="Diagnose01"></textarea>.....
             <
            textarea name="Diagnose02" cols="20" rows="1" id="Diagnose02"></textarea
            etc...soll ich das jetz umändern statt Diagnose01 zu Diagnose[1]..? Zumindest so verstanden aber ob der Code dann funktioniert

            EDIT: Habs mal umgeändert....den Namen auf Diagnose[1] aber dann funktiert der Code nicht mehr.....weil trim() kein Array erwartet, sondern einen String.

            Kommentar


            • #7
              Steht denn was drin in den Textareas? Wenn nicht, wird das Statement ebenfalls false und der Counter nicht gezählt!

              Alternativ kannst Du auch mal probieren gegen false zu prüfen.
              PHP-Code:
              if(strpos('Diagnose',$key) !== false && ... 
              Ansonsten probier es doch eifach mal mit Arrays als name=-Bezeichner:
              Code:
              <textarea name="Diagnose[]" ...
              <textarea name="Diagnose[]" ...
              Dann kannst per PHP folgendes machen:
              PHP-Code:
              $count 0;
              foreach(
              $_POST['Diagnose'] as $diagnose)
                if(
              trim($diagnose) != ''$count++; 
              Competence-Center -> Enjoy the Informatrix
              PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

              Kommentar


              • #8
                wenn du deine Felder Diagnose[1], Diagnose[2] etc nennst, kannst du auf alle Felder via
                PHP-Code:
                $_POST["Diagnose"
                zugreifen. Um also die ausgefüllten Felder zu Zählen brauchst du einfach nur
                PHP-Code:
                $i=0;
                foreach(
                $_POST["Diagnose"] as $value)
                   if(
                trim($value != "")) $i++; 
                zu schreiben.

                [EDIT]
                zu langsam ...

                Kommentar


                • #9
                  Zitat von Buhmann Beitrag anzeigen
                  wenn du deine Felder Diagnose[1], Diagnose[2] etc nennst, kannst du auf alle Felder via
                  PHP-Code:
                  $_POST["Diagnose"
                  zugreifen. Um also die ausgefüllten Felder zu Zählen brauchst du einfach nur
                  PHP-Code:
                  $i=0;
                  foreach(
                  $_POST["Diagnose"] as $value)
                     if(
                  trim($value != "")) $i++; 
                  zu schreiben.

                  [EDIT]
                  zu langsam ...
                  Arrays sind der richtige Ansatz...
                  PHP-Code:
                  echo count($_POST['Diagnose']); 
                  einfacher gehts nicht oder ??

                  Kommentar


                  • #10
                    mom....war zu langsam..erstmal eure vorschläge ausprobieren

                    Kommentar


                    • #11
                      Also das ist === korrekt und SOLLTE bei strpos() verwendet werden!
                      Steht in der Doku zum Nachlesen, falls Du Zeit hast...

                      @Papst:
                      Er will ja nur die gefüllten Felder zählen, nicht alle!
                      Competence-Center -> Enjoy the Informatrix
                      PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

                      Kommentar


                      • #12
                        Juhuuuuuuuu :P

                        es klappt. Arrays to make a better world.....:P

                        vielen Dank!

                        Kommentar


                        • #13
                          upss.duplikate wollte ich nicht..schönen tag noch :P

                          ps: === werd ich mir anschauen..dir auch besten dank für deine mühe

                          Kommentar


                          • #14
                            Zitat von Arne Drews Beitrag anzeigen
                            @Papst:
                            Er will ja nur die gefüllten Felder zählen, nicht alle!
                            Uuups.. mein Fehler..
                            dann würde ich etwas in der Richtung probieren:

                            PHP-Code:
                            function arrayRemoveEmptyValues($value)
                            {
                                return !empty(
                            $value);
                            }

                            $test = array('hallo' => '''name' => 'test''foo' => 'bar''bar' => '');
                            $test array_filter($test'arrayRemoveEmtpyValues');

                            echo 
                            count($test); 

                            Kommentar


                            • #15
                              @Papst:
                              Bis auf den Rechtschreibfehler ist das natürlich die elegantere Variante...
                              Competence-Center -> Enjoy the Informatrix
                              PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

                              Kommentar

                              Lädt...
                              X