Ankündigung

Einklappen
Keine Ankündigung bisher.

HTML Formatierung per IF Anweisung

Einklappen

Neue Werbung 2019

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

  • HTML Formatierung per IF Anweisung

    Moin Leute,

    ich möchte in Wordpress und mit dem Plugin ACF (advanced custom fields) ein neues Template schreiben.

    Hierzu brauche ich bei einem Wort eine farbliche Kennzeichnung anhand des Status... Das Dropdown-Feld beinhaltet 3 Werte (gruen, gelb, rot)

    Leider läuft mein derzeitiger Code in den 500 error. Vermutlich stimmt irgendwo die Symantik nicht...

    PHP-Code:
    <?php $field get_field('status');
        if( 
    $field['value'] == 'gruen' ) {
        echo 
    '<span style="color:green;">'$label ' </span>'; }
        else ( 
    $field['value'] != 'gruen' ) {
        echo 
    '<span style="color:red;">'$label ' </span>'; } ?>
    Die Variablen stimmen soweit... Status heißt mein Feld, welches die oben genannten drei Werte beinhaltet.

    Kann mir jemand auf die Sprünge helfen?

    Hier noch die ACF Doku: https://www.advancedcustomfields.com...ces/get_field/

    Vielen Dank.

  • #2
    Leider läuft mein derzeitiger Code in den 500 error.
    Error Log anschauen, oder Error Reporting hochdrehen, da steht genaueres.

    Es geht auch einfacher.. Nimm ein Array. Und es ist besser CSS Klassen zu verwenden statt inline CSS.
    The string "()()" is not palindrom but the String "())(" is.

    Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
    PHP.de Wissenssammlung | Kein Support per PN

    Kommentar


    • #3
      Bei Error 500 solltest du erstmal ins error.log deines Webservers gucken.
      [I]You know, my wife sometimes looks at me strangely. „Duncan“, she says, „there's more to life than Solaris“. Frankly, it's like she speaks another language. I mean, the words make sense individually, but put them together and it's complete nonsense.[/I]

      Kommentar


      • #4
        PHP-Code:
        $field get_field('status'
        Das ist doch unnötig, warum kopierst du den Wert in eine andere Variable?

        $label kommt wo her?
        Warum ist der Status eine Farbe und keine beschreibende Eigenschaft?

        PHP-Code:
        echo '<span style="color:green;">'$label ' </span>'; } 
        Bist du sicher das du hier echo verwenden darfst?
        Warum inlinestyles und keine CSS Klasse?

        Die AFC Doku habe ich mir gar nicht erst durchgelesen, das ist deine Aufgabe, wir sind hier bei PHP und weisen dich auf PHP Fehler hin, für Wordpress und deren Plugins fragst du den Herstellen oder gehst in das Wordpress Forum.

        Kommentar


        • #5
          Okay ich schau mal rein, aber das heißt auch das mein Code so falsch gar nicht ist?

          Kommentar


          • #6
            Die Kommas beim echo könnten den Fehler verursachen.

            Richtig gehts so: https://www.php.net/manual/de/langua...ors.string.php

            Kommentar


            • #7
              Wie gesagt.. Inline CSS ist nicht ideal, nutze doch css-Klassen dafür.

              Rein auf deine if-Wurst bezogen .. Nutze Arrays oder warum nicht gleich:

              PHP-Code:
              printf(
                  
              '<span style="color:%s;">%s</span>',
                  
              htmlspecialchars($field['value']),
                  
              htmlspecialchars($label)
              ); 
              ?
              The string "()()" is not palindrom but the String "())(" is.

              Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
              PHP.de Wissenssammlung | Kein Support per PN

              Kommentar


              • #8
                Hier ist der Fehler


                Fatal error: Uncaught Error: Call to undefined function mysql_connect() in /home/.../wp-includes/wp-db.php:1564 Stack trace: #0 /home/.../wp-includes/wp-db.php(592): wpdb->db_connect() #1 /home/.../wp-includes/load.php(404): wpdb->__construct('dbname', 'dbpass', 'dbuser', 'localhost') #2 /home/.../wp-settings.php(106): require_wp_db() #3 /home/.../wp-config.php(95): require_once('/home/...') #4 /home/.../wp-load.php(37): require_once('/home/...') #5 /home/.../wp-blog-header.php(13): require_once('/home/...') #6 /home/.../index.php(17): require('/home/...') #7 {main} thrown in /home/.../wp-includes/wp-db.php on line 1564


                Für mich ist das aber wieder alles andere als hilfreich, denn er sagt ja nun das ein Fehler in der DB Verbindung bzw. in der wp-db.php Datei steckt aber das ist so nicht richtig. Die Dateien und auch die Verbindungsdaten sind korrekt. Der Fehler entsteht ja durch mein oben geschriebenes Konstrukt. Ohne das läuft alles wunderbar...

                Kommentar


                • #9
                  Die Funktion im Handbuch von PHP in das Suchfeld kopieren und nachlesen, ich habe das schon mal für dich gemacht klick und lies
                  https://www.php.net/manual/en/functi...ql-connect.php

                  Kommentar


                  • #10
                    protestix

                    Danke. Weil ich es nicht besser weiß ^^ Aber ob inline oder klasse fand ich erstmal egal... Ich kann natürlich auch class="xy" machen. Ich wollte es erstmal zum laufen bringen und danach optimieren. Label soll meine Feldname sein... auch den sollte ACF mitbringen so dass ich ihn hier abrufen kann.

                    Vielleicht noch wichtig zu wissen: gruen ist nur mein interner Wert... ACF erlaubt es einen Wert und eine Bezeichnung zu vergeben z.B. gruen : Funktioniert oder rot : Defekt (die Bezeichnung sollte dann mein Label sein)

                    Kommentar


                    • #11
                      protestix

                      Ich weiß und sorry das ich gerade Dich wieder nerve
                      Aber wie gesagt der Fehler hat mit meinem Code oben eh nicht viel zu tun. Ich habs gelesen... aber das hilft mir bei der If-Abfrage nicht wirklich.

                      Kommentar


                      • #12
                        Code sieht nun so aus:

                        PHP-Code:
                        <?php $field get_field('status');
                            if ( 
                        $field['value'] == 'gruen' ) {
                            echo 
                        '<span class="valid">'$label ' </span>'; }
                            else ( 
                        $field['value'] != 'gruen' ) {
                            echo 
                        '<span class="invalid">'$label ' </span>'; } ?>
                        CSS
                        Code:
                        .valid {color: green}
                        .invalid {color:red}

                        Kommentar


                        • #13
                          kann man verkürzen zu
                          PHP-Code:
                          if ( get_field('status') === 'gruen' ) {
                              echo 
                          '<span class="valid">' $label ' </span>';
                          }else {
                              echo 
                          '<span class="invalid">' $label ' </span>';

                          Kommentar


                          • #14
                            Okay das hat schon mal fast funktioniert...

                            Ich habs noch mal ein wenig umgeschrieben... und die Punkte wieder durch die Kommas ersetzt da mit den Punkten der HTML Code hinter meinem Label ausgegeben wurde...

                            PHP-Code:
                            if ( get_field('status') == 'gruen' ) {
                                echo 
                            '<span class="valid">' the_field('status') , ' </span>'; }
                                else {
                                echo 
                            '<span class="invalid">' the_field('status') , ' </span>';
                                } 
                            the_field ist um das Feld direkt abzufragen
                            Und get_field um dessen Werte (gruen, rot, gelb) abzufragen...

                            Mein Problem ist nun noch das der Feldwert nicht korrekt berücksichtigt wird... dadurch ist es natürlich immer falsch und somit Klasse "invalid". In dem Falle müsste aber mein Ergebnis true sein...

                            Kommentar


                            • #15
                              Dann schau mal rein:

                              PHP-Code:
                              var_dumpget_field('status'), the_field('status') ); 
                              The string "()()" is not palindrom but the String "())(" is.

                              Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
                              PHP.de Wissenssammlung | Kein Support per PN

                              Kommentar

                              Lädt...
                              X