switch werkt niet

  • Onderwerp starter Onderwerp starter FoBa
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

FoBa

Gebruiker
Lid geworden
16 feb 2012
Berichten
110
Hallo iedereen, ik heb een switch gemaakt maar als ik deze op mijn webpagina zet dan krijg ik een lege pagina...
Ziet er iemand hier een fout in?

PHP:
$maand = date('m');
switch ($maand) {
	case 1:
		$sql = mysql_query("SELECT * FROM kalender13 where maandId = 1 order by datum"), $titel = 'JANUARI';
		break;
	case 2:
		$sql = mysql_query("SELECT * FROM kalender13 where maandId = 2 order by datum"), $titel = 'FEBRUARI';
		break;
	case 3:
		$sql = mysql_query("SELECT * FROM kalender13 where maandId = 3 order by datum"), $titel = 'MAAR';
		break;
	case 4:
		$sql = mysql_query("SELECT * FROM kalender13 where maandId = 4 order by datum"), $titel = 'APRIL';
		break;
	case 5:
		$sql = mysql_query("SELECT * FROM kalender13 where maandId = 5 order by datum"), $titel = 'MEI';
		break;
	case 6:
		$sql = mysql_query("SELECT * FROM kalender13 where maandId = 6 order by datum"), $titel = 'JUNI';
		break;
	case 7:
		$sql = mysql_query("SELECT * FROM kalender13 where maandId = 7 order by datum"), $titel = 'JULI';
		break;
	case 8:
		$sql = mysql_query("SELECT * FROM kalender13 where maandId = 8 order by datum"), $titel = 'AUGUSTUS';
		break;
	case 9:
		$sql = mysql_query("SELECT * FROM kalender13 where maandId = 9 order by datum"), $titel = 'SEPTEMBER';
		break;
	case 10:
		$sql = mysql_query("SELECT * FROM kalender13 where maandId = 10 order by datum"), $titel = 'OKTOBER';
		break;
	case 11:
		$sql = mysql_query("SELECT * FROM kalender13 where maandId = 11 order by datum"), $titel = 'NOVEMBER';
		break;
	case 12:
		$sql = mysql_query("SELECT * FROM kalender13 where maandId = 12 order by datum"), $titel = 'DECEMBER';
		break;
	default:
		echo "Er is een fout opgetreden</ br>"; 
		break;
	}

edit: de switch is opgelost, nu heb ik nog een aansluitende vraag. De code die ik nu gebruik staat verder in het topic. Maar hoe breid ik het nu het beste uit zodat je kan bladeren tussen de maanden?
 
Laatst bewerkt:
Je moet achter de mysql_query() een ";" plaatsen en geen ","

Daarnaast is de switch redelijk overbodig.

Je kunt net zo goed dit doen:
PHP:
$sql = "SELECT * FROM kalender13 WHERE maandId = ". date("m") ." ORDER BY datum";
$result = mysql_query($sql);
De maanden in het nederlands kun je via PEAR:I18N krijgen (http://pear.php.net/reference/I18N-latest/I18N/I18N_DateTime.html#methodgetMonthName) of ze in een array gooien.
PHP:
$months = array('Januari', 'Februari'); //etc
echo $months[date("m") - 1)];
 
heel erg bedankt, ziet u toevallig ook een fout in de volgende code?

PHP:
if (mysql_num_rows($sql) == 0) {
		echo 'Er zijn geen tochten beschikbaar.';
	} else {
		while($data = mysql_fetch_assoc($sql)) {
		echo"<div class=\"tocht\">
			<p class=\"datum\">$data['datum'] - $data['tochtnaam']</p>
			<p class=\"extra\"> $data['extra']</p>
			<p class=\"plaats\">$data['plaats']</p>
			<p class=\"organisator\">data['club']</p>
			<p class=\"adres\">$data['adres']</p>
			<p class=\"afstanden\">$data['afstanden']</p>
			<p class=\"tijdstip\">Vertrekken vanaf: $data['vertrek'] tot $data['aankomst']</p>
		</div></ br>";
		}
	}

alvast heel erg bedankt
 
Kijk, dat is nog makkelijker! Bedankt AJT :thumb:

@FoBa: Het lijkt mij handiger wanneer je aangeeft wat er niet goed gaat met die code.
Waarschijnlijk krijg je niks te zien, ik kom tenminste geen mysql_result() tegen.
 
Zoals je zegt, Tha Devil, als ik dit stukje code toevoeg aan de pagina krijg ik een volledig blanke pagina terug.
Ik heb dat stukje code gebruikt van een het script van een gastenboek. Is dit geen goede manier dan?
Ik zal anders nog even googelen hoe ik dan best het elke rij afdruk...
 
Hoe ziet je code er nu uit?

Er zijn altijd verschillende wegen die naar Rome leiden, alleen de code die jij hebt geschreven (met de switch) is veel meer code dan noodzakelijk is. :)
 
ondertussen heb ik het werkend kunnen krijgen, dit is de code die ik nu gebruik. Ik ben nu aan het spelen met de css e.d.
Heel erg bedankt voor de hulp !! :thumb:

PHP:
<?php

$sql = "SELECT * FROM kalender13 WHERE maandId = ".date("m") ." ORDER BY datum;";

$result=mysql_query($sql);

$num=mysql_numrows($result);

setlocale (LC_ALL, "nl_NL");
 
