switch met mysql cases

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Goeny Goegoe

Goeny Goegoe

14/05/2009 20:03:00
Quote Anchor link
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 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 ?
 
PHP hulp

PHP hulp

17/11/2024 16:53:27
 
W W

W W

14/05/2009 20:07:00
Quote Anchor link
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.


Stop hier. Ga eens kijken naar divjes, ga jezelf geen verkeerde dingen aanleren! tabellen is niet voor layouts bedoelt!
 
Goeny Goegoe

Goeny Goegoe

14/05/2009 20:09:00
Quote Anchor link
oh, hier nog ff wat ik in de main.php heb staan

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
<?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>
 
Goeny Goegoe

Goeny Goegoe

14/05/2009 21:09:00
Quote Anchor link
Ok. Ik heb nu, op aanraden van Pepijn, ipv tabellen DIV's gebruikt voor de layout.

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::
Twee of meer keer achter elkaar in een topic posten heet bumpen. Bumpen is pas na 24 uur toegestaan en kan een reden zijn voor de admins en moderators om een topic te sluiten. Gebruik indien nodig de Afbeelding knop om je tekst aan te passen.

SanThe.
Gewijzigd op 01/01/1970 01:00:00 door Goeny Goegoe
 
Goeny Goegoe

Goeny Goegoe

17/05/2009 13:12:00
Quote Anchor link
Helaas heb ik nog steeds geen oplossing voor dit probleem.
Ik heb mijn script wel veranderd.

Dit is mijn link van het hoofdmenu:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<a href="<?php echo DIR_WS_INCLUDES . 'index.php?page=' . $row['case']; ?>" > <?php echo "<li> " . $row['menunaam']; }?> </a>


En dit is het script in mijn index.php (welke ik in de main DIV heb ge-include)
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
<?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);
?>


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
 
Hipska BE

Hipska BE

17/05/2009 13:24:00
Quote Anchor link
Altijd eerst controleren indien een waarde bestaat met isset($_GET['page']).

Je mist nog een WHERE in je query waar je de informatie van de pagina gaat ophalen.
 
Jesper Diovo

Jesper Diovo

17/05/2009 13:30:00
Quote Anchor link
Sterker nog, er is hier helemaal geen switch nodig.

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

?>
 
Goeny Goegoe

Goeny Goegoe

17/05/2009 13:52:00
Quote Anchor link
Nu begrijp ik toch even iets niet.
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?"
 



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.