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.

Člen

Zobrazeno 37 zpráv z 37.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
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.