IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
miki.brki
Člen
Avatar
miki.brki:14.6.2015 20:49

Zdar!
Mám menší problémek. Dělám si průběžně tutoriály pro programování webů.
Začal jsem u http://www.itnetwork.cz/…bove-stranky

Ten byl v pohodě, web jsem si udělal vzhledově podle sebe, ale jinak kod je skoro stejný.

Pak jsem přešel na http://www.itnetwork.cz/php/zaklady

V 10. článku je skládání stránek za použití webu z prvního tutorialu. Obsah stránky se vloží do index.php přes skript. Funguje to, ale přestal fungovat tag class="active". Je to tím, že jsem pořád v index.php a jen si načítám obsah ostatních tránek, takže když kliknu v menu např. na Kontakt, tak mám pořád aktivní kolonku "Home".
Nevíte někdo, jak to upravím, aby mi třída začla opět fungovat?
Dík za jakoukoliv radu

 
Odpovědět
14.6.2015 20:49
Avatar
Odpovídá na miki.brki
Michal Šmahel:14.6.2015 21:30

Ostatní styly fungují??

Nahoru Odpovědět
14.6.2015 21:30
Nejdůležitější je motivace, ovšem musí být doprovázena činy.
Avatar
Odpovídá na miki.brki
Neaktivní uživatel:14.6.2015 21:34

Třídu active musíš elementu přiřadit jen tehdy, pokud se nachází na dané stránce. Tudíž pokud máš název stránky v $_GET["page"]:

<a href="#" <?if($_GET["page"]=="articles"):?>class="active"<?endif?>>Articles</a>

Snad jsem tě dobře pochopil. :)

Nahoru Odpovědět
14.6.2015 21:34
Neaktivní uživatelský účet
Avatar
miki.brki
Člen
Avatar
miki.brki:14.6.2015 22:15

Podoba menu:

<pre class="php">
<nav>
<ul>
<li><a href="index.php?stran­ka=home">Home</a></li>
<li><a href="index.php?stran­ka=omne">O mně</a></li>
<li><a href="index.php?stran­ka=lorem">Lorem</a></li>
<li><a href="index.php?stran­ka=ipsum">Ipsum</a></li>
<li><a href="index.php?stran­ka=dolor">Dolor</a></li>
<li><a href="index.php?stran­ka=kontakt">Kon­takt</a></li>
</ul>
</nav>
</pre>

Podoba vkladani obsahu ze stranek:

<?php
if (isset($_GET['s­tranka']))
$stranka = $_GET['stranka'];
else
$stranka = 'home';
if (preg_match('/^[a-z0-9]+$/', $stranka))
{
$vlozeno = include('podsloz­ky/' . $stranka . '.php');
if (!$vlozeno)
echo('Podstránka nenalezena');
}
else
echo('Neplatný parametr.');
?>

Jak přesně to mám zadat do toho scriptu, co jsi mi poslal?

Editováno 14.6.2015 22:18
 
Nahoru Odpovědět
14.6.2015 22:15
Avatar
miki.brki
Člen
Avatar
Odpovídá na miki.brki
miki.brki:14.6.2015 22:20

Nevím, jak tam vlozit ten kod, aby byl videt, tak se prosím koukni do zdrojoveho kodu stranky.. To <pre> jsem tam vlozil az ted, aby to nevzalo jako kod, ale nefunguje to

Editováno 14.6.2015 22:20
 
Nahoru Odpovědět
14.6.2015 22:20
Avatar
miki.brki
Člen
Avatar
miki.brki:14.6.2015 22:31
<nav>
                    <ul>
                        <li><a href="index.php?stranka=home">Home</a></li>
                        <li><a href="index.php?stranka=omne">O mně</a></li>
                        <li><a href="index.php?stranka=lorem">Lorem</a></li>
                        <li><a href="index.php?stranka=ipsum">Ipsum</a></li>
                        <li><a href="index.php?stranka=dolor">Dolor</a></li>
                        <li><a href="index.php?stranka=kontakt">Kontakt</a></li>
                    </ul>
                </nav>

Už to mám

 
Nahoru Odpovědět
14.6.2015 22:31
Avatar
Michal Šmahel:14.6.2015 22:50
<nav>
    <ul>
        <li <?php if($_GET['stranka'] == 'domu' || $_GET['stranka'] == ''): ?>class="aktivni"<?php endif; ?>><a href="index.php">Domů</a></li>
        <li <?php if($_GET['stranka'] == 'o-mne'): ?>class="aktivni"<?php endif; ?>><a href="index.php?stranka=o-mne">O mně</a></li>
        <li <?php if($_GET['stranka'] == 'kontakt'): ?>class="aktivni"<?php endif; ?>><a href="index.php?stranka=kontakt">Kontakt</a></li>
    </ul>
</nav>
Nahoru Odpovědět
14.6.2015 22:50
Nejdůležitější je motivace, ovšem musí být doprovázena činy.
Avatar
miki.brki
Člen
Avatar
miki.brki:14.6.2015 23:05

První obrázek je kód.
Druhý je po kliknutí na Home a třetí po kliknutí na kontakt

 
Nahoru Odpovědět
14.6.2015 23:05
Avatar
Odpovídá na miki.brki
Neaktivní uživatel:15.6.2015 6:14