echo strftime ("<h4>%B</h4>");
echo "<div id=\"centreren\">";
$i=0;
while ($i < $num) {

	$datum=mysql_result($result,$i,"datum");
	$club=mysql_result($result,$i,"club");
	$plaats=mysql_result($result,$i,"plaats");
	$adres=mysql_result($result,$i,"adres");
	$afstanden=mysql_result($result,$i,"afstanden");
	$vertrek=mysql_result($result,$i,"vertrek");
	$aankomst=mysql_result($result,$i,"aankomst");
	$tochtnaam=mysql_result($result,$i,"tochtnaam");
	$extra=mysql_result($result,$i,"extra");
			
	echo"
		<div class=\"item\">
		<p class=\"datum\">$datum - $tochtnaam</p>
			<div class=\"tocht\">
				<p class=\"plaats\">$plaats</p>
				<p class=\"organisator\">$club</p>
				<p class=\"adres\">$adres</p>
				<p class=\"afstanden\">$afstanden</p>
				<p class=\"tijdstip\">Vertrekken vanaf: $vertrek tot $aankomst</p>
				<p class=\"extra\"> $extra</p>
			</div>
		</div></ br>";
$i++;
}
echo "</div>";
?>
 
Hallo iedereen, ik wil niet een nieuw topic starten omdat mijn vraag verder gaat op dit. Hoe zou ik dit eventueel kunnen uitbreiden zodat je kan bladeren tussen de maanden?
 
Dit zou je via een $_GET-variabele kunnen realiseren.

Die variabele bevat dan de maand en die gebruik je in je query
PHP:
<?php

$maand = date("m");
if(isset($_GET['maand']) && is_numeric($_GET['maand']))
{
    $maand = mysql_real_escape_string($_GET['maand']);
}
$sql = "SELECT * FROM kalender13 WHERE maandId = ". $maand ." ORDER BY datum;";
Je kunt nu de pagina aanroepen op deze manier: pagina.php?maand=2 of pagina.php?maand=7 of gewoon pagina.php voor de huidige maand :)

Let wel: mysql_real_escape_string wordt sinds PHP 5.5.0 niet meer ondersteund.
Het verdient de voorkeur om op een andere manier verbindingen met je database te realiseren, bijvoorbeeld via PDO of MySQLi
 
kan je dan gewoon werken met twee links, "volgende" en "vorige". Want ik snap het niet zo goed :confused:
 
Dat kun je dan eenvoudigweg maken door dit toe te voegen:
PHP:
$vorige = ($maand == 1) ? 12 : ($maand - 1);
$volgende = ($maand == 12) ? 1 : ($maand + 1);
echo '<a href="?maand='. $vorige  .'">Vorige</a> - <a href="?maand='. $volgende .'">Volgende</a>';
Helemaal accuraat is het natuurlijk niet aangezien je in principe nog met jaartallen zult moeten werken.
 
ik kan inderdaad pagina.php?maand=12 aanroepen en dat klopt dan, maar als ik op de link vorige klik staat mijn browser op pagina.php?maand=-1 en als ik op volgende klik blijf dit staan op 1
 
Dan heb je het niet goed geïmplementeerd want dit werkt naar behoren:
PHP:
<?php
$maand = date("m");
if(isset($_GET['maand']) && is_numeric($_GET['maand']))
{
    $maand = mysql_real_escape_string($_GET['maand']);
}

$vorige = ($maand == 1) ? 12 : ($maand - 1);
$volgende = ($maand == 12) ? 1 : ($maand + 1);
echo '<a href="?maand='. $vorige  .'">Vorige</a> - <a href="?maand='. $volgende .'">Volgende</a>';
?>
 
heel erg bedankt ! ik zal dan wel een foutje gemaakt hebben :) dank je

maar om de huidige maand weer te geven. zou ik dan niet beter met een array werken, daar alle maanden inzetten.
Zodat de naam van de maand weergegeven word.

ik denk dan aan zoiets:

PHP:
<?php
				$months = array('Januari', 'Februari','Maart', 'April', 'Mei', 'Juni', 'Juli', 'Augustus','September', 'Oktober', 'November', 'December'); //etc
				echo $months[(. $maand - 1)];
				
				$maand = date("m");
				if (isset($_GET['maand']) && is_numeric($_GET['maand'])) {
					$maand = mysql_real_escape_string($_GET['maand']);
				}

				$vorige = ($maand == 1) ? 12 : ($maand - 1);
				$volgende = ($maand == 12) ? 1 : ($maand + 1);
				echo '<a href="?maand=' . $vorige . '">Vorige</a> - <a href="?maand=' . $volgende . '">Volgende</a>';
?>
 
Laatst bewerkt:
Controleer je code eens :) Waar wordt $maand gedeclareerd? ;)

Overigens kun je hier ook weer prima van de oplossing van AJT gebruik maken
PHP:
<?php

setlocale (LC_ALL, "nl_NL");
    
$maand = date("m");
if (isset($_GET['maand']) && is_numeric($_GET['maand'])) {
    $maand = mysql_real_escape_string($_GET['maand']);
}


echo strftime ("%B", mktime(0, 0, 0 $maand));

$vorige = ($maand == 1) ? 12 : ($maand - 1);
$volgende = ($maand == 12) ? 1 : ($maand + 1);
echo '<a href="?maand=' . $vorige . '">Vorige</a> - <a href="?maand=' . $volgende . '">Volgende</a>';
?>
 
Ik zit denk ik met een foutje dat ik niet vind, als ik blader tussen de maanden worden sommige namen niet correct weergegeven. De maand klopt in de url maar de naam die weergegeven wordt klopt niet. Ik spring van Januari naar maart dan blijft het twee maanden staan, dan mei,...
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan