Visa föregående ämne :: Visa nästa ämne |
Startad av: |
Meddelande |
Corp
Medlem i: 5797 dagar Från: Norrköping
Status: Offline
#742314
|
Skrivet: 2018-10-02 10:28
Ämne: Liten dynamisk meny
|
|
|
Hej, försöker åstakomma en liten php meny när man klickar så ska länken vara selected och då visas i bold:
1: <?php 2: 3: $page_array = array("Dashboard", "Contact", "Help"); 4: 5: echo "<ul>"; 6: foreach ($page_array as $key=>$value) { 7: 8: if ($page_array = $value) { 9: echo "<li style='font-weight: bold;'>". $value ."</li>"; 10: } else { 11: echo "<li>". $value ."</li>"; 12: } 13: } 14: 15: echo "</ul>"; 16: ?>
|
Kommer hit men blir bara pannkaka av det...
Är dock lite osäker om man ska blanda in _GET osv här också för att få det att fungera? |
|
|
_________________ Det ska gå... |
Till toppen på sidan |
|
webbhelp

Medlem i: 4386 dagar Från: Sverige
Status: Offline
#742315
|
Skrivet: 2018-10-02 10:48
Ämne:
|
|
|
Först, $page_array = $value skulle aldrig fungerat pga ett = innebär att du tilldelar ett värde. Vill du jämföra använda du 2st ==, alltså: $page_array == $value.
Andra, det skulle ändå aldrig fungerat med 2st == för att du jämför om array:en är lika med ett värde i array. Den kommer aldrig bli sann. Det du försöker kolla är om just den menylänken du håller på att skriva ut, är lika med,
Tredje, utan att använda $_GET, kan du omöjligt veta vilken sida du faktiskt är inne på. Du har inga länkar i koden du visar, men om du nu väljer sidan genom att länka till t.ex. ?page=contact
så måste du jämföra om $value == $_GET['page']
I varje loop iteration kollar du då om just $value i den iteration är samma som $_GET['page'] innehåller, och då blir den bold |
|
|
|
Till toppen på sidan |
|
Corp
Medlem i: 5797 dagar Från: Norrköping
Status: Offline
#742316
|
Skrivet: 2018-10-02 11:16
Ämne:
|
|
|
Tack!
Har kommit såhärlång och det fungerar ganska bra. dock så får jag problem om värdet på har mellanrum. ska man försöka få ut numret på värdet istället eller vad rekommenderas?
Sedan kanske detta inte är optimalt skrivet?
1: <?php 2: 3: $page_array = array("Dashboard", "Contact", "Help", "My Tickets"); 4: 5: if(isset($_GET['page'])) { 6: $page = $_GET['page']; 7: } else { 8: $page = $page_array[0]; 9: } 10: 11: echo "<ul>"; 12: foreach ($page_array as $key=>$value) { 13: 14: if ($value == $_GET['page']) { 15: echo "<li style='font-weight: bold;'><a href='index.php?page=". $value ."'>". $value ."</a></li>"; 16: } else { 17: echo "<li><a href='index.php?page=". $value ."'>". $value ."</a></li>"; 18: } 19: } 20: 21: echo "</ul>"; 22: ?> 23:
|
1: eller kan man lägga upp det snyggare som t.ex 2: $menu = array( 3: array('id'=>1, 'title'=>'Dashboard'), 4: array('id'=>2, 'title'=>'Contact') 5: );
|
sedan anropa title för presentation i textform och id i form av url? |
|
|
_________________ Det ska gå... |
Till toppen på sidan |
|
webbhelp

Medlem i: 4386 dagar Från: Sverige
Status: Offline
#742317
|
Skrivet: 2018-10-03 08:29
Ämne:
|
|
|
1: <?php
2: //currentPage blir dashboard om $_GET['page'] inte finns.
3: $currentPage = isset($_GET['page']) ? $_GET['page'] : 'dashboard';
4: 5: //En multidimensionell array där nyckel är slug:en för sidan t.ex. en sida som heter Kontakta oss har slug:en kontakta-oss. Slug:en ska alltid vara URL-vänlig, därför behöver du inte använda funktionen urlencode/urldecode. Det är ju du som väljer vad där ska stå.
6: $pageArray = [
7: 'dashoard' => [
8: 'title' => 'Dashboard'
9: ],
10: 'contact' => [
11: 'title' => 'Contakt'
12: ],
13: 'my-tickets' => [
14: 'title' => 'My tickets'
15: ],
16: ];
17: 18: //Här nedan skriver jag ut menyn HTML. Jag wrappar delar (<li>) av HTML-koden med en loop så att menyn kan skrivas ut.
19: //Jag har delat upp <a> taggen på flera rader för att du lättare ska se vad som sker.
20: //href="..." länkar till index.php?page=SIDANS_SLUG
21: //Därefter kör jag en short-if (Precis som jag gör i variablen $currentPage här ovan). Om $slug är samma som $currentPage, ger jag <a> taggen font-weight: bold stylen.
22: 23: //Jag har valt att ändra variabelnamn till att innehålla camelCase istället för Snake Case för att det följer psr-standarden (Riktlinjer för hur kod ska skrivas så att alla kan skriva på samma sätt. Lättare för folk att läsa andras kod på det sättet)
24: //camel case = såHärSerCamelCaseUt
25: //snake case = så_här_ser_snake_case_ut
26: //Det är inte obligatoriskt att följa psr eller någon annan standard, men jag rekommenderar det starkt, därför skriver jag det här för att redan nu så ett frö!
27: ?>
28: 29: <ul>
30: <?php foreach ($pageArray as $slug => $content) : ?>
31: <li>
32: <a
33: href="index.php?page=<?=$slug?>"
34: <?=$slug == $currentPage ? 'style="font-weight: bold;"' : ''?>
35: >
36: <?=$content['title']?>
37: </a>
38: </li>
39: <?php endforeach ?>
40: </ul>
|
Koden är otestad men något i den stilen siktar du nog på.
Jag gjorde en multidimensionell array för att du ska ha möjlighet att ha mer information än bara titel. Just nu använder jag titeln som länktext |
|
|
|
Till toppen på sidan |
|
|