Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
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í.

Diskuze: Smyčka v přesměrování

Aktivity
Avatar
mat.masar
Člen
Avatar
mat.masar:27.2.2015 19:00

Ahojte, řeknete mi prosím vás, co s tím mám udělat, aby tam nebyla smyčka v přesměrování?

 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')
        {
                header('Location: zobrazenipoznamky.php?poznamka=' .htmlspecialchars($url));
                exit();
        }
        else
                die('Nebyla nalezena chybova poznamka');
}
 ?>
 
Odpovědět
27.2.2015 19:00
Avatar
Odpovídá na mat.masar
Neaktivní uživatel:27.2.2015 19:03

musíš zadat celou adresu například http://www.example.cz/…poznamky.php

Nahoru Odpovědět
27.2.2015 19:03
Neaktivní uživatelský účet
Avatar
Jan Lupčík
Tvůrce
Avatar
Odpovídá na mat.masar
Jan Lupčík:27.2.2015 19:07

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. :)

Nahoru Odpovědět
27.2.2015 19:07
TruckersMP vývojář
Avatar
mat.masar
Člen
Avatar
mat.masar:27.2.2015 19:10

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');
}
 ?>
 
Nahoru Odpovědět
27.2.2015 19:10
Avatar
Odpovídá na mat.masar
Uživatel sítě :27.2.2015 19:15

Musíš vědět sám co chceš aby se stalo, pokud ta poznámka neexistuje. Přesměrovat na domovskou stránku či?

Nahoru Odpovědět
27.2.2015 19:15
Chybami se člověk učí, běžte se učit jinam!
Avatar
mat.masar
Člen
Avatar
mat.masar:27.2.2015 19:21

Jo, pokud neexistuje tak asi přesměrovat na domovskou stránku. Ale hlavně potřebuju aby se ta poznámka vypsala (samozřejmě pokud existuje). Je to dělané podle tutoriálu NERS tady na webu. Akorád já jsem měl zadání s poznámkama.

 
Nahoru Odpovědět
27.2.2015 19:21
Avatar
Odpovídá na mat.masar
Uživatel sítě :27.2.2015 19:25

Chápu to tak z tvého kódu, že jsme na stránce zobrazenipoznam­ky.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..

Nahoru Odpovědět
27.2.2015 19:25
Chybami se člověk učí, běžte se učit jinam!
Avatar
mat.masar
Člen
Avatar
mat.masar:27.2.2015 19:29

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 zobrazenipoznam­ky.php.. Ale jak teda má být ten výpis? Má to být jak jsem psal? Připadá mi to divné.

 
Nahoru Odpovědět
27.2.2015 19:29
Avatar
Jan Lupčík
Tvůrce
Avatar
Odpovídá na mat.masar
Jan Lupčík:27.2.2015 19:31

Else můžeš změnit:

else {
    header('Location: .');
    exit;
}

a místo

<?php echo ...; ?>

můžeš použít

<?= ... ?>
Editováno 27.2.2015 19:31
Nahoru Odpovědět
27.2.2015 19:31
TruckersMP vývojář
Avatar
mat.masar
Člen
Avatar
mat.masar:27.2.2015 19:41

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>
 
Nahoru Odpovědět
27.2.2015 19:41
Avatar
mat.masar
Člen
Avatar
mat.masar:27.2.2015 19:41

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>
 
Nahoru Odpovědět
27.2.2015 19:41
Avatar
Odpovídá na mat.masar
Uživatel sítě :27.2.2015 19:41

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?.. :)

Nahoru Odpovědět
27.2.2015 19:41
Chybami se člověk učí, běžte se učit jinam!
Avatar
mat.masar
Člen
Avatar
mat.masar:27.2.2015 19:52
 <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\Des­ktop\PHP\zobra­zenipoznamky.php on line 16

Warning: mysql_fetch_array() expects parameter 1 to be resource, null given in C:\Users\j\Des­ktop\PHP\zobra­zenipoznamky.php on line 17

 
Nahoru Odpovědět
27.2.2015 19:52
Avatar
Jan Lupčík
Tvůrce
Avatar
Odpovídá na mat.masar
Jan Lupčík:27.2.2015 19:53

Musíš mít tu proměnnou přímo v dotazu, ne za, tohle je mysql_, ne PDO. :)

Nahoru Odpovědět
27.2.2015 19:53
TruckersMP vývojář
Avatar
Jan Lupčík
Tvůrce
Avatar
Odpovídá na mat.masar
Jan Lupčík:27.2.2015 19:54

A používej prosím tlačítko odpovědět, ať si toho všimneme. :)

Nahoru Odpovědět
27.2.2015 19:54
TruckersMP vývojář
Avatar
mat.masar
Člen
Avatar
Odpovídá na Jan Lupčík
mat.masar:27.2.2015 20:01

Dobře, budu to používat.
$poznamka = mysql_query(' SELECT * FROM poznamky WHERE url= $url');
$vysledek= mysql_fetch_a­rray($poznamka);
je již tedy dobře?

 
Nahoru Odpovědět
27.2.2015 20:01
Avatar
mat.masar
Člen
Avatar
Odpovídá na Jan Lupčík
mat.masar:27.2.2015 20:17

Ale stejně to pořád vypisuje chybu č.2: Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:\Users\j\Des­ktop\PHP\zobra­zenipoznamky.php on line 17

 
Nahoru Odpovědět
27.2.2015 20:17
Avatar
sahlepik
Člen
Avatar
Odpovídá na mat.masar
sahlepik:27.2.2015 20:23

máš tam chybu, má tam být:

echo $vysledek['poznamka'];
<h1><?php echo htmlspecialchars($vysledek['nadpis']); ?></h1>
Editováno 27.2.2015 20:25
 
Nahoru Odpovědět
27.2.2015 20:23
Avatar
sahlepik
Člen
Avatar
sahlepik:27.2.2015 20:30

Nechápu to "mínus", ale dle kódu, který prezentoval výše tam prostě má chybu v proměnné. Neřeším, že používá zastaralý ovladač mysql_ Mohl by mi tedy někdo ten mínus vysvětlit? Díky.

 
Nahoru Odpovědět
27.2.2015 20:30
Avatar
Tomáš123
Člen
Avatar
Odpovídá na mat.masar
Tomáš123:27.2.2015 20:33

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.

Nahoru Odpovědět
27.2.2015 20:33
Keby nebolo Internetu Exploreru, nebolo by dnešného internetu.
Avatar
mat.masar
Člen
Avatar
mat.masar:27.2.2015 20:41

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..

 
Nahoru Odpovědět
27.2.2015 20:41
Avatar
Jan Lupčík
Tvůrce
Avatar
Odpovídá na sahlepik
Jan Lupčík:27.2.2015 20:43

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. ;)

Nahoru Odpovědět
27.2.2015 20:43
TruckersMP vývojář
Avatar
Jan Lupčík
Tvůrce
Avatar
Odpovídá na mat.masar
Jan Lupčík:27.2.2015 20:45

Proměnná $poznamka je prázdná, proto ta chyba. Nemůže se provést tedy ta funkce, chybí jí parametry. :)

Nahoru Odpovědět
27.2.2015 20:45
TruckersMP vývojář
Avatar
Tomáš123
Člen
Avatar
Odpovídá na mat.masar
Tomáš123:27.2.2015 20:50

Takto by to už malo fungovať:

$poznamka = mysql_query("SELECT * FROM `poznamky` WHERE `url` ='".$url."'");
Editováno 27.2.2015 20:52
Nahoru Odpovědět
27.2.2015 20:50
Keby nebolo Internetu Exploreru, nebolo by dnešného internetu.
Avatar
mat.masar
Člen
Avatar
Odpovídá na Jan Lupčík
mat.masar:27.2.2015 20:56

Ale jak může být $poznamka prázdná, když je tam kód $poznamka = mysql_query("SELECT * FROM 'poznamky' WHERE 'url= $url'");

 
Nahoru Odpovědět
27.2.2015 20:56
Avatar
Tomáš123
Člen
Avatar
Odpovídá na mat.masar
Tomáš123:27.2.2015 21:00

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.

Nahoru Odpovědět
27.2.2015 21:00
Keby nebolo Internetu Exploreru, nebolo by dnešného internetu.
Avatar
mat.masar
Člen
Avatar
Odpovídá na Tomáš123
mat.masar:27.2.2015 21:01

Tak to je zvláštní... nevypisuje to ani chybu ani tu poznámku :D ale echo $poznamka['poz­namka']; tam mám.

 
Nahoru Odpovědět
27.2.2015 21:01
Avatar
Tomáš123
Člen
Avatar
Odpovídá na mat.masar
Tomáš123:27.2.2015 21:03

Premenná $poznamka je pole? Nezdá sa mi, ale kódy hore som neskúmal. Čo ti vypíše

echo $poznamka;

?

Nahoru Odpovědět
27.2.2015 21:03
Keby nebolo Internetu Exploreru, nebolo by dnešného internetu.
Avatar
Jan Lupčík
Tvůrce
Avatar
Odpovídá na mat.masar
Jan Lupčík:27.2.2015 21:03

A máš něco v databázi či správně pojmenované sloupce?

Nahoru Odpovědět
27.2.2015 21:03
TruckersMP vývojář
Avatar
mat.masar
Člen
Avatar
Odpovídá na Jan Lupčík
mat.masar:27.2.2015 21:08

Tomáš123 vypisuje to Resource id #4.
A když jsem dal: echo $vysledek; (protože $vysledek=mys­ql_fetch_arra­y($poznamka); takže by měla vypsat ten text) tak to vypsalo: Notice: Array to string conversion in C:\Users\j\Des­ktop\PHP\zobra­zenipoznamky.php on line 30
Array

Jan Lupčík jo mám

 
Nahoru Odpovědět
27.2.2015 21:08
Avatar
Tomáš123
Člen
Avatar
Odpovídá na mat.masar
Tomáš123:27.2.2015 21:12

A to, o čo sa snažíš je vypisanie obsahu tabuľky?

Na výpis použi cyklus:

foreach($vysledek as $index) {
echo $index;
}
Nahoru Odpovědět
27.2.2015 21:12
Keby nebolo Internetu Exploreru, nebolo by dnešného internetu.
Avatar
mat.masar
Člen
Avatar
Odpovídá na Tomáš123
mat.masar:27.2.2015 21:17

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)

 
Nahoru Odpovědět
27.2.2015 21:17
Avatar
sahlepik
Člen
Avatar
Odpovídá na Jan Lupčík
sahlepik:27.2.2015 21:20

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ě :)

 
Nahoru Odpovědět
27.2.2015 21:20
Avatar
Jan Lupčík
Tvůrce
Avatar
Odpovídá na mat.masar
Jan Lupčík:27.2.2015 21:21

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['nad­pis'])).

Nahoru Odpovědět
27.2.2015 21:21
TruckersMP vývojář
Avatar
Jan Lupčík
Tvůrce
Avatar
Odpovídá na sahlepik
Jan Lupčík:27.2.2015 21:23

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.;)

Nahoru Odpovědět
27.2.2015 21:23
TruckersMP vývojář
Avatar
mat.masar
Člen
Avatar
Odpovídá na Jan Lupčík
mat.masar:27.2.2015 21:29
$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['poz­namka']);? ) :(
Jinak přikládám screen z db.

 
Nahoru Odpovědět
27.2.2015 21:29
Avatar
Jan Lupčík
Tvůrce
Avatar
Odpovídá na mat.masar
Jan Lupčík:27.2.2015 21:36

Promiň, já už ti nepomohu, jsem spíš na PDO. Trochu zagoogli a určitě to najdeš. :)

Nahoru Odpovědět
27.2.2015 21:36
TruckersMP vývojář
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 37 zpráv z 37.