Diskuze: Smyčka v přesměrování
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.


Zobrazeno 37 zpráv z 37.
K personalizaci obsahu a reklam, poskytování funkcí sociálních médií a analýze naší návštěvnosti využíváme soubory cookie. Informace o tom, jak náš web používáte, sdílíme se svými partnery pro sociální média, inzerci a analýzy. Partneři tyto údaje mohou zkombinovat s dalšími informacemi, které jste jim poskytli nebo které získali v důsledku toho, že používáte jejich služby.
Používáme nezbytné cookies pro fungování webu a s tvým souhlasem také analytické a marketingové cookies.
Zajišťují základní funkce, bezpečnost a služby, které sis vyžádal. Nelze je vypnout.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| ITnetwork | ITnetwork | Provoz webu, relace, přihlášení a uložení nastavení cookies. | PHPSESSID, auth_token, sid, itn_consent_impression, __Host-itn_consent | Relace až 1 rok |
| Google Tag Manager | Správa značek a načítání měřicích nástrojů webu. | Žádné | Neukládá se | |
| Google Fonts | Načítání typografie webu. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele | |
| Google Hosted Libraries | Načítání potřebných knihoven a stylů webu. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele | |
| Google reCAPTCHA | Ochrana formulářů a webu před zneužitím. | _GRECAPTCHA, rc::a, rc::b, rc::c, rc::f | Relace až 180 dní | |
| YouTube | Přehrávání vloženého video obsahu. | localStorage, IndexedDB; cookies after playback interaction | Relace až trvalé úložiště | |
| Vimeo | Vimeo | Přehrávání vloženého video obsahu. | __cf_bm, _cfuvid, vuid, localStorage, IndexedDB | Relace až 2 roky |
| Facebook Login | Meta | Přihlášení pomocí účtu třetí strany. | Úložiště řízené poskytovatelem | Relace až 1 rok |
| GoPay | GoPay | Zpracování uživatelem vyžádané platby. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele |
Pomáhají nám porozumět používání webu a zlepšovat ho.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| Google Analytics 4 | Měření návštěvnosti a používání webu. | _ga, _ga_* | Až 2 roky | |
| Microsoft Clarity | Microsoft | Měření návštěvnosti a používání webu. | _clck, _clsk, _cltk | Relace až 1 rok |
Slouží k měření kampaní, personalizaci reklamy a marketingové komunikaci.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| Google Ads | Měření kampaní, reklama a remarketing. | _gcl_au, _gcl_ls | Relace až 90 dní | |
| Meta Pixel | Meta | Měření kampaní, reklama a remarketing. | _fbp, _fbc, localStorage | Až 90 dní |
| Sklik | Seznam.cz | Měření kampaní, reklama a remarketing. | retargeting, sid, szn:* | Relace až trvalé úložiště |
| LinkedIn Insight | Měření kampaní, reklama a remarketing. | bcookie, li_gc, lidc, __cf_bm | Relace až 1 rok | |
| Ecomail | Ecomail.cz | Měření kampaní, reklama a remarketing. | ecmid, Úložiště řízené poskytovatelem | Dle podmínek poskytovatele |
| Atribuce kampaní ITnetwork | ITnetwork | Přiřazení návštěvy a objednávky ke kampani. | campaign_clid[*], user_session_context | Až 1 rok |
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.


musíš zadat celou adresu například http://www.example.cz/…poznamky.php
Ty bereš nějakou poznámku. Tu si poté ukládáš. Pokud tam není chyba,
přesměrováváš. Takhle se vytvoří smyčka, protože furt
přesměrováváš na to samé. Místo přesměrování vypiš si tu poznámku.

Aha, a mám to teda dělat takhle?
Připadá mi to nějaké divné
if (isset($_GET['poznamka']))
$url = $_GET['poznamka'];
else
$url = 'uvod';
$poznamka = mysql_query(' SELECT * FROM poznamky WHERE url=?', $url);
$vysledek= mysql_fetch_array($poznamka);
if (!$poznamka)
{
if ($url != 'chyba')
{ ?>
<html>
<head>
<link rel="stylesheet" href="styl-index.css" type="text/css" />
</head>
<body>
<article>
<h1><?php echo htmlspecialchars($poznamka['nadpis']); ?></h1>
<?php echo $poznamka['poznamka']; ?>
</article>
</body>
</html>
<?php }
else
die('Nebyla nalezena chybova poznamka');
}
?>
Musíš vědět sám co chceš aby se stalo, pokud ta poznámka neexistuje. Přesměrovat na domovskou stránku či?
Chápu to tak z tvého kódu, že jsme na stránce zobrazenipoznamky.php,
že?
Ty se dotazuješ na to jestli existuje poznámka z parametru v db a pokud ano
tak přesměruješ na stejnou stránku se stejným parametrem, to nemá
logiku.
Místo přesměrování udělej tedy výpis..
Ano, na hl-stranka.php si uživatel vyhledá poznámku podle nadpisu(vypíše se nadpis) a když na něho klikne má se ta poznámka zobrazit na stránce zobrazenipoznamky.php.. Ale jak teda má být ten výpis? Má to být jak jsem psal? Připadá mi to divné.
Else můžeš změnit:
else {
header('Location: .');
exit;
}
a místo
<?php echo ...; ?>
můžeš použít
<?= ... ?>
Moc nevím, jak to mám přesně udělat. Napadlo mě to udělat takhle. Je to dobře?
<html>
<head>
<link rel="stylesheet" href="styl-index.css" type="text/css" />
</head>
<body>
<article>
<?php
$link = mysql_connect("localhost", "root", "your_password");
mysql_select_db('internetove-poznamky',$link);
if (isset($_GET['poznamka']))
$url = $_GET['poznamka'];
else
$url = 'uvod';
$poznamka = mysql_query(' SELECT * FROM poznamky WHERE url=?', $url);
?>
<h1><?php echo htmlspecialchars($poznamka['nadpis']); ?></h1>
<?php
$vysledek= mysql_fetch_array($poznamka);
if (!$poznamka)
{
if ($url != 'chyba')
{
echo $poznamka['poznamka'];
}
else
header('Location: hl-stranka.php');
exit();
}
?>
</article>
</body>
</html>
Moc nevím, jak to mám přesně udělat. Napadlo mě to udělat takhle. Je to dobře?
<html>
<head>
<link rel="stylesheet" href="styl-index.css" type="text/css" />
</head>
<body>
<article>
<?php
$link = mysql_connect("localhost", "root", "your_password");
mysql_select_db('internetove-poznamky',$link);
if (isset($_GET['poznamka']))
$url = $_GET['poznamka'];
else
$url = 'uvod';
$poznamka = mysql_query(' SELECT * FROM poznamky WHERE url=?', $url);
?>
<h1><?php echo htmlspecialchars($poznamka['nadpis']); ?></h1>
<?php
$vysledek= mysql_fetch_array($poznamka);
if (!$poznamka)
{
if ($url != 'chyba')
{
echo $poznamka['poznamka'];
}
else
header('Location: hl-stranka.php');
exit();
}
?>
</article>
</body>
</html>
Resp. tam můžeš dát cokoliv a není to divné pokud to je samostatná stránka bez dalšího obsahu..
if (isset($_GET['poznamka']))
$url = $_GET['poznamka'];
else
$url = 'uvod';
$poznamka = mysql_query(' SELECT * FROM poznamky WHERE url=?', $url);
$vysledek= mysql_fetch_array($poznamka);
if (!$poznamka)
{
if ($url != 'chyba')
{
//Zde si proveď výpis vybrané zprávy
}
else
header('Location: hl-stranka.php');
die();
}
?>
Pokud se stránka samostatná a nevoláš ji třeba do nějakého jiného
obsahu tak tam můžeš dát i html elementy, proč ne?.. 
<article>
<?php
$link = mysql_connect("localhost", "root", "your_password");
mysql_select_db('internetove-poznamky',$link);
if (isset($_GET['poznamka']))
$url = $_GET['poznamka'];
else
$url = 'uvod';
$poznamka = mysql_query(' SELECT * FROM poznamky WHERE url=?', $url);
$vysledek= mysql_fetch_array($poznamka);
if (!$poznamka)
{
if ($url != 'chyba')
{
echo $poznamka['poznamka'];
}
else
header('Location: hl-stranka.php');
exit();
}
?>
<h1><?php echo htmlspecialchars($poznamka['nadpis']); ?></h1>
</article>
a vypisuje mi to 2 chyby.
Warning: mysql_query() expects parameter 2 to be resource, string given in
C:\Users\j\Desktop\PHP\zobrazenipoznamky.php on line 16
Warning: mysql_fetch_array() expects parameter 1 to be resource, null given in C:\Users\j\Desktop\PHP\zobrazenipoznamky.php on line 17
Musíš mít tu proměnnou přímo v dotazu, ne za, tohle je mysql_, ne PDO.

