Ankündigung

Einklappen
Keine Ankündigung bisher.

Ausgabe x wenn Feld leer ansonsten Ausgabe y

Einklappen

Neue Werbung 2019

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

  • Ausgabe x wenn Feld leer ansonsten Ausgabe y

    Hallo zusammen!

    Ich versuche gerade, für Wordpress-Artikel eine Funktion zu basteln, die wenn ein benutzerdefiniertes Feld einen Wert enthält, einen Hinweistext ausgibt, das der Artikel geändert wurde. enthält das Feld keinen Wert, soll entsprechend ein anderer Text ausgegeben werden.

    Der Text, der bei einer Änderung ausgegeben werden soll hat Variablen aus einer Abfrage, die das Änderungsdatum anzeigt.

    PHP-Code:
    function updated_article() {
        global 
    $wpdb;
        
    $Aenderungsdatum get_post_meta($post->ID'Ãnderungsdatum'true);
        
    $upd_query "SELECT post_date, post_status, post_type, post_modified, DATE_FORMAT(post_modified, '%d.%m.%Y, um %H:%i:%s') AS post_modified_ger, post_title AS posttitle, post_name AS postname, guid AS postid FROM $wpdb->posts
            WHERE post_status = 'publish'
            AND post_type= 'post'
            AND post_modified >= post_date + INTERVAL 5 DAY
            AND post_modified >= CURDATE() - INTERVAL 2 MONTH        
            ORDER BY post_modified DESC
            LIMIT 3"
    ;    
        
    $upd_result $wpdb->get_results($upd_query);
        if ( empty(
    $upd_result) or( $Aenderungsdatum != "")) {
        echo 
    '<small>... keine aktualisierten Artikel</small>';
        }
        else
        {
        foreach (
    $upd_result as $updat) :
            
    $post_modified_ger $updat->post_modified_ger;
            
    $posttitle $updat->posttitle;
            
    $postname $updat->postname
            
    $postid $updat->postid;
        echo 
    '<ol>';
        echo 
    '<li style="list-style-type:none"><div class="akt-titel"><a href="'.$updat->postname.'" title="'.$updat->posttitle.'">'.$updat->posttitle.'</a></div><h6 class="aktualisiert1">Aktualisiert am: '.$updat->post_modified_ger.'</h6></li>';
        echo 
    '</ol>';
        endforeach;
    }

    Nur leider bekomme ich es absolut nicht hin.

    Denn er zeigt auch Artikel an, die zwar geändert bzw. aktualisiert wurden, die aber das benutzerdefinierte Feld nicht besitzen.

    Ich habe schon verschiedene Varianten mit XOR, OR oder || ausprobiert, leider ohne Erfolg. Auch mit der Variante
    PHP-Code:
    if ($Aenderungsdatum != ""
    Woran liegt es, das trotz des fehlenden Feldes - und somit des fehlenden Wertes was ausgegeben wird?

  • #2
    Richtig debuggen

    1. Man bemerkt, dass ein Skript nicht das tut, was es soll.
    2. Man schreibt an den Anfang des Scriptes die Zeile: error_reporting(-1);
    3. Man verwendet ini_set('display_errors', true); damit die Fehler auch angezeigt werden.
    4. Man versucht, die Stelle die daran Schuld sein kann, schonmal einzugrenzen. Falls dies nicht geht, wird zunächst das komplette Skript als fehlerhaft angesehen.
    5. An markanten Stellen im Skript lässt man sich wichtige Variableninhalte ausgeben und ggf. auch in bedingten Anweisungen eine kurze Ausgabe machen, um zu überprüfen, welche Bedingung ausgeführt wurde. Wichtig bei MySQL Fehlern (...not a valid MySQL result resource...): mysqli_error() verwenden oder Abfrage ausgeben und zb mit phpmyadmin testen.
    6. Schritt 5 wird so lange wiederholt, bis Unstimmigkeiten im Skript auffallen
    7. Damit hat man das Problem (Unstimmigkeit) gefunden und kann versuchen diese zu beheben. Hierzu dienen dann die PHP-Dokumentation und andere Quellen als Ratgeber.
    8. Lässt sich das konkrete Problem trotzdem nicht beheben, kann man in Foren um Rat fragen.
    9. Das Programm läuft und man kann die Debug-Ausgaben wieder entfernen.
    Die Deutsche Rechtschreibung ist Freeware! Du darfst sie kostenlos nutzen, allerdings ist sie nicht Open Source, d.h. Du darfst sie nicht verändern oder in veränderter Form veröffentlichen.

    Kommentar


    • #3
      Zitat von uha Beitrag anzeigen
      Richtig debuggen

      1. Man bemerkt, dass ein Skript nicht das tut, was es soll.
      2. Man schreibt an den Anfang des Scriptes die Zeile: error_reporting(-1);
      3. Man verwendet ini_set('display_errors', true); damit die Fehler auch angezeigt werden.
      4. Man versucht, die Stelle die daran Schuld sein kann, schonmal einzugrenzen. Falls dies nicht geht, wird zunächst das komplette Skript als fehlerhaft angesehen.
      5. An markanten Stellen im Skript lässt man sich wichtige Variableninhalte ausgeben und ggf. auch in bedingten Anweisungen eine kurze Ausgabe machen, um zu überprüfen, welche Bedingung ausgeführt wurde. Wichtig bei MySQL Fehlern (...not a valid MySQL result resource...): mysqli_error() verwenden oder Abfrage ausgeben und zb mit phpmyadmin testen.
      6. Schritt 5 wird so lange wiederholt, bis Unstimmigkeiten im Skript auffallen
      7. Damit hat man das Problem (Unstimmigkeit) gefunden und kann versuchen diese zu beheben. Hierzu dienen dann die PHP-Dokumentation und andere Quellen als Ratgeber.
      8. Lässt sich das konkrete Problem trotzdem nicht beheben, kann man in Foren um Rat fragen.
      9. Das Programm läuft und man kann die Debug-Ausgaben wieder entfernen.
      10. global-keyword aus dem Hauseigenen Wortschatz streichen.

      Ich mach mal ein anderes Licht bei dir an.
      [URL="https://gitter.im/php-de/chat?utm_source=share-link&utm_medium=link&utm_campaign=share-link"]PHP.de Gitter.im Chat[/URL] - [URL="https://raindrop.io/user/32178"]Meine öffentlichen Bookmarks[/URL] ← Ich habe dir geholfen ? [B][URL="https://www.amazon.de/gp/wishlist/348FHGUZWTNL0"]Beschenk mich[/URL][/B].

      Kommentar

      Lädt...
      X