Jestli myslíš tu chybu, je to tím, že nemáš nastavený $_GET["stranka"] defaultně na indexu. Tudíž musíš v kódu kontrolovat, jestli je nastavený, třeba takto:

$stranka = isset($_GET["stranka"]) ? $_GET["stranka"] : "home";

A pak místo $_GET["stranka"] používat $stranka. :)

Nahoru Odpovědět
15.6.2015 6:14
Neaktivní uživatelský účet
Avatar
Odpovídá na miki.brki
Neaktivní uživatel:15.6.2015 9:21

Myslím si, že nejjednodušší je vypisovat to foreacheachem.

<ul>
  <?php $menu = array(
           'home' => 'Domů'
           'omne'  => 'O mně',
           'kontakt' => 'Kontakt'
        );
        $active = isset($_GET['stranka']) ? $_GET['stranka'] : 'home';
   ?>

  <?php foreach ($menu as $url=>$title) : ?>
      <li <?= $url == $active ? 'class="aktivni"' : '' ?>>
           <a href="index.php?stranka=<?= $url ?>">
                  <?= $title ?>
           </a>
      </li>
  <?php endforeach ?>
</ul>
Nahoru Odpovědět
15.6.2015 9:21
Neaktivní uživatelský účet
Avatar
smiesek
Člen
Avatar
Odpovídá na Neaktivní uživatel
smiesek:15.6.2015 14:05

můžu se prosím zeptat, jaké má opodstatnění použití ve foreach

<?=

myslela jsem, že to je pouze nějaký zkrácený výpis pro jinak

<?php $title ?>

ale pokud jsem to tedy takhle upravila, tak mi zcela zmizely odkazy na jednotlivé stránky a nějak tedy ten kod nemohu pochopit :-(

 
Nahoru Odpovědět
15.6.2015 14:05
Avatar
Odpovídá na smiesek
Neaktivní uživatel:15.6.2015 14:32
<?=$promenna?>

je zkrácenina od

<?php echo $promenna;?>

Tudíž ti proměnnou vypíše. Chceš říct, že jsi původní manuální výpis změnil(a) na zápis tím foreachem a nefunguje ti to? Nebo jsi změnil(a) <?=$title?> na <?php $title?>? Pokud to první, budu potřebovat víc informací, pokud to druhé, tak je to proto, že nic nevypisuješ (nemáš tam právě to rovnítko, které zastupuje echo, popřípadě print). :)

V tom kódu se nejdřív definuje pole odkazů. První je URL parametr, druhý název, který se vypíše do odkazu. Proměnná $action ti vrácí $_GET["stranka"] nebo "home", podle toho, jestli existuje $_GET["stranka"].

Poslední je cyklus, který projede celé pole odkazů a vypíše je v HTML formátu.

Editováno 15.6.2015 14:34
Nahoru Odpovědět
15.6.2015 14:32
Neaktivní uživatelský účet
Avatar
smiesek
Člen
Avatar
Odpovídá na Neaktivní uživatel
smiesek:15.6.2015 14:38

:( uf já su hlupák, já jsem automaticky, kde jsi použil

<?=

to nahradila

<?php

a nenapadlo mě tedy, že tam musí přijít ještě případně

echo

Jinak je to tedy funkční a pouze v poli s indexem 'home' pak chybí , čárka za hodnotou 'Domů', aby to případně původního autora příspěvku nezmátlo, tedy

<?php $menu = array(
         'home' => 'Domů',
         'omne'  => 'O mně',
         'kontakt' => 'Kontakt'
      );
      $active = isset($_GET['stranka']) ? $_GET['stranka'] : 'home';
 ?>

Díky za vysvětlení jinak, já jsem viděla, že se nepředávala v konečném důsledku proměnná, ale netušila jsem proč.

 
Nahoru Odpovědět
15.6.2015 14:38
Avatar
Odpovídá na smiesek
Neaktivní uživatel:15.6.2015 19:00

Takhle lze mnohem snáz přidávat do menu položky, a hlavně nemusíš mít u každé položky ten šílenej if, kterej dělá všude to samý :-)

Nahoru Odpovědět
15.6.2015 19:00
Neaktivní uživatelský účet
Avatar
Odpovídá na smiesek
Neaktivní uživatel:15.6.2015 19:01

Jinak <?= není short tag, tudíž by to mělo fungovat vždycky. Nemusíš to tedy nahrazovat <?php echo jestli ti jde o tohle.

Nahoru Odpovědět
15.6.2015 19:01
Neaktivní uživatelský účet
Avatar
smiesek
Člen
Avatar
smiesek:16.6.2015 6:12

:) již vše v pořádku, prostě jsem nevěděla, že

<?=

lze napsat i jako

<?php echo

znám právě ten druhý způsob

 
Nahoru Odpovědět
16.6.2015 6:12
Avatar
Jan Řehák
Člen
Avatar
Odpovídá na Neaktivní uživatel
Jan Řehák:26.2.2016 18:17

Prosímtě moc jsem nepochopil jak udělat aby byl index nastaven tak jako že to je první stránka. Jak (kam) mám upravit to $_GET. Děkuji za odpověd

 
Nahoru Odpovědět
26.2.2016 18:17
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 17 zpráv z 17.