A používej prosím tlačítko odpovědět, ať si toho všimneme. 
Dobře, budu to používat.
$poznamka = mysql_query(' SELECT * FROM poznamky WHERE url= $url');
$vysledek= mysql_fetch_array($poznamka);
je již tedy dobře?
Ale stejně to pořád vypisuje chybu č.2: Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:\Users\j\Desktop\PHP\zobrazenipoznamky.php on line 17
máš tam chybu, má tam být:
echo $vysledek['poznamka'];
<h1><?php echo htmlspecialchars($vysledek['nadpis']); ?></h1>
Chyba znamená, že priradenie do premennej $poznamka neprebehlo v poriadku.
Funkcia mysql_query() vracia resource ak je operácia úspešná, inak vracia false (čo je boolean spomínaný v chybovom hlásení).
Obaľ slovo poznamky do SQL apostrofov t.j (``). Ak to nebude funogovať, tak obaľ do apostrofov aj časť za WHERE.
sahlepik:
Po tom co jsem tam dal ten tvůj kód tak to napsalo:
Parse error: syntax error, unexpected '<'
if ($url != 'chyba')
{
echo $poznamka['poznamka'];
<h1><?php echo htmlspecialchars($poznamka['nadpis']); ?></h1>
}
Tomáš123:
A po tvém:
$poznamka = mysql_query("SELECT * FROM 'poznamky' WHERE 'url= $url'");
Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean
given
Tak nevím..
Použiješ echo a nedáš tam <?php. To by ti ukázalo
jen čisté HTML (tedy i tohle by se jen zobrazilo a nevypsalo) = chyba. 
Proměnná $poznamka je prázdná, proto ta chyba. Nemůže se
provést tedy ta funkce, chybí jí parametry. 
Takto by to už malo fungovať:
$poznamka = mysql_query("SELECT * FROM `poznamky` WHERE `url` ='".$url."'");
Ale jak může být $poznamka prázdná, když je tam kód $poznamka = mysql_query("SELECT * FROM 'poznamky' WHERE 'url= $url'");
Nie je prázdna, obsahuje hodnotu false. Už som to písal vyššie. IT Man to myslel zrejme tak, že v premennej nie je požadovaný obsah.
Tak to je zvláštní... nevypisuje to ani chybu ani tu poznámku
ale echo
$poznamka['poznamka']; tam mám.
Premenná $poznamka je pole? Nezdá sa mi, ale kódy hore som neskúmal. Čo ti vypíše
echo $poznamka;
?
A máš něco v databázi či správně pojmenované sloupce?
Tomáš123 vypisuje to Resource id #4.
A když jsem dal: echo $vysledek; (protože
$vysledek=mysql_fetch_array($poznamka); takže by měla vypsat ten text) tak
to vypsalo: Notice: Array to string conversion in
C:\Users\j\Desktop\PHP\zobrazenipoznamky.php on line 30
Array
Jan Lupčík jo mám
A to, o čo sa snažíš je vypisanie obsahu tabuľky?
Na výpis použi cyklus:
foreach($vysledek as $index) {
echo $index;
}
Jo to je to o co se snažím. Chci vypsat ten obsah z db. Má se vypsat ta poznámka naprř. Koupit chleba. Zase to nic nevypisuje(ten cyklus)
Tak když se koukneš do jeho kódu, vzal jsem ten kousek jako VÝŇATEK,
značky pro vložení PHP kódu tam přece má. Proč bych ten jeho kód
kopíroval celý? To snad nemyslíš vážně 
Taky pro jednu položku se nepoužívá foreach (i když jsi vytáhl 1,
možná by to fungovalo, ale pro 1 je to zbytečné).
Zkus ještě pod ten array přidat:
$vysledek = $vysledek[0];
A pak to vypiš polem ($vysledek['nadpis'])).
Ano, jenže syntaxy PHP jsi neukončil. Ne každý začátečník to musí
pochopit. Takže příště uzavírej. 
P.S. Nechci vést mínuskovou válku, ale jak víš, že jsem to byl já?
Já ti jen vysvětloval fakta.
$poznamka = mysql_query("SELECT * FROM `poznamky` WHERE `url` ='".$url."'");
$vysledek= mysql_fetch_array($poznamka);
$vysledek = $vysledek[0];
if (!$poznamka)
{
if ($url != 'chyba')
{
echo($vysledek['nadpis']);
}
A pořád nic(a nechtěl jsi nahodou echo($vysledek['poznamka']);? ) 
Jinak přikládám screen z db.
Promiň, já už ti nepomohu, jsem spíš na PDO. Trochu zagoogli a určitě
to najdeš. 
Zobrazeno 37 zpráv z 37.