Ankündigung

Einklappen
Keine Ankündigung bisher.

Ausgabe DB mit if/elseif irgendwie falsch

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

  • Ausgabe DB mit if/elseif irgendwie falsch

    Ich habe eine Hunde-Ausstellungstabelle...
    In der Datenbank (mysql) ist in der Spalte BIS folgendes eingetragen: BIS3B
    Da dort verschiedene Einträge vorgenommen werden können, soll über php die Ausgabe geregelt werden:
    PHP-Code:
    if ($entry->BIS == 'BIS' ) {echo "BIS";}
                        elseif (
    $entry->BIS == 'BIS1J' ) {echo "BIS 1.-Junior-";}
                        elseif (
    $entry->BIS == 'BIS2J' ) {echo "BIS 2.-Junior-";}
                        elseif (
    $entry->BIS == 'BIS3J' ) {echo "BIS 3.-Junior-";}
                        elseif (
    $entry->BIS == 'BIS4J' ) {echo "BIS 4.-Junior-";}
                        
                        elseif (
    $entry->BIS == 'BIS1P' ) {echo "BIS 1.-Puppy-";}
                        elseif (
    $entry->BIS == 'BIS2P' ) {echo "BIS 2.-Puppy-";}
                        elseif (
    $entry->BIS == 'BIS3P' ) {echo "BIS 3.-Puppy-";}
                        elseif (
    $entry->BIS == 'BIS4P' ) {echo "BIS 4.-Puppy-";}                    
                        
                        elseif (
    $entry->BIS == 'BIS1B' ) {echo "BIS 1.-Baby-";}
                        elseif (
    $entry->BIS == 'BIS2B' ) {echo "BIS 2.-Baby-";}
                        elseif (
    $entry->BIS == 'BIS3B' ) {echo "BIS 3.-Baby-";}
                        elseif (
    $entry->BIS == 'BIS4B' ) {echo "BIS 4.-Baby-";}        

                        elseif (
    $entry->BIS == 'BIS1V' ) {echo "BIS 1.-Veteran-";}
                        elseif (
    $entry->BIS == 'BIS2V' ) {echo "BIS 2.-Veteran-";}
                        elseif (
    $entry->BIS == 'BIS3V' ) {echo "BIS 3.-Veteran-";}
                        elseif (
    $entry->BIS == 'BIS4V' ) {echo "BIS 4.-Veteran-";} 

    die Ausgabe auf dem Bildschirm lautet aber
    BIS 3.-Baby- BIS3B
    Keine Leerzeichen in der DB, alles utf-8.

    Was mache ich (mal wieder) falsch?
    Unsere Katzen
    Unsere Hunde

  • #2
    AW: Ausgabe DB mit if/elseif irgendwie falsch

    Da erkennt man leider nicht, wie Du das "BIS3B" ausgibst. Ein Grund könnte sein, dass Du im HTML einen Zeilenumbruch hast, der vom Browser in ein Leerzeichen umgewandelt wird.
    Davon unabhängig:
    Verbesserungsvorschlag Stufe 1: Verwende einen switch.
    Verbesserungsvorschlag Stufe 2: Trage die zusätzlichen Werte in einer weiteren Spalte in der Datenbank ein.

    Kommentar


    • #3
      AW: Ausgabe DB mit if/elseif irgendwie falsch

      Ich würde das gleich in der datenbankabfrage via Case when einbinden... https://dev.mysql.com/doc/refman/5.0/en/case.html

      Gruß Testie

      Kommentar


      • #4
        AW: Ausgabe DB mit if/elseif irgendwie falsch

        Dein Fehler liegt in der if-Abfrage.

        Wenn du {} verwendest muss eine korrekte Abfrage so aussehen:

        PHP-Code:
        if($foo == $bar) {
        echo ...
        } else if(
        $foo $bar) { 
        echo ...
        } else {
        echo ...


        Die schreibweise die du verwendest ist ohne {} gedacht. Siehe hier:

        PHP-Code:
        if($foo == $bar):
        echo ...
        elseif(
        $foo $bar): 
        echo ...
        else:
        echo ...
        endif; 
        Bei dir fehlt unteranderem das "else" egal in welcher der oben genannten Schreibweisen. Aber ich würde es auch wie die Vorposter empfehlen mit Switch und Case arbeiten.

        Kommentar


        • #5
          AW: Ausgabe DB mit if/elseif irgendwie falsch

          Wirklich performanter ist switch case eigentlich nicht in Vergleich zu if/else, aber besser lesbar.

          Mich würde nur interessieren ob hier die Datenbank mit case when then schneller ist oder php mit if/else / switch/case.

          Hat hier wer einen Link zu einen kleinen Benchmark zur Hand?

          Gruß,
          Testie

          Kommentar


          • #6
            AW: Ausgabe DB mit if/elseif irgendwie falsch

            Nachdem ich die ganzen Tipps durchprobiert hatte - immer das gleiche Ergebnis.
            Nur war ich ein wenig blöde und hatte durch copy-und-paste (da diese Art der Abfrage öfter vorkomt) ganz am Ende des Scripts irgendwo einfach nur den Inhalt der Spalte ausgegeben. Ergo ein saudummer Fehler meinerseits der mich fast zur Weißglut gebracht hat ...

            Für mich ist die if-Version lesbarer - und soweit ich mich eingelesen habe, die switch-Version nicht wirklich schneller.

            Gerne kann ich zu Testzwecken aber die switch-Version (ich schicke dir die If-Variante, du baust um und ich lade hoch) online stellen....

            @Shadoworks: ein else kommt ganz zum Schluss (aber nur ein Leerzeichen)
            Unsere Katzen
            Unsere Hunde

            Kommentar


            • #7
              AW: Ausgabe DB mit if/elseif irgendwie falsch

              Das hier dürfte noch lesbarer sein:

              PHP-Code:
              $data = array(
                  
              'BIS'   => 'BIS',
                  
              'BIS1J' => 'BIS 1.-Junior-',
                  
              'BIS2J' => 'BIS 2.-Junior-',
                  
              'BIS3J' => 'BIS 3.-Junior-',
                  
              'BIS4J' => 'BIS 4.-Junior-',
                  
              'BIS1P' => 'BIS 1.-Puppy-',
                  
              'BIS2P' => 'BIS 2.-Puppy-',
                  
              'BIS3P' => 'BIS 3.-Puppy-',
                  
              'BIS4P' => 'BIS 4.-Puppy-',
                  
              'BIS1B' => 'BIS 1.-Baby-',
                  
              'BIS2B' => 'BIS 2.-Baby-',
                  
              'BIS3B' => 'BIS 3.-Baby-',
                  
              'BIS4B' => 'BIS 4.-Baby-',
                  
              'BIS1V' => 'BIS 1.-Veteran-',
                  
              'BIS2V' => 'BIS 2.-Veteran-',
                  
              'BIS3V' => 'BIS 3.-Veteran-',
                  
              'BIS4V' => 'BIS 4.-Veteran-',
              );

              echo isset(
              $data[$entry->BIS]) ? $data[$entry->BIS] : ''
              Der Sicherheit halber hab ich noch die alte Array-Syntax genommen, da ich nicht weiß welche PHP Version du hast.

              Ansonsten stimme ich Sempervivum und Testie zu. Entweder diese Verknüpfungen direkt in der DB hinterhalten oder direkt im SQL die Abfragen mit rein. Beides ist empfehlenswerter.

              Grüße

              Kommentar

              homepage-forum.de - Hilfe für Webmaster! Statistiken

              Einklappen

              Themen: 56.857   Beiträge: 430.634   Mitglieder: 28.604   Aktive Mitglieder: 39
              Willkommen an unser neuestes Mitglied, Christian_Hansen.

              Online-Benutzer

              Einklappen

              204 Benutzer sind jetzt online. Registrierte Benutzer: 3, Gäste: 201.

              Mit 3.502 Benutzern waren am 23.01.2020 um 17:20 die meisten Benutzer gleichzeitig online.

              Die neuesten Themen

              Einklappen

              Die neuesten Beiträge

              Einklappen

              Lädt...
              X