Liten dynamisk meny

PHPportalen Forum Index » PHP Mjukstart
Lägg ett bokmärke på hela tråden
Skapa nytt inlägg   Svara på inlägget
Visa föregående ämne :: Visa nästa ämne  
Startad av: Meddelande
Corp



Medlem i: 5674 dagar
Från: Norrköping
Status: Offline



#742314
Inlägg Skrivet: 2018-10-02 10:28      Ämne: Liten dynamisk meny Citera

Hej, försöker åstakomma en liten php meny när man klickar så ska länken vara selected och då visas i bold:

PHP:
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
Visa användarprofil Skicka privat meddelande Besök användarens hemsida ICQ-nummer
webbhelp



Medlem i: 4263 dagar
Från: Sverige
Status: Offline



#742315
Inlägg Skrivet: 2018-10-02 10:48      Ämne: Citera

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
Visa användarprofil Skicka privat meddelande Skicka e-post Besök användarens hemsida MSN Messenger
Corp



Medlem i: 5674 dagar
Från: Norrköping
Status: Offline



#742316
Inlägg Skrivet: 2018-10-02 11:16      Ämne: Citera

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? Smile

PHP:
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:
 


PHP:
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
Visa användarprofil Skicka privat meddelande Besök användarens hemsida ICQ-nummer
webbhelp



Medlem i: 4263 dagar
Från: Sverige
Status: Offline



#742317
Inlägg Skrivet: 2018-10-03 08:29      Ämne: Citera

KOD:
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
Visa användarprofil Skicka privat meddelande Skicka e-post Besök användarens hemsida MSN Messenger
Visa tidigare inlägg:   
Skapa nytt inlägg   Svara på inlägget
PHPportalen Forum Index » PHP Mjukstart
Hoppa till:  
Du kan inte skapa nya inlägg i det här forumet
Du kan inte svara på inlägg i det här forumet
Du kan inte ändra dina inlägg i det här forumet
Du kan inte ta bort dina inlägg i det här forumet
Du kan inte rösta i det här forumet
Du kan inte bifoga filer i detta forum
Du kan inte ladda ner filer från detta forum
Kontakta oss på adressen: info@phpportalen.net
Webbplatsen bygger i grunden på phpBB © 2001, 2002 phpBB Group

Modifieringar har senare gjorts i systemet av PHPportalen
Sid och logotypdesign skapad av Daren Jularic