if empty date functie

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Joep van Dongen

Joep van Dongen

29/05/2012 12:56:00
Quote Anchor link
Hallo allemaal,

Ik heb even hulp nodig want ik kom er niet echt uit. Ben nog niet zo heel lang bezig met PHP en ben met een vriend aan een project begonnen en hebben al aardig wat hulp kunnen gebruiken maar daar leren we gelukkig alleen maar van.

Ik heb hier al eens eerder een vraag over gesteld en heb het uiteindelijk allemaal aan de gang gekregen alleen zit nu met een probleem en krijg het niet echt voor elkaar.

In het CMS wat we aan het maken zijn kun je een tekst actief en niet actief maken en ook een datum meegeven van wanneer tot wanneer hij getoond wordt. Nu werkt dit allemaal correct alleen je moet telkens een datum invoeren als je er een nieuwe tekst op zet. Wat ik nu wel is dat wanneer er een tekst op komt die geen einde heeft je de datum niet in hoeft te vullen en hij wel gewoon getoond wordt. Dus eigenlijk wanneer $online en $offline leeg zijn wil ik dat de tekst wel gewoon wordt getoond op de website.

Ik heb een tekst Class en een content file die de tekst toont.

Dit is mijn Class:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
<?php
    public function getTeksten($database, $taal, $bladzijde = NULL, $actief = NULL, $id = NULL)
    {

        $sql = "SELECT * FROM ".$database."_teksten WHERE tekst_taal=:taal AND tekst_actief='1' AND tekst_online <= '".date('Y-m-d')."' AND tekst_offline >= '". date('Y-m-d')."'";
        if(!empty($id))
        {

            if(is_numeric($id))
            {

                $sql .= " AND tekst_ID=:id";
            }

            else
            {
                return NULL;
            }
        }

        else if(!empty($bladzijde))
        {

            if(is_numeric($bladzijde))
            {

                $sql .= " AND tekst_bladzijde=:bladzijde";
            }

            else
            {
                return NULL;
            }
        }

        $sql .= " ORDER BY tekst_volgorde ASC";
        try
        {
            $stmt = $this->db->prepare($sql);
            $stmt->bindParam(":taal", $taal, PDO::PARAM_STR);
            if(!empty($id) && is_numeric($id))
            {

                $stmt->bindParam(":id", $id, PDO::PARAM_INT);
            }

            else if(!empty($bladzijde) && is_numeric($bladzijde))
            {

                $stmt->bindParam(":bladzijde", $bladzijde, PDO::PARAM_INT);
            }

            $stmt->execute();
            $result = $stmt->fetchAll(PDO::FETCH_OBJ);
            $stmt->closeCursor();
            
            return $result;
        }

        catch(Exception $e)
        {

            die($e->getMessage());
        }
    }

?>


En dit is mijn content file:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<?php
include_once "class/tekst.class.php";
$tekstclass = new tekst($dbo);
$bladzijde = ((isset($_GET['p']) && is_numeric($_GET['p'])) ? $_GET['p'] : 1);
$teksten = $tekstclass->getTeksten($website, 'nl', $bladzijde);

foreach($teksten as $tekst)
{

    if(!empty($tekst->tekst_img))
    {

?>

                    <div class="imgcontainer">
                        <div class="imgcontent">
                            <img src="<?php echo $tekst->tekst_img; ?>" class="content_image" alt="<?php echo $tekst->tekst_header; ?>" />
                        </div>
                    </div>
<?php
    }
?>

                    <h1><strong><?php echo $tekst->tekst_header; ?></strong></h1>
                    <?php echo $tekst->tekst_content."\n"; ?>
<?php
    if($bladzijde == 1)
    {

?>

                    <hr class="hrline"/>
<?php
    }
?>

                    <br style="clear:both;"/>
<?php
}[
?>


In de database waar hij de date vandaan haalt staat date standaard op NULL.
Iemand enige ervaring hoe ik hier een juiste if statement voor maak? Heb het namelijk al op verschillende manieren geprobeerd maar het lukt niet. Komt waarschijnlijk door te weinig ervaring...

Alvast bedankt voor enige hulp

Groetjes

Joep
Gewijzigd op 29/05/2012 12:59:15 door Joep van Dongen
 
PHP hulp

PHP hulp

25/11/2024 09:03:30
 
Reshad F

Reshad F

29/05/2012 13:09:46
Quote Anchor link
SELECT * FROM ".$database."_teksten WHERE tekst_taal=:taal AND tekst_actief='1' AND tekst_online <= '".date('Y-m-d')."' AND tekst_offline >= '". date('Y-m-d') OR tekst_online = NULL AND tekst_offline = NULL

iets in die richting misschien?
Gewijzigd op 29/05/2012 13:10:02 door Reshad F
 
Erwin H

Erwin H

29/05/2012 13:10:54
Quote Anchor link
Dan zal je waarschijnlijk je SQL statement moeten aanpassen. Zoals het er nu staat krijg je records waar geen datum is ingevuld niet terug. NULL waardes worden niet geselecteerd in dit soort vergelijkingen:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?php
"SELECT *
FROM "
.$database."_teksten
WHERE tekst_taal=:taal
AND tekst_actief='1'
AND tekst_online <= '"
.date('Y-m-d')."'
AND tekst_offline >= '"
. date('Y-m-d')."'"
?>


Toevoeging op 29/05/2012 13:11:32:

@Reshad
'= NULL' werkt niet, dan moet je 'IS NULL' gebruiken.
 
Reshad F

Reshad F

29/05/2012 13:13:37
Quote Anchor link
ah ja inderdaad je hebt gelijk :) excuus
 
Joep van Dongen

Joep van Dongen

29/05/2012 13:26:45
Quote Anchor link
Ik heb het geprobeerd maar dat werkt ook niet. Als ik dat gebruik dan toont hij al mijn teksten op 1 pagina dus dat is natuurlijk ook niet de bedoeling.

Toevoeging op 29/05/2012 15:16:25:

Is er iemand die zoiets al gedaan heeft of ergens een voorbeeld heeft wat erop lijkt? Krijg het namelijk nog steeds niet voor elkaar:( Ik heb zoiets al eens gedaan met teksten, met een if(!empty) statement maar ik krijg het echt niet voor elkaar nu...
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.