[Benutzerdefienierte Felder] Kleines Verständnisproblem

  • Hy,

    ich habe ein neues "benutzerdefiniertes Feld" mit dem Namen "enddate" im Format "2008-11-31" erstellt.

    In meinem Template single.php will ich nun ein Abfrage mit if erstellen das prüft ob das enddate bereits erreicht ist, und einen kleinen Text ausgeben.

    Was ich bisher habe:

    PHP
    if c2c_get_custom('endate') <= $date(now)
    then echo "Artikel abgelaufen"

    Nur leider komm ich damit nicht zurecht

    • Anzeige

    Hallo!

    Wenn du gerade an deiner Website arbeitest oder dein aktuelles Hosting überdenkst: Wir betreiben mit NetzLiving eine Hosting-Plattform, die speziell auf Performance, Sicherheit und einfache Verwaltung ausgelegt ist.

    • ✔️ Schnelle Ladezeiten (optimiert für WordPress & Co.)
    • ✔️ Deutsche Server & DSGVO-konform
    • ✔️ Persönlicher Support (kein 0815-Ticket-System)

    Mehr erfahren

  • Zitat

    enddate

    Zitat


    [COLOR=#000000][COLOR=#006600]if [/COLOR][COLOR=#0000CC]c2c_get_custom[/COLOR][COLOR=#006600]([/COLOR][COLOR=#CC0000]'enddate'[/COLOR][COLOR=#006600]) <= [/COLOR][COLOR=#0000CC]$date[/COLOR][COLOR=#006600]([/COLOR][COLOR=#0000CC]now[/COLOR][COLOR=#006600])
    [/COLOR][COLOR=#0000CC]then [/COLOR][COLOR=#006600]echo [/COLOR][COLOR=#CC0000]"Artikel abgelaufen" [/COLOR][/COLOR]

    So vllt. ?

  • Habs mit folgendem Code hinbekommen:

    PHP
    if (strtotime(c2c_get_custom('enddate')) <= (strtotime(date('Y-m-d')))) 
    
    
    echo "<p style=\"color: red; font-size: 11pt; font-family:Verdana, Arial, Helvetica, sans-serif; text-align:center;\">Beitrag abgelaufen.</p>";

    Jetzt würde ich aber gerne das enddate abfragen ob es "0" oder "-1" ist wenn ja soll es nicht ausgegeben werden.

    Habs so versucht funktioniert jedoch auch nicht:

    PHP
    if (c2c_get_custom('enddate')) !== '-1') || (c2c_get_custom('enddate')) !== '0') {
    
    
    if (strtotime(c2c_get_custom('enddate')) <= (strtotime(date('Y-m-d')))) 
    
    
    echo "<p style=\"color: red; font-size: 11pt; font-family:Verdana, Arial, Helvetica, sans-serif; text-align:center;\">Beitrag abgelaufen.</p>";
    
    
    }

    Aber irgendwie will der Code nicht.

    Regt mich schon voll wieder auf muss unbedingt mal besser PHP lernen :twisted:

  • var_dump gibt "NULL" aus wenn die enddate nicht verfügbar ist

    Dann müsste es doch heißen:

    PHP
    if (c2c_get_custom('enddate') !== 'NULL') {
    
    
    if (strtotime(c2c_get_custom('enddate')) <= (strtotime(date('Y-m-d')))) 
    
    
    echo "<p style=\"color: red; font-size: 11pt; font-family:Verdana, Arial, Helvetica, sans-serif; text-align:center;\">Beitrag abgelaufen.</p>";
    }

    Einmal editiert, zuletzt von kleiner_freund (4. Januar 2008 um 10:47)

  • Naja, dann mach doch sinnvollerweise das aus der ersten Zeile:

    Code
    if ((c2c_get_custom('enddate') != null) && (c2c_get_custom('enddate') <= 0)) {

    Das müsste gehen, denke ich. Typsicherheit ist hier IMHO nicht wichtig.

    Edit: Die Klammerung stimmt in Deinem Beispiel nicht und Du willst dort && anstatt || stehen haben. ;-)

    Einmal editiert, zuletzt von Ammaletu (4. Januar 2008 um 10:49)

  • Dann musst du auch auf NULL prüfen. Beachte: NULL ist ein Datentyp, kein String! Prüfe auf isset() (ist die Variable überhaupt gesetzt?) oder is_null() (Wert der Variable ist NULL)

    Ammaletu: Auch wenn typsichere Prüfungen hier nicht unbedingt nötig sind - man sollte doch wissen was man tut und wie. Spaghetticode hilft keinem wirklich. ;-)

  • Zitat

    Ammaletu: Auch wenn typsichere Prüfungen hier nicht unbedingt nötig sind - man sollte doch wissen was man tut und wie. Spaghetticode hilft keinem wirklich. :wink:

    Für Spaghetticode bin ich auch nicht zu haben, deshalb schaue ich auch so ungern in den WP-Quellcode. *g* Aber manchmal ist es ja auch einfach unnötig eine Bedingung schwieriger zu formulieren als sie ist, denke ich. ;-)

  • OK soweit hab ich das verstanden. Aber warum zur Hölle funktioniert der Code hier nicht:

    PHP
    if (isset(c2c_get_custom('enddate'))) {
    
    
    if (strtotime(c2c_get_custom('enddate')) <= (strtotime(date('Y-m-d')))) 
    
    
    echo "<p style=\"color: red; font-size: 11pt; font-family:Verdana, Arial, Helvetica, sans-serif; text-align:center;\">Beitrag abgelaufen.</p>";
    }

    Sollte doch alles richtig sein wenn ich alles Verstanden hab.

  • Ich bin mir nicht sicher, ob man isset() auf das Ergebnis einer Funktion anwenden kann. Probier's mal so:

    Code
    [COLOR=#000000][COLOR=#006600]$my_var_enddate = [/COLOR][/COLOR][COLOR=#000000][COLOR=#0000CC]c2c_get_custom[/COLOR][COLOR=#006600]([/COLOR][COLOR=#CC0000]'enddate'[/COLOR][COLOR=#006600]);[/COLOR][/COLOR]
    [COLOR=#000000][COLOR=#006600]if (isset([/COLOR][/COLOR][COLOR=#000000][COLOR=#006600]$my_var_enddate[/COLOR][/COLOR][COLOR=#000000][COLOR=#006600])) {
      if ([/COLOR][COLOR=#0000CC]strtotime[/COLOR][COLOR=#006600]([/COLOR][/COLOR][COLOR=#000000][COLOR=#006600]$my_var_enddate[/COLOR][/COLOR][COLOR=#000000][COLOR=#006600]) <= ([/COLOR][COLOR=#0000CC]strtotime[/COLOR][COLOR=#006600]([/COLOR][COLOR=#0000CC]date[/COLOR][COLOR=#006600]([/COLOR][COLOR=#CC0000]'Y-m-d'[/COLOR][COLOR=#006600])))) {
        echo [/COLOR][COLOR=#CC0000]"<p style=\"color: red; font-size: 11pt; font-family:Verdana, Arial, Helvetica, sans-serif; text-align:center;\">Beitrag abgelaufen.</p>"[/COLOR][COLOR=#006600];
      }
    }[/COLOR][/COLOR]

    Ansonsten halt wie in meinem Beispiel weiter oben gepostet, das sollte es doch auch tun?!

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!