Checken of datum bestaat in array
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)
1
2
3
4
5
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 {}?>
$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
Hoe ziet de array eruit die je uit de database krijgt?
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)
1
2
3
4
5
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)){
$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)){
Gewijzigd op 15/04/2013 15:29:50 door Erwin H
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
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" />';
}
?>
# 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 -
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)
1
2
3
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( ) );
$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
Code (php)
Toevoeging op 15/04/2013 15:45:05:
Je query is trouwens lek.
SQL-Injection is mogelijk.
Maar zoals de anderen al zeggen: waarom alle zondagen ophalen als je er maar 1 nodig hebt?
Probeer dit eens:
Code (php)
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
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">';
}
?>
// 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
Met dank aan - San The -.