Diskuze: Vrácení výsledku na stránku

PHP PHP Vrácení výsledku na stránku American English version English version

Aktivity (1)
Avatar
niveses
Redaktor
Avatar
niveses:20.8.2013 19:08

Ahoj,
v PHP mám napsanou část webu. Na stránce je seznam referencí. Pokud kliknu na některou z referencí, tak se mi z MySQL stáhnou další data, jako je název, rok, ... V odkaze mám id a to mi pak načte php kód. Pokud odkaz společně s id odkazuje na jinou stánku, tak mi vše funguje. Pokud chci údaje z MySQL zobrazit přímo na stránce( na které jsem), tak se neobjeví. Přidávám kód.

HTML odkaz:
<a href="stavby.php?id=1">
PHP dotaz z datábaze
if(isset($_GET["id"])){
            $id = $_GET["id"];
            $data = $article->fetch_data($id);
            ?>
            <h4><?php echo $data["article_title"];?>

                </h4>

                <p><?php echo $data["article_content"] ?></p>

Pokud odkaz odkážu na stavby.php tak je vše v pořádku, pokud napíšu do nechám odkaz jenom

<a href="?id=1">

, tak se nic nenačte. Ikdyž znovu načtu stránku, aby se vše načetlo.

Pokud někdo ví, co s tím, budu rád.
Děkuji

 
Odpovědět 20.8.2013 19:08
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na niveses
David Čápka:20.8.2013 19:11

A jaký je tvůj dotaz? Že se skript spustí jen když zadáš jeho adresu je snad logické.

Editováno 20.8.2013 19:11
Nahoru Odpovědět 20.8.2013 19:11
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
niveses
Redaktor
Avatar
niveses:20.8.2013 19:15

Samozřejmě, že když se pokouším vrátit výsledek tak mám vše v jednom souboru. Ptám se na to, jak mám to mám přinutit, aby se to načetlo, abych nemusel mít 2 indetické soubory.

Děkuji

 
Nahoru Odpovědět 20.8.2013 19:15
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na niveses
David Čápka:20.8.2013 19:17

A co v těch souborech máš? Dotaz jsi položil dost nešikovně. Pokud chceš načíst něco ze souboru, použij require nebo include.

Nahoru Odpovědět 20.8.2013 19:17
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Kit
Redaktor
Avatar
Odpovídá na niveses
Kit:20.8.2013 19:19

Máš tam podmínku

if (isset($_GET["id"]))...

Pokud nezadáš parametr "id", tak podmínka není splněna. Proto se nic nezobrazí.

EDIT: Aha, ty to myslíš jinak. To by fungovat mělo. Zkusím to otestovat.

Editováno 20.8.2013 19:21
Nahoru Odpovědět  +1 20.8.2013 19:19
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
archlin
Člen
Avatar
Odpovídá na niveses
archlin:20.8.2013 19:19

Môžeš na to použiť Ajax, pomocou JQuery kňižnice to bude jednoduché .. Po kliknutí na link sa odošle žiadosť na php script spolu s tvojími dátami (id)a samotný php script sa postará o databázové informácie ktoré odovzdá napríklad v JSON formáte.

Nahoru Odpovědět 20.8.2013 19:19
sublime text 2
Avatar
niveses
Redaktor
Avatar
niveses:20.8.2013 19:28

Mám index.php, pomocí GET mám vytvořené menu. Pokud tedy napíšu index.php?stran­ka=reference dostanu se do referencí.
V referencích mám reference seřazené v levém sloupci. Pokud kliknu na některou z vypsaných referencí, chci aby se mi z datábáze vypsali údaje o ní. Reference je odkaz ve formě:

<a href="...?id=1">

ID 1 je v datábázi přiřazené. A potřebuji, aby se z datábáze stáhly další soubory.

Pokud odkaz reference vede na další stranu(odkaz ve tvaru:

<a href="stavby.php?id=1">

) tak se vše načte a je to v pořádku. Já bych ale potřeboval, aby se tyto údaje načetly do pravého sloupce. Když dám odkaz ve tvaru :

<a href="?id=1">

, tak se nic nestane(to je logické, protože se nenačte stránka. Pokud ale stránku načtu i s tímto parametrem, stejně se nic nenačte. Dokonce se dostanu na homepage. V adresním řádku mi ale zůstane celá adresa (index.php?stran­ka=reference?id=1).

Snad už to bude lépe pochopitelné. Pokud se php načítá v dalším souboru je funkční, pokud mám vše v jednom, nic se nestane.

Děkuji

Editováno 20.8.2013 19:30
 
Nahoru Odpovědět 20.8.2013 19:28
Avatar
Kit
Redaktor
Avatar
Odpovídá na niveses
Kit:20.8.2013 19:31

Udělal jsem si malý pokus. Oba odkazy mi normálně fungují.

<?php
$id = 0;
if (isset($_GET["id"])) {
    $id = $_GET["id"];
}
echo <<<EOT
<h1>id = $id</h1>
<a href="stavby.php?id=20">GET ID 20</a>
<a href="?id=42">GET ID 42</a>
EOT;

Problém asi bude jinde.

Je také dobré $_GET["id"] převést na integer, jinak tě někdo může nepříjemně překvapit.

Editováno 20.8.2013 19:32
Nahoru Odpovědět 20.8.2013 19:31
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Kit
Redaktor
Avatar
Odpovídá na Kit
Kit:20.8.2013 19:34
index.php?stranka=reference?id=1

je chybně, správně je URL

index.php?stranka=reference&id=1

a po zvalidování

index.php?stranka=reference&amp;id=1

Oprav si to.

Nahoru Odpovědět 20.8.2013 19:34
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
niveses
Redaktor
Avatar
Odpovídá na Kit
niveses:20.8.2013 19:34

Mohu se zeptat, co znamená to <<<EOT? zběžně jsem to teď projel Googlem a nejsem z toho moc moudrej :)
Díky

EDIT: Aha, takže v tom byl problém. Pokud zadám & tak již vše běží. Moc děkuju!!

Editováno 20.8.2013 19:36
 
Nahoru Odpovědět 20.8.2013 19:34
Avatar
Kit
Redaktor
Avatar
Odpovídá na niveses
Kit:20.8.2013 19:36

To je označení začátku šablony. Jmenuje se to Heredoc.

Je to lepší a praktičtější než Smarty.

Editováno 20.8.2013 19:38
Nahoru Odpovědět 20.8.2013 19:36
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
niveses
Redaktor
Avatar
Odpovídá na Kit
niveses:20.8.2013 19:40

Ještě se zeptám, jak by jsi skladoval obrázky do databáze? Potřebuji, aby se u id=1 zobrazily fotky. Četl jsem, že se přímo fotky nedoporučují a že je dobré pouze psát odkazy na fotky.
Jak by jsi to provedl ty?

Děkuji

 
Nahoru Odpovědět 20.8.2013 19:40
Avatar
Kit
Redaktor
Avatar
Odpovídá na niveses
Kit:20.8.2013 19:40

Místo & piš &amp;, jinak ti stránka neprojde validátorem.

Nahoru Odpovědět  +1 20.8.2013 19:40
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Kit
Redaktor
Avatar
Odpovídá na niveses
Kit:20.8.2013 19:44

Fotky se nejčastěji ukládají do samostatného adresáře. Do databáze se pak uloží název fotky, odkaz na soubor na disku, popis fotky, seznam osob na fotce, místo focení a vygenerovaný náhled (miniatura). Miniatura a popisky se generují při ukládání obrázku.

Nahoru Odpovědět  -1 20.8.2013 19:44
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
niveses
Redaktor
Avatar
Odpovídá na Kit
niveses:20.8.2013 19:45

Díky, kouknu na to a zkusím na to přijít ... Když tak sem zítra zase napíšu :)

Editováno 20.8.2013 19:45
 
Nahoru Odpovědět 20.8.2013 19:45
Avatar
jan.vencl
Redaktor
Avatar
jan.vencl:20.8.2013 20:23

neni to odpoved na tvuj dotaz ale do podminky pridej funkci is_int() pokud je navratova hodnota false tak vypis error 404 omlouvam se za diakritiku pisu z telefonu

 
Nahoru Odpovědět 20.8.2013 20:23
Avatar
Kit
Redaktor
Avatar
Odpovídá na jan.vencl
Kit:20.8.2013 20:32

Místo podmímky stačí sanitizace

$id = (int)$_GET["id"];
Nahoru Odpovědět 20.8.2013 20:32
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
jan.vencl
Redaktor
Avatar
Odpovídá na Kit
jan.vencl:20.8.2013 22:26

jenze prez tu mou podminku se nebude vykonavat sql dotaz kdyz pretypujes get[id] na int tak to stejne polozi dotaz ne? pokud to chapu spravne .:) jen se ptam:)

 
Nahoru Odpovědět 20.8.2013 22:26
Avatar
Kit
Redaktor
Avatar
Odpovídá na jan.vencl
Kit:20.8.2013 22:30

Je to ještě zapouzdřeno do podmínky

isset($_GET["id"])

takže pokud id není vyplněno, nebude splněna a může se udělat jiný typ dotazu.

To přetypování je tam nutné kvůli SQL injection.

Nahoru Odpovědět 20.8.2013 22:30
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
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 19 zpráv z 19.