Checken of datum bestaat in array

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Ed van Papenrecht

Ed van Papenrecht

15/04/2013 15:05:15
Quote Anchor link
Hallo allemaal,

Ik kom er even niet uit. Ik wil kijken of een datum voorkomt in een array. als dat zo is moet hij een afbeelding printen.

Ik heb een $today aangemaakt in php die de datum van vandaag print.
Uit de database haal ik een Array met een aantal datum. Nu wil ik met een If statement controleren of de datum uit $today ook in de Array voorkomt. Als dit zo is moet hij een afbeelding printen.

Het werkt als ik de array zelf schrijf, zoals hieronder. Echter dient hij deze regel automatisch te genereren met de values die in de array staan.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
$koopzondag = array(0 => '2013-04-01', 1 => '2013-05-20', 2 => '2013-05-05', 3 => '2013-06-02');
                $koopzondag1 = array_search("".$today."", $koopzondag);
                if ($koopzondag1 == true){
                    echo ("<br /><img src='img/vestigingen/zondag_open.jpg' width='440' height='42' alt='A.s zondag extra open' /><br /><br />");
                }else {}?>



kan iemand mij helpen?
Gewijzigd op 15/04/2013 15:05:36 door Ed van Papenrecht
 
PHP hulp

PHP hulp

17/11/2024 22:32:01
 
Erwin H

Erwin H

15/04/2013 15:21:54
Quote Anchor link
Hoe ziet de array eruit die je uit de database krijgt?
 
Ed van Papenrecht

Ed van Papenrecht

15/04/2013 15:24:57
Quote Anchor link
Als ik hem met onderstaande code print

echo "".$record_koopzondag["datum"]."<br/>";}

krijg ik een hele lijst met datums op het scherm zonder key dus bijvoorbeeld 2013-05-20 en 2013-06-02

Toevoeging op 15/04/2013 15:25:56:

Mijn query is alsvolgt

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
    $id_vestiging = $_GET["vestiging_id"];
    $query_koopzondag = ("SELECT datum FROM koopzondagen INNER JOIN vestigingen ON koopzondagen.vestiging_id=vestigingen.vestiging_id WHERE vestigingen.vestiging_id = $id_vestiging ");
    $sql = mysql_query($query_koopzondag) or die ( mysql_error( ) );
    //query is uitgevoerd
    while($record_koopzondag = mysql_fetch_array($sql)){
 
Erwin H

Erwin H

15/04/2013 15:29:34
Quote Anchor link
Dat is niet wat ik bedoelde. Hoe ziet je array eruit waar je in zoekt? Dat kan ik uit bovenstaande niet halen.
Gewijzigd op 15/04/2013 15:29:50 door Erwin H
 
- Mark -

- Mark -

15/04/2013 15:34:53
Quote Anchor link
Om een antwoord te geven op je vraag. Je moet alleen het gedeelte in de while nog even zelf invullen.

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
<?php

    # Set array $koopzondagen voor het opslaan van alle datums waarop we een koopzondag hebben.

        $koopzondagen = array();


    # Datums met koopzondagen ophalen en toevoegen aan array $koopzondagen.
    
        while(){

            $koopzondagen[] = $row['datum']; // $record_koopzondag["datum"] in jouw geval.
        }    


    # Afbeelding weergeven als er vandaag een koopzondag is.

        if(in_array(date('Y-m-d'), $koopzondagen)){

            echo '<img src="img/vestigingen/zondag_open.jpg" width="440" height="42" alt="A.s zondag extra open" />';
        }


?>


Maar dit is helemaal niet nodig, je hoeft niet de gehele lijst uit de database te halen je kunt net zo goed even kijken in de DB of het vandaag een koopzondag is ja of nee.

Tevens is je script onveilig "SQL injection", en veroudered. Zoek eens naar een MySQLi_ of PDO_ tutorial.

EDIT: type fout, het moest in_array zijn inplaats van array_search.
Gewijzigd op 15/04/2013 16:00:13 door - Mark -
 
Ed van Papenrecht

Ed van Papenrecht

15/04/2013 15:36:08
Quote Anchor link
Array ( [0] => 2013-03-03 [datum] => 2013-03-03 )

maar hij geeft maar één resultaat weer, terwijl er meerderen instaan. Ik denk dat ik iets fout doe met de aray uit de database halen. Heb nu onderstaande code gebruikt.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
$id_vestiging = $_GET["vestiging_id"];
    $query_koopzondag = ("SELECT datum FROM koopzondagen INNER JOIN vestigingen ON koopzondagen.vestiging_id=vestigingen.vestiging_id WHERE vestigingen.vestiging_id = $id_vestiging ");
    $sql = mysql_query($query_koopzondag) or die ( mysql_error( ) );


Maar hij moet dit dus eigenlijk loopen totdat er geen resultaten meer zijn
 
- SanThe -

- SanThe -

15/04/2013 15:43:22
Quote Anchor link
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
<?php
$zoek
= array();
while($record_koopzondag = mysql_fetch_array($sql))
{

   $zoek[] = $record_koopzondag['datum'];
}

if(in_array('2003-04-15', $zoek)
{

   // staat er in
}
else
{
   // staat er niet in
}
?>


Toevoeging op 15/04/2013 15:45:05:

Je query is trouwens lek.
SQL-Injection is mogelijk.
 
Eddy E

Eddy E

15/04/2013 15:52:21
Quote Anchor link
Je zou in_array() kunnen gebruiken.
Maar zoals de anderen al zeggen: waarom alle zondagen ophalen als je er maar 1 nodig hebt?

Probeer dit eens:
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
<?php
// is er een vestiging opgegeven en is die geldig?
if(isset($_GET['vestiging_id']) AND intval($_GET['vestiging_id']) > 0)
    {

    // neem dit ID als vestiging
    $vestiging_id = intval($_GET['vestiging_id']);
    }

// bij geen vestiging opgegeven
else
    {
    // neem standaard vestiging (bijvoorbeeld 1)
    $vestiging_id = 1;
    }


    // maak de query. Resultaat is de eerste koopzondag in komende week
   $query = "SELECT koopzondag
               FROM koopzondagen AS k
               INNER JOIN vestigingen AS v
                   ON k.vestiging_id = v.vestiging_id
               WHERE v.vestiging_id = "
.$vestiging_id."
               AND koopzondag
                   BETWEEN
                       NOW()
                   AND
                       DATE_ADD(NOW(), INTERVAL 1 WEEK)
               ORDER BY koopzondag DESC
                LIMIT 1"
;
            
    // voer uit met mysqli (let op de i)
    // hiervoor is wel $mysqli of $link oid nodig

    $res = mysqli_query($mysqli, $query);
     if($res !== false AND mysqli_num_rows($res) == 1)
         {

         // echo de afbeelding, zonder <br>'s. Dat doe je met CSS op #koopzondag
         echo  '<img id="koopzondag" src="img/vestigingen/zondag_open.jpg" width="440" height="42" alt="A.S zondag extra open">';
         }

?>


Let wel dat de query koopzondag als "date" gebruikt in je database.
Gewijzigd op 15/04/2013 15:59:33 door Eddy E
 
Ed van Papenrecht

Ed van Papenrecht

15/04/2013 16:03:28
Quote Anchor link
Bedankt voor het oplossen. Het werkt:) Nu nog even goed doorlezen zodat ik het ook begrijp;)
Met dank aan - San The -.
 



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.