Autor Zpráva
faksa5
Profil *
Dobrý den,

aktuálně pracuji na zóně pro klienty, kde by si mohli po přihlášení zobrazit projekty, které pro ně dělám a následně si mohli rozkliknout detail projektu, kde by našli doplňující informace včetně informací o stavu projektu. Přihlášení už jsem za pomoci internetu udělal. V podstatě to funguje tak, že uživatel zadá jméno a heslo a pokud se shoduje se zápisem v databázi, pak proběhne přihlášení na stránku, která se nepřihlášeným uživatelům nezobrazí. A právě tuto stránku bych chtěl personalisovat, aby každý uživatel viděl jiný obsah. Pokud se nepletu, bude třeba PHP a MySQL. Pokud bych vytvořil MySQL tabulku s projektem, bude třeba vytvořit jedinečné ID projektu (kvůli interní identifikaci) a do další kolonky přidat ID uživatele, které se bude shodovat s ID uživatele, kterému daný projekt náleží a nakonec vytvoři kolonku s názvem projektu a kolonku s podrobnostmi o daném projektu pro klienta. Do php session uložím id uživatele, pomocí kterého následně odfiltruji data z tabulky SELECT projektid, nazevprojektu from table WHERE iduser = $id (pokud to správně popisuji). Každopádně zobrazit tuto tabulku metoou pokus omyl zvládnu sám. Teď se ale dostávám k otázce, kterou nevím, jak vyřešit - poslední položkou tabulky s přehledem o projektech by mělo být tlačítko "detail projektu" (popřípadě přidání linku k názvu projektu). Jak docílit toho, aby se přidáním do databáze vytvořila stránka s informacemi o projektu, kterou zobrazí jen určitý uživatel a link se automaticky přidá k tlačítku detail?
Mlocik97
Profil
faksa5:
"Pokud se nepletu, bude třeba PHP a MySQL."

Ne nutne, je to jedna z možností, ale může to byť i Ruby v kombinaci s PostgreSQL, nebo klidne i čokoľvek iné.
faksa5
Profil *
Ruby a PostgreSQL neovládám, takže bych volil raději PHP + MySQL. Jak docílím vygenerování stránky a vložení odkazu na stránku k tlačítku detail?
blaaablaaa
Profil
Uděláš si ještě tabulku projekt (nebo více tabulek), ve kterých budou informace o projektu uloženy.
Pak budeš mít třeba odkaz projekt.php?id=ID_PROJEKTU, na stránce projekt.php si ověříš, jestli přihlášený uživatel má k projektu právo a pokud ano, načteš a zobrazíš data z těch tabulek.
faksa5
Profil *
Vytvořil jsem stránku s projektem na adrese projekt.php?id=1. Na stránce s detailem projektu bych chtěl zobrazit název a detail. Jediné, co dokážu zobrazit je id projektu z url adresy přes echo "Project id : ". $_GET['id'] ."<br>";. Jak mohu zařídit, aby se mi zobrazil detail projektu k id, které je uvedeno v URL adrese? Zkoušel jsem
$conn = $db;
    $sql = "SELECT * FROM obsah";
    $result = $conn->query($sql);
    echo "Project id : ". $row["detail"] ."<br>";
, ale zdá se, že tato cesta fungovat nebude, protože se mi nic nezobrazí.
blaaablaaa
Profil
faksa5:
Ten fragment kódu je totální slátanina.
Doporučoval bych pročíst nějaké seriály se základy PHP a SQL (pozor na staré příklady s mysql_ funkcemi, ty nebrat).
faksa5
Profil *
Je to jen část kódu, kterou jsem napsal na stránky. Ale popravdě nerozumím, co je na kódu slátanina. Ukázka napojení na DB, kterou jsem poslal výše je téměř v každé diskusi o propojení PHP a MySQL a funguje. Zbytek už je jen zobrazení dat pro můj konkrétní případ. Uznávám, že se v php a mysql orientuji jen na začátečnické úrovni, ale většina věcí fungovala po odzkoušení a různému nastavení metodou pokus omyl.
$db = mysqli_connect('údaje k DB'); //připojení k DB
$conn = $db; //nastavení proměnné na $conn
    $sql = "SELECT * FROM obsah"; //vyberu požadované tabulky z databáze (na webu mám rozepsané jmenovitě)
    $result = $conn->query($sql); //zjištění počtu záznamů v tabulce
    echo "Project id : ". $row["detail"] ."<br>"; //zobrazení tabulky detail (nevím, proč nefunguje)
Podobný příklad používám i u tabulky se seznamem dat z databáze, kde mi to funguje

echo "<tr><td>" . $row["id"]. "</td><td>" . $row["nazev"] . "</td><td>"
. $row["stav"]. "</td><td><a href='/projekty.php?pid=$row[pid]'>Detail</a></td></tr>";
.
Při tvorbě jsem narazil na jeden tutoriál, kde se tvoří trochu odlišný projekt, ale spoustu věcí je podobných, čehož se snažím využít a kód upravuju tak, aby stránky fungovaly i v mém případě.

Předtím, než jsem se zeptl na svůj dotaz, jsem samozřejmě zkoušel Googlit, ale upřímně řečeno - nevím, co přesně do Googlu zadat, abych našel vysvětlení toho, jak z URL projekt.php?id=1 vzít id a načíst odpovídající data v tabulce do proměnných.


*edit: v ukázkách už je leckde počítáno s konkrétním případem, takže id = pid a projekt.php = projekty.php
Tomášeek
Profil
faksa5:
//nastavení proměnné na $conn
Proč proboha nepracuješ s proměnnou $db? Nebo proč ji nepojmenuješ $conn hned na prvním řádku? Tady je krásně vidět, že vůbec nechápeš, která bije. Jen v jednom tutoriálu bylo $db, v druhém $conn, tak jsi udělal tohle.

//vyberu požadované tabulky z databáze
Vybírají se řádky, nikoliv tabulky. Vybíráš všechny, ne jen ty, které chceš (ke kterým má uživatel práva)

//zjištění počtu záznamů v tabulce
Nikoliv. Pomocí $conn->query se počet řádků nezjišťuje.

//zobrazení tabulky detail (nevím, proč nefunguje)
Protože neexistuje proměnná $row. Navíc detail není tabulka, ale sloupec. Začni od začátku a začni tím, že si povolíš výpis chybových hlášek.
faksa5
Profil *
Proměnné $db a $conn mám z toho důvodu, protože web mám rozdělen na dvě části (veřejnou a neveřejnou) a pokud při úpravách něco pokazím, nemá to vliv na druhou část, která je veřejně dostupná. Ohledně kritérií zobrazení - to, co dávám dohromady je zatím jen web pro administrátora - ten je kompletně oddělen od uživatelského webu (jiná práva pro přístup k db a přístup pouze z intranetu), takže nepotřebuji zatím filtrovat jednotlivé záznamy (poslal jsem jen ukázku toho, co mi zatím fungovalo). Omlouvám se za nepřesnou terminologii - nemohl jsem si vzpomenout na názvy, tak jsem napsal jen slovo tabulka, ze kterého by mělo být zřejmé, že mám na mysli řádek nebo sloupec. Jak jsem psal výše - jsem v podstatě začátečník a uvedený zaznam $conn->query nevím, co dělá - ale používám ho k zobrazení počtu záznamu v tabulce (dle tutoriálu). Výpis chybových hlášek mám povolen, ale nic se mi nezobrazuje, takže beru web jako funkční. Odkazujete mě neustále na návody pro začátečníky atd. Chápu, že je to třeba, abych dal dohromady smysluplný kód. Podle různých tutoriálů se řídím v podstatě od začátku a toto vlákno jsem založil hlavně proto, abych se mohl zkušených programátorů ptát, jak si v rámci webu poradit s konkrétním problémem. A teď se mi při tvorbě vyskytl problém, se kterým nevím, jak si dál poradit. Nevím, jak dostat data z konkrétního záznamu v databázi (myslím tím data z řádku, kde je požadované ID) do proměnných, abych s nimi mohl dále pracovat? Mám na mysli záznam ze sloupce detail uložit jako $detail nebo nazev jako $nazev?


edit: pokud chci tedy načíst sloupec a použiji $column["detail"] , zobrazí se mi obsah?
Ikki
Profil
Proč to neudělat jednoduše?
1. Na stránce využiji podmínku IF, podle které usoudím zda daný člověk má k dané věci přístup - doporučil bych SESSION.
2. Následně k dané věci přidáš SQL select, ten můžeš odvíjet ručně dle kategorie/oprávnění - pokud budeš mít v Session oprávnění = 1/2/3 tak následně do SQL využiješ něco jako =>
SELECT * FROM tabulka WHERE id_opravneni=$_SESSION["opravneni"]
3. Samozřejmě k tomu je potřeba tak mít postavenou tabulku, případně obsah.
Tomášeek
Profil
faksa5:
Proměnné $db a $conn mám z toho důvodu, protože web mám rozdělen na dvě části (veřejnou a neveřejnou) a pokud při úpravách něco pokazím, nemá to vliv na druhou část, která je veřejně dostupná.
... což je nesmysl. Ty proměnné jsou stejné, obsahují totéž připojení k téže databázi. Pokud se něco pokazí, projeví se to všude (protože ta databáze je jen jedna).

$conn->query nevím, co dělá - ale používám ho k zobrazení počtu záznamu v tabulce (dle tutoriálu)
Nebylo by nejprve lépe pochopit, co jednotlivé řádky v tutoriálu znamenají, proč tam jsou a teprve pak s nimi pracovat? Počet záznamů tímto požadavkem fakt nezjisťuješ, to mi věř :-) Na zobrazení počtu záznamů (počtu vrácených řádků) slouží num_rows.

jak si v rámci webu poradit s konkrétním problémem
Když ti tu někdo napíše kód, jak se to dělá, tak jej copypastneš a buď bude fungovat a postavíme tu za tebe celou aplikaci, nebo ho nebudeš schopný rozběhnout, protože tam bude třeba jinak pojmenovaná proměnná a skončíš na tomhle.

edit: pokud chci tedy načíst sloupec a použiji $column["detail"] , zobrazí se mi obsah?
Proč to nezkusíš? Pokud existuje proměnná $column, je to pole a má klíč detail, tak se něco zobrazí. Jinak ne. Pokud se nic nezobrazí, tak bude $column['detail'] existuje, ale je prázdné, nebo neexistuje a vyskočí ti warning na neexistující proměnnou, nebo klíč pole.

SQL dotaz ti napsal Ikki v [#10], je v zásadě správně. Po vykonání dotazu musíš resultset nějak zpracovat (typicky fetch_assoc() ve while cyklu), tam ti vzniká ta zatím neexistující proměnná $row.

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0