Avatar billede bing89 Nybegynder
13. juni 2013 - 13:08 Der er 8 kommentarer og
1 løsning

Mysql til at styre indholdet via menuen med php.

Hej. Jeg skal til grundforløbsprøven som web-integrator på mandag(13-06-2013). Dertil forsøger jeg at ligge lidt ekstra på(gode karaktre vil vi jo alle gerne have ;)

Jeg arbejder i php.

Jeg vil gerne have et dynamisk site, hvor den automatisk opretter ny 'side', hvis admin vælger at oprette nyt menupunkt.

Der til ønsker jeg også kun at køre via én index.php?
Nu har jeg siddet længe og kan ærligtalt ikke komme frem til en løsning selv..

Jeg får menuen fra en mysqli database, og udskriver databasen sådan:

"<a href='index.php?menu=" . $row['id'] . "'>" . $row['menupunkt'] . "</a>";

Et halvfærdig eksempel på hvordan jeg har tænkt at det kunne løses:

if($row['id'] == ???){

Skriv forside.
} else if($row['id'] = ???{

Udskriv nummer to side.
}
Hvis admin vælger at oprette 'side nr 3', så skal den automatisk spytte endnu en
if($row['id] == ??? ){

}
hvis der er en anden måde at lave det på, så er jeg også klar på dette..
Avatar billede jakobdo Ekspert
13. juni 2013 - 15:00 #1
En metode jeg selv har brugt er en struktur ala:

id, parent, tekst

ID = autoincrement
PARENT = NULL eller ID. (hvis NULL, så er det hovedmenu, hvis f.eks. 1, så er den undermenu til hovedmenu med ID = 1)
tekst er hvad der står i menuen

Så kan du jo lave hovedmenuen via:

select * from menu WHERE parent isnull
Avatar billede bing89 Nybegynder
13. juni 2013 - 18:34 #2
Hvordan ville du så løse det i php, så den printer det rigtige ud, det rigtige sted :)?
Avatar billede bing89 Nybegynder
13. juni 2013 - 19:58 #3
http://jesperb.wigf3.sde.dk/royalrock/index.php <-- Nyhederne skal kunne udskrives på følgende måde..

Her er koderne:

Menuen:

$sql = "SELECT * FROM rockfestivalmenu"; // rockfestivalmenuen består af: id og navn(menunavne). //
$res = $objCon->query($sql);

        while ($row = $res->fetch_array()) {
            echo "<li>";
            echo "<a href='index.php?menu=" . $row['id'] . "'>" . $row['navn'] . "</a>";
            echo "</li>";

Forsiden:
if($menu == 1){
$sql = "SELECT * FROM rockfestivalnyheder WHERE menuid = " . $menu . " ORDER BY dato ASC";
// rockfestivalen består af: id, overskrift, tekst, dato og menu_id \\
  $res = $objCon->query($sql);
  while ($row = $res->fetch_array()) {

}
Avatar billede jakobdo Ekspert
13. juni 2013 - 22:21 #4
//Du kan opbygge din menu ala:
$sql = "SELECT * FROM rockfestivalmenu"; // rockfestivalmenuen består af: id og navn(menunavne). //
$res = $objCon->query($sql);

        while ($row = $res->fetch_array()) {
            echo "<li>";
            echo "<a href='index.php?menu=" . $row['id'] . "'>" . $row['navn'] . "</a>";
            echo "</li>";

Og så laver du:
//Forsiden:

if(isset($_GET['menu']) && is_numeric($_GET['menu'])){
$sql = "SELECT * FROM rockfestivalnyheder WHERE menuid = " . intval($_GET['menu']) . " ORDER BY dato ASC";
// rockfestivalen består af: id, overskrift, tekst, dato og menu_id \\
  $res = $objCon->query($sql);
  while ($row = $res->fetch_array()) {
echo "Noget om nyheden";
}
}

Kan det ikke bruges dynamisk ?
Avatar billede bing89 Nybegynder
14. juni 2013 - 08:12 #5
Du har fuldstændig ret.. :) Tusind tak, det har jeg godt nok knoklet med længe..

Hvad er det præcist ' intval ' gør, mere så jeg kan forklare det til eksamen :)?

.... og hvordan giver jeg dig point?
Avatar billede jakobdo Ekspert
14. juni 2013 - 08:17 #6
intval() "sikrer" du får en integer ud af variablen.
En mere sikker måde, som du bør overveje i næste udgave, er mysqli og prepare statements.
Avatar billede jakobdo Ekspert
14. juni 2013 - 08:19 #7
Og glemte at sige, nu er mit sidste indlæg lagt som et svar, så der skal du "markere" det og Acceptere svaret.
Så er alle glade. :o)
Avatar billede bing89 Nybegynder
14. juni 2013 - 08:21 #8
Jeg bruger også mysqli, jeg fik vidst bare ikke i'et med i overskriften og prepare statements skal jeg lige ha undersøgt hvad er, men mange tak for hjælpen :).
Avatar billede jakobdo Ekspert
14. juni 2013 - 09:15 #9
Takker for point.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester