![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 11 Pomógł: 0 Dołączył: 9.08.2007 Ostrzeżenie: (0%) ![]() ![]() |
Witam, mam problem z tablicą wielowymiarową. Próbuje zrobić dzięki niej menu oparte na zakładkach. Menu jest gotowe i chodzi poprawnie, ale tylko pod krasnalem. Z tego względu, że krasnal jest przestarzały zainstalowałem wamp server. Po odpaleniu strony pojawiają się błędy typu: "Notice: Undefined index:". Poniżej zamieszczam fragment kodu, który powoduje problem. Dokładniej jest to $tab_m[$klucz]. Wiem, że komunikat oznacza, że nie ma takiego indeksu i nie można się do niego przez to dobrać. Pierwsze pyt dlaczego chodziło na starszej wersji PHP? Drugie to jak porwanie zadeklarować taką tablicę? $tab_m[$m] jest odpowiedzialna za zmianę stylu po wybraniu odpowieniego linka w menu.
CODE <?php $m = isset($_GET['m']); $s = isset($_GET['s']); $tab_m[$m] = 'style="background:#FFFFCC; color:black; font-weight:bold;"'; $tab_s[$s] = 'style="color:#3333FF; text-decoration: none; font-weight:bold;"'; $i = 1; $menu = Array('home' => 'Start','news' => 'Aktualnośći,'historia' => 'Historia','galeria' => 'Galeria','kontakt' => 'Kontakt','inne' => 'Inne'); foreach ($menu as $klucz => $dana) { echo '<a href="index.php?m='.$klucz.'&s='.$i.'" '.$tab_m[$klucz].'>'.$dana.'</a>'; } ?> |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 952 Pomógł: 154 Dołączył: 20.01.2007 Skąd: /dev/oracle Ostrzeżenie: (0%) ![]() ![]() |
Ech... z czego ty się uczysz tego PHP? Przecież jedną z podstawowych rzeczy, jakie powinieneś wiedzieć, jest to, że w PHP można ustawić różne poziomy raportowania błędów. Jednym z rodzajów komunikatów jest m.in. E_NOTICE, które informują np. o odwołaniu do nieistniejącej zmiennej, co potencjalnie może być wynikiem błędu. KAŻDA zmienna, element tablicy, pole obiektu itd. powinno być zainicjowane jakąś początkową wartością przed pierwszym użyciem. Wtedy będziesz mieć pewność, że niezależnie od konfiguracji takie komunikaty nie będą się pokazywać.
A tak w ogóle to Twój kod jest hmmm... dziwny. Domyślam się dobrze, co chciałeś osiągnąć, ale kombinujesz zupełnie niepotrzebnie. Używasz niezainicjowanych tablic i jeszcze na dodatek używasz za indeksy wartości logiczne, podczas gdy później odwołujesz się do indeksów tekstowych. Jak to miało działać? Przecież można znacznie prościej i czytelniej: Kod if(!isset($_GET['m']))
{ $_GET['m'] = null; // inicjujemy domyslna wartoscia. } foreach($menu as $klucz => $nazwa) { echo '<a href="index.php?m='.$klucz.'&s='.$i.'" '.($klucz == $_GET['m'] ? 'style="background:#FFFFCC; color:black; font-weight:bold;"' : '').'>'.$dana.'</a>'; } Ten post edytował Zyx 8.02.2009, 09:58:55 -------------------- Specjalista ds. głupich i beznadziejnych, Zyx
Nowości wydawnicze: Open Power Collector 3.0.1.0 | Open Power Autoloader 3.0.3.0 |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 11 Pomógł: 0 Dołączył: 9.08.2007 Ostrzeżenie: (0%) ![]() ![]() |
Dzięki wielkie. Faktycznie niekiedy robię błahe błędy. Temat zamykam.
|
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 12.06.2025 - 16:45 |