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.


$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?
Hoe ziet de array eruit die je uit de database krijgt?
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

[size=xsmall]Toevoeging op 15/04/2013 15:25:56:[/size]

Mijn query is alsvolgt


	$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)){
Dat is niet wat ik bedoelde. Hoe ziet je array eruit waar je in zoekt? Dat kan ik uit bovenstaande niet halen.
Om een antwoord te geven op je vraag. Je moet alleen het gedeelte in de while nog even zelf invullen.

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


$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
<?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
}
?>

[size=xsmall]Toevoeging op 15/04/2013 15:45:05:[/size]

Je query is trouwens lek.
SQL-Injection is mogelijk.
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:
<?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.
Bedankt voor het oplossen. Het werkt:) Nu nog even goed doorlezen zodat ik het ook begrijp;)
Met dank aan - San The -.

Reageren