Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Tabmenu w tablicy wielowymiarowej
Forum PHP.pl > Forum > PHP
szymsze87
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>';


}

?>
Zyx
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>';

}
szymsze87
Dzięki wielkie. Faktycznie niekiedy robię błahe błędy. Temat zamykam.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.