count(explode) zählt eins zuviel

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

  • count(explode) zählt eins zuviel

    schreibe Datensätz in Form von "1,2,5,7" in ein Feld in die Datenbank. Beim auslesen zähle ich dann mittels
    PHP-Code:
    $zaehlecount(explode(","$d)); 
    alle zahlen, die durch ein Komma getrennt sind. Ist allerdings das Feld leer und somit auch kein Komma enthalten zählt er trotzdem 1 anstatt 0, was ja definitiv falsch ist.

  • #2
    er zählt schon richtig, auch ein leeres Feld ist ein Feld.

    $d = "1,2,3,4,5" ergibt 5 Felder

    $d = "1, , , ,33" ergibt auch 5 Felder

    es kommt ja nicht drauf an ob in dem Feld ein Komma
    enthalten ist, sondern an den Stellen wo ein Komma
    ist, wird in Felder aufgesplittet.
    Zuletzt geändert von Koala; 14.05.2006, 16:59.

    Kommentar


    • #3
      aber ich möchte nur die Anzahl der Zahlen zählen und falls keine drin sind, darf das nicht 1 sein.

      Kommentar


      • #4
        wär wohl am einfachsten mit preg_match_all:

        preg_match_all("/[02-9]*/", $html, $treffer, PREG_SET_ORDER);

        hab ich jetzt aber nicht getestet.

        Du erhälst ein array mit den Treffern
        - laß Dir das Array mit print_r ausgeben,
        damit Du siehst wo sich die Treffer befinden.

        Kommentar


        • #5
          noch einfacher:

          PHP-Code:
          if($felder != '') {
           
          # Deine explode und COunt anweisungen und was sonst noch reinsoll...
          } else {
           echo 
          "Kein Eintrag vorhanden.";

          Funktioniert recht zuverlässig, jedenfalls meinen Ansprüchen reicht das. Zusätzliche Sicherheit würde folgendes Script ergeben:

          PHP-Code:
          $array explode(',',$felder);
          if(
          $felder != '' && $array[0] != '') {
           
          # Deine Anweisungen
          } else {
           echo 
          "Kein Eintrag vorhanden.";

          Grüsse, Chris
          [COLOR=orangered]Welch triste Epoche, in der es leichter ist, ein Atom zu zertrümmern als ein Vorurteil![/COLOR]

          cubetech in Bern » Webdesign, Infrastruktur, Social Media, VoIP

          Kommentar


          • #6
            if ($felder != " ") kann so nicht hinhauen.

            In felder sind ja auch nach dem explode noch alle
            Elemente enthalten, ist also immer etwas drin.

            Es geht ja um einzelne Elemente.

            $array = explode(",", $felder);

            foreach ($array as $wert)
            {
            if ($wert != " " && $wert != "1")
            {
            $newarray[] = $wert;
            }
            }

            $anzahl = count($nwearray);

            Kommentar


            • #7
              Wer lesen kann ist klar im Vorteil... Du hast wahrscheinlich übersehen dass bei meinem ersten Schnipsel die Explode-Anweisung erst NACH dem if-test kommt...

              Grüsse, Chris
              [COLOR=orangered]Welch triste Epoche, in der es leichter ist, ein Atom zu zertrümmern als ein Vorurteil![/COLOR]

              cubetech in Bern » Webdesign, Infrastruktur, Social Media, VoIP

              Kommentar


              • #8
                ich kann gut lesen.

                Wenn Du ein Array hast wie im Eröffnungsposting z.B:

                $felder = (1,2,3, ,6,7)

                dann bringt die Abfrage if ($felder != " ") nix.

                Bei der Frage ging es darum alle Felder zu zählen
                die durch Komma getrennt sind und eine Zahl
                enthalten - was nützt da Dein if?
                Zuletzt geändert von Koala; 14.05.2006, 18:00.

                Kommentar


                • #9
                  Im Eröffnungsposting hat er eine Variable mit einem String und erstellt den Array mit explode und bei meinem Codeschnipsel hab ich hingeschrieben dass dieses Explode NACH der if-Anweisung folgt.
                  [COLOR=orangered]Welch triste Epoche, in der es leichter ist, ein Atom zu zertrümmern als ein Vorurteil![/COLOR]

                  cubetech in Bern » Webdesign, Infrastruktur, Social Media, VoIP

                  Kommentar


                  • #10
                    Nochmals den einfacheren Codeschnipsel im Detail:

                    PHP-Code:
                    <?php

                    $felder 
                    "1,2,3,4,5,6,7";

                    if(
                    $felder != '') {
                     
                    $array_felder explode(',',$felder);
                     
                    $array_count count($array_felder);
                    } else {
                     
                    $array_count 0;
                    }

                    echo 
                    'Es sind ' $array_count ' Felder vorhanden.';

                    ?>
                    Hoffe dies war auch für Dich verständlich wie ich es gemeint habe.

                    Grüsse, Chris
                    [COLOR=orangered]Welch triste Epoche, in der es leichter ist, ein Atom zu zertrümmern als ein Vorurteil![/COLOR]

                    cubetech in Bern » Webdesign, Infrastruktur, Social Media, VoIP

                    Kommentar


                    • #11
                      und dann weiß er wieviel Zahlen enthalten sind?

                      Qua....

                      du raffst es echt nicht - das Problem war,
                      daß er zwar die richtige Anzahl der durch Komma getrennten
                      Felder bekommt aber diese Anzahl gar nicht will,
                      da die Felder nur gezählt werden sollen wenn sie eine
                      Zahl enthalten.
                      Zuletzt geändert von Koala; 14.05.2006, 18:07.

                      Kommentar


                      • #12
                        siehe meinen letzten Post...
                        [COLOR=orangered]Welch triste Epoche, in der es leichter ist, ein Atom zu zertrümmern als ein Vorurteil![/COLOR]

                        cubetech in Bern » Webdesign, Infrastruktur, Social Media, VoIP

                        Kommentar


                        • #13
                          lies Dir das EP noch mal durch,

                          im Array sind auch LEERE Felder drin!

                          aus dem EP:

                          Ist allerdings das Feld leer und somit auch kein Komma enthalten zählt er trotzdem 1 anstatt 0, was ja definitiv falsch ist.
                          Zuletzt geändert von Koala; 14.05.2006, 18:10.

                          Kommentar


                          • #14
                            Ist allerdings das Feld leer und somit auch kein Komma enthalten zählt er trotzdem 1 anstatt 0, was ja definitiv falsch ist.
                            Mit Feld meint er zu 99% die Variable...

                            Meiner Übersetzung nach sollte das heissen: Ist die Variable leer gibt count() trotzdem 1 zurück, was ja aber 0 sein sollte.

                            EDIT:

                            am besten lassen wir jetzt die unsinnige diskussion und warten bis uns robftp gesagt hat was er denn nun wirklich meint

                            Zuletzt geändert von chrigu99; 14.05.2006, 18:11.
                            [COLOR=orangered]Welch triste Epoche, in der es leichter ist, ein Atom zu zertrümmern als ein Vorurteil![/COLOR]

                            cubetech in Bern » Webdesign, Infrastruktur, Social Media, VoIP

                            Kommentar


                            • #15
                              er meint zu 100% nicht die Variable:


                              Original geschrieben von robftp
                              aber ich möchte nur die Anzahl der Zahlen zählen und falls keine drin sind, darf das nicht 1 sein.

                              Kommentar

                              Lädt...
                              X