switch met mysql cases
Ik ben nog erg nieuw met php en ben nu met een testsite bezig om dingen te leren hoe ik die moet maken.
Nu heb ik al veel hulp gehad van deze website en ben naar mijn idee al een aardig eind gekomen. Maar nu heb ik toch echt een punt waar ik zelf niet verder mee kom.
Ik maak, zoals eerder vermeld, een website om te testen en te leren. Deze website bestaat uit php + mysql.
Ik wil de website opbouwen dmv tabellen.
In die tabellen include ik andere pagina's zoals header.php, footer.php, main.php, left_side.php enz enz.
Ik wil mijn navigatiemenu geladen hebben vanuit de database.
Zo kan ik lekker makkelijk straks via admin sectie menu items bijmaken.
De link naar de betreffende site staat ook in diezelfde mysql tabel.
Nu wil ik met behulp van switch() de opgevraagde pagina laden in de file main.php (die dus ge-include wordt)
Ik heb al van alles geprobeerd om dat voor elkaar te krijgen maar ik krijg of alleen maar sql foutmeldingen, php foutmeldingen of er gebeurd gewoon niks.
Als ik gewoon de switch() tut op deze site volg dan werkt het prima. Ik heb alleen geen idee hoe ik die cases vanuit mijn mysql database moet halen om die vervolgens op te vragen in de main.php
Is er iemand die me hiermee kan helpen ?
Ivar schreef op 14.05.2009 20:03:
Hallo allemaal.
Ik ben nog erg nieuw met php en ben nu met een testsite bezig om dingen te leren hoe ik die moet maken.
Nu heb ik al veel hulp gehad van deze website en ben naar mijn idee al een aardig eind gekomen. Maar nu heb ik toch echt een punt waar ik zelf niet verder mee kom.
Ik maak, zoals eerder vermeld, een website om te testen en te leren. Deze website bestaat uit php + mysql.
Ik wil de website opbouwen dmv tabellen.
In die tabellen include ik andere pagina's zoals header.php, footer.php, main.php, left_side.php enz enz.
Ik ben nog erg nieuw met php en ben nu met een testsite bezig om dingen te leren hoe ik die moet maken.
Nu heb ik al veel hulp gehad van deze website en ben naar mijn idee al een aardig eind gekomen. Maar nu heb ik toch echt een punt waar ik zelf niet verder mee kom.
Ik maak, zoals eerder vermeld, een website om te testen en te leren. Deze website bestaat uit php + mysql.
Ik wil de website opbouwen dmv tabellen.
In die tabellen include ik andere pagina's zoals header.php, footer.php, main.php, left_side.php enz enz.
Stop hier. Ga eens kijken naar divjes, ga jezelf geen verkeerde dingen aanleren! tabellen is niet voor layouts bedoelt!
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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?php
require('../connectie/config.php');
// De data uit de tabel halen
$query = "SELECT * FROM mainmenu";
$result = mysql_query($query) or die(mysql_error());
// De data in een array zetten
$row = mysql_fetch_array($result);
// De default defineren
$page = "" ;
?>
<body>
<?php
switch ($page) {
case $row['case']:
include($row['link']);
default:
echo "Dit is de default pagina";
}
?>
</body>
require('../connectie/config.php');
// De data uit de tabel halen
$query = "SELECT * FROM mainmenu";
$result = mysql_query($query) or die(mysql_error());
// De data in een array zetten
$row = mysql_fetch_array($result);
// De default defineren
$page = "" ;
?>
<body>
<?php
switch ($page) {
case $row['case']:
include($row['link']);
default:
echo "Dit is de default pagina";
}
?>
</body>
Heb een simpele uitleg gevonden op Dev articles.
Ik heb nu de index ingedeeld doormiddel van div's en daar de header, menu en rechtermenu ge-include.
Hoe nu verder met het opvragen van de juiste pagina in het juiste gebied.
Mijn mainarea heeft als id "content".
De linkjes die geladen worden uit mijn mysql moeten in die area geladen worden.
Ikke niet meer weet !!!
Gelieve Niet Bumpen::
Gewijzigd op 01/01/1970 01:00:00 door Goeny Goegoe
Ik heb mijn script wel veranderd.
Dit is mijn link van het hoofdmenu:
Code (php)
En dit is het script in mijn index.php (welke ik in de main DIV heb ge-include)
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
// De data uit de tabel halen
$query = "SELECT * FROM mainmenu";
$result = mysql_query($query) or die(mysql_error());
// De data in een array zetten
$row = mysql_fetch_array($result);
// De switch maken voor veranderen data in deze pagina
switch (strtolower($_GET['page'])) {
case $row['case']:
$page = $row['link'];
break;
default:
$page="home.php";
break;
}
include ($page);
?>
// De data uit de tabel halen
$query = "SELECT * FROM mainmenu";
$result = mysql_query($query) or die(mysql_error());
// De data in een array zetten
$row = mysql_fetch_array($result);
// De switch maken voor veranderen data in deze pagina
switch (strtolower($_GET['page'])) {
case $row['case']:
$page = $row['link'];
break;
default:
$page="home.php";
break;
}
include ($page);
?>
Dit werkt dus gewoon niet.
Ik krijg de melding:
Notice: Undefined index: page in D:\Webserver\www\database\includes\index.php on line 11
maar die "page" wordt toch gedefineerd doormiddel van de menu-knoppen? en zo niet dan is het default?
Het menu wordt trouwens wel goed weergegeven en de link die aan die knoppen hangt klopt ook.
bijv: index.php?page=afbeeldingen
Alleen de data wordt niet geladen.
Misschien dat het ook veel makkelijker kan?
ik heb het ook geprobeerd met een target="mainDIV", maar dat werkt ook niet.
Misschien dat daar een andere methode voor is?
Gewijzigd op 01/01/1970 01:00:00 door Goeny Goegoe
Je mist nog een WHERE in je query waar je de informatie van de pagina gaat ophalen.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
$sQuery = "SELECT * FROM mainmenu WHERE case = '".mysql_real_escape_string($_GET['page'])."'";
$sResult = mysql_query($sQuery);
if($sResult) {
if(mysql_num_rows($sResult) > 0) {
$sRij = mysql_fetch_assoc($sResult);
include($sRij['link']);
} else {
include("home.php");
}
} else {
echo mysql_error().' in query: '.$sQuery;
}
?>
$sQuery = "SELECT * FROM mainmenu WHERE case = '".mysql_real_escape_string($_GET['page'])."'";
$sResult = mysql_query($sQuery);
if($sResult) {
if(mysql_num_rows($sResult) > 0) {
$sRij = mysql_fetch_assoc($sResult);
include($sRij['link']);
} else {
include("home.php");
}
} else {
echo mysql_error().' in query: '.$sQuery;
}
?>
Misschien is dat iets voor iedereen persoonlijk, maar ik heb met behulp van deze site begrepen dat een switch vaak beter en makkelijker is dan een if-else.
En nu lijkt het mij dat mij nu weer een if-else wordt aangeraden?!
Nu heb ik bovenstaande script van Jezpur even geprobeerd en ook dat werkt niet. Helaas. Er wordt gemeld dat de mysql query niet klopt en dat ik de syntax moet controleren.
Nu dus eerst maar even de vraag:
"Moet ik in dit geval een switch of een if/else gebruiken?"