Avatar
niveses
Redaktor
Avatar
niveses:

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:

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:

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:

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:

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:

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:

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:

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

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:

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:

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:

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:

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:

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:

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:

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:

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:

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.