website navigatie met index.php?pagina=1

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Michel Meinema

Michel Meinema

16/08/2010 22:05:39
Quote Anchor link
Hallo,

Ik heb de navigatie op mn website bovenin en ik wil deze uit de SQL database halen.
Ook moet een nieuwe link automatisch zichtbaar worden in de nav als ik in de db er een toevoeg.
Het is ook de bedoeling dat hij automatisch de juiste tekst die bij de link hoort uitleest en in de content plaatst zonder dat de header, footer en menu bar worden vernieuwd.

Ik wil dus graag een soortgelijke URL als mijnsite.nl/index.php?pagina=1 of ?pagina=home.

Kan iemand mij helpen?
 
PHP hulp

PHP hulp

28/03/2024 10:12:31
 

16/08/2010 22:07:58
Quote Anchor link
Wat is het probleem?
 
Dalando De Zuil

Dalando De Zuil

16/08/2010 22:43:50
Quote Anchor link
Hij wil dat als er index.php?pagina=1 of ?pagina=home dat alle data die bij '1" of 'home' hoort uit de database halen, en hij zoekt een manier. nou ik kan je helpen: neem deze en deze pagina's eens door.
 
Michel Meinema

Michel Meinema

16/08/2010 23:45:42
Quote Anchor link
Ik heb pagina's doorgelezen, maar ik vind hier in niet echt een goed antwoord op mijn vraag :(
Het liefst zou ik iets willen zien in mijn index.php als:
"als er geen pagina is defineerd, dan pagina 1 (?pagina=1) laten zien en anders de desbetreffende andere pagina (?pagina=2,3,4 enz..) laten zien".
Denk aan een db inrichting als:
__________________________
|pagina_id | pagina_inhoud |
--------------------------
|1 |<html> enz... |
--------------------------
Ik ben nog niet bepaald bekent met php dus zou iemand misschien een voorbeeld kunnen posten?
Alvast bedankt...
Gewijzigd op 16/08/2010 23:58:53 door Michel Meinema
 
Pim -

Pim -

17/08/2010 00:02:35
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
switch($_GET['pagina']) {
    case
'about':
        $pagina = 'about';
    break;

    case
'home':
    default:

        $pagina = 'home';
    break;
}

include 'paginas/'.$pagina.'.php';
?>

Duidelijk?
 
Michel Meinema

Michel Meinema

17/08/2010 00:26:45
Quote Anchor link
Het is duidelijk, alleen was het niet de bedoeling om een pagina of script te includen.
Het liefst zou ik het enkel bij het index.php bestand houden.

eigenlijk zou de $pagina standaart op 1 moeten staan tenzij deze door een knop in de navigatie een andere waarde heeft gekregen en dat na het klikken op zo'n knop alleen de content als het ware refresht ofzo, en header, navigatie en footer het zelfde blijft.

de db van de navigatie ziet er ongeveer zo uit:
______________________
| navigatie_id | tekst |
----------------------
| 1 | Home |
| 2 | Info |
| 3 | Contact |
----------------------
 
Obelix Idefix

Obelix Idefix

17/08/2010 08:29:15
Quote Anchor link
Heb niet het idee dat je zelf erg veel moeite doet/hebt gedaan om een oplossing te vinden. En als je nog niet zo goed bekend bent met php, is dit toch een mooi moment om het zelf te leren/uit te zoeken. Mocht je een (zelfgemaakt) script hebben en daar vragen over hebben, kun je ze stellen.

Hint: je zult in je index.php een afvraging moeten doen, zoals Pim de Haan ook al aangeeft. In plaats van de include maak je dan een query, waarmee je de gegevens opvraagt uit je database.
 
Wesley Overdijk

wesley Overdijk

17/08/2010 10:18:42
Quote Anchor link
Je bedoeld, een cms systeem? :p
 
Dalando De Zuil

Dalando De Zuil

17/08/2010 11:58:11
Quote Anchor link
Michel Meinema op 17/08/2010 00:26:45:
eigenlijk zou de $pagina standaart op 1 moeten staan tenzij deze door een knop in de navigatie een andere waarde heeft gekregen en dat na het klikken op zo'n knop alleen de content als het ware refresht ofzo, en header, navigatie en footer het zelfde blijft.


Script van pim heeft dat.

Toevoeging op 17/08/2010 12:00:12:

Ik zou anders bij de vacatures aan iemand vragen of ie een systeempje voor je maakt, want zoals jij dat wilt, kan dat best wat code innemen.
 
Michel Meinema

Michel Meinema

18/08/2010 16:08:17
Quote Anchor link
Ik nu stukje code waarvan de navigatie werkt zoals ik het zou willen, ik krijg alleen nog niet de juiste pagina te zien als ik op een link klik.
mn db ziet er ongeveer zo uit:
________________________________________________
| pagina_id | pagina_inhoud | in_nav | nav_tekst |
------------------------------------------------
| 1 | ............. | 1 | Home |
| 2 | ............. | 1 | Info |
| 3 | ............. | 0 | Enquete |
| 4 | ............. | 1 | Contact |
------------------------------------------------

en zo ziet mn script er tot nu toe uit:

<html>
<title>test</title>
<head>
</head>
<body>
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
<?php
include "connect.php";
$query = "SELECT * FROM `cafe` WHERE `in_nav`=1 ORDER BY 'pagina_id' " ;
$sql = mysql_query($query) or die ( mysql_error( ) );
echo '<ul>';
                    
while($record = mysql_fetch_object($sql)){
echo '<li class="navigatie"><a href="index.php?pagina='.$record->pagina_id.'" target="_self">'.$record->nav_tekst.'</a></li>';
}

echo '</ul>';
                    
if (empty ($pagina)) {
   $pagina = '1';
}


include "connect.php";
$query = "SELECT * FROM `cafe`  WHERE pagina_id = '".$pagina."'  ";
$sql = mysql_query($query) or die ( mysql_error( ) );
                    
while($record = mysql_fetch_object($sql)){
echo ''.$record->pagina_inhoud.'';
}

?>

</body>
</html>

Zou iemand mij vanaf hier verder kunnen helpen?
Gewijzigd op 18/08/2010 16:09:43 door Michel Meinema
 
Pim -

Pim -

19/08/2010 11:49:50
Quote Anchor link
Bijna klaar, vervang
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
$query
= "SELECT * FROM `cafe`  WHERE pagina_id = '".$pagina."'  ";
// door
$page = isset($_GET['pagina']) ? (int) $_GET['pagina'] : 1; // SQL injection beveiliging
$query = "SELECT * FROM `cafe`  WHERE pagina_id = '".$page."'  ";
?>

Je moet nu alleen nog een foutafhandeling maken als er geen pagina gevonden wordt.
 
Michel Meinema

Michel Meinema

19/08/2010 12:06:32
Quote Anchor link
Pim de Haan op 19/08/2010 11:49:50:
Bijna klaar, vervang
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
$query
= "SELECT * FROM `cafe`  WHERE pagina_id = '".$pagina."'  ";
// door
$page = isset($_GET['pagina']) ? (int) $_GET['pagina'] : 1; // SQL injection beveiliging
$query = "SELECT * FROM `cafe`  WHERE pagina_id = '".$page."'  ";
?>

Je moet nu alleen nog een foutafhandeling maken als er geen pagina gevonden wordt.



Heel erg bedankt, het werkt :)
nog 1 klein vraagje, hoe maak ik zo'n fout afhandeling?
dat als bijvoorbeeld de pagina_id niet terug is gevonden in de db dat er dan automatisch op komt te saan dat de pagina niet kon worden gevonden.
 
Johan Dam

Johan Dam

19/08/2010 12:23:09
Quote Anchor link
onder de juiste query

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
if(mysql_num_rows($record) == 0){
    // geen pagina's gevonden
} else {
    // pagina gevonden, ga door
}
?>


Daarnaast, maak gebruik van mysql_fetch_row of mysql_fetch_assoc, mysql_fetch_object is de traagste.

Is pagina_id een int? Dan kan je die beter zonde quotes doen, nu maak je er een string van en moet mysql dus een string to int conversie maken, wat extra tijd kost.

Gezien de pagian_id van de gebruiker moet je deze wel valideren, in dit geval is een
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
if(ctype_digit($pagina)){
    // $pagina is veilig
} else {
    // $pagina is geen getal? ERROR ERROR!
}
?>


myqsl_real_escape_string hoeft dan niet gebruikt te worden, mysql injection kan niet met enkel cijfers.
 
Michel Meinema

Michel Meinema

19/08/2010 12:28:09
Quote Anchor link
maar waar moet ik deze in mijn script zetten?
Gewijzigd op 19/08/2010 13:42:28 door Michel Meinema
 
Pim -

Pim -

23/08/2010 13:12:47
Quote Anchor link
De makkelijkste manier is het in een php bestandje zetten en deze overal includen.
 
Dalando De Zuil

Dalando De Zuil

23/08/2010 13:46:07
Quote Anchor link
Pim de Haan op 23/08/2010 13:12:47:
De makkelijkste manier is het in een php bestandje zetten en deze overal includen.


4 dagen later...

4 dagen later een reactie geven op een actief topic is juist goed. Het is iets anders wanneer het 4 maanden of jaren later is, omdat het dan meestal niet meer iets toevoegt aan een topic. In dit geval, voegt jouw reactie aan het topic niets toe.. Probeer daar op te letten ;-)[/modedit]
Gewijzigd op 23/08/2010 14:32:06 door Chris -
 
Paco oste

Paco oste

23/08/2010 14:19:11
Quote Anchor link
Niet zo moeilijk eigenlijk ke werkt met een get functie
ik zal je een voorbeeld geven
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
switch($_GET['JEPAGINAREQUEST']) { //Bevoorbeeld dan www.jesite.com/?JEPAGINARESUEST=
      case "home":
       echo '';
       break;
?>
 



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.