Letní akce PHP týden
Pouze tento týden sleva až 80 % na kurzy PHP. Lze kombinovat s akcí Letní slevy na prémiový obsah!
Brno? Vypsali jsme pro vás nové termíny školení Základů programování a OOP v Brně!
Avatar
Pavel Kletečka:24. června 18:46

Dobrý den,

snažím se v databázi uživatelů udělat stránku, která o nic zobrazí informace. Dostal jsem se do části kdy se dostanu na stránku př.: /Displayer/Info/1 (kde 1 je ID v databázi), ale nevím jak přenést tuto hodnotu z Controlleru do View metody a pak ji získat v příslušném html.

Zkusil jsem: Zkoušel jsem ViewBag, ale nic ten nefungoval. A jinak jsem nic jiného nenašel.

Chci docílit: Potřebuju aby můj cshtml kód dostal ID, aby podle něho mohl pak vyhledat přes funkci v databázi a zobrazit správného uživatele.

 
Odpovědět 24. června 18:46
Avatar
Jaroslav Smrž
Redaktor
Avatar
Odpovídá na Pavel Kletečka
Jaroslav Smrž:24. června 19:22

To je jednoduché. Stačí postavit SQL dotaz.

SELECT * FROM users WHERE user_id = ?, $id

Pokud potřebuješ poradit ohledně samotné MVC architektury, hodil by se zdrojový kód.

Nahoru Odpovědět 24. června 19:22
I have no idea what it is doing but I´m scared to delete it... xD
Avatar
Odpovídá na Jaroslav Smrž
Pavel Kletečka:24. června 19:24

Dobrý den,

SQL kód už mám napsaný teď jen potřebuji z tohoto:

// GET: Displayer/Info
public ActionResult Info(int id)
{
    return View();
}

získat id, tak abych ho pak mohl dát do cshtml:

public int id =
 
Nahoru Odpovědět 24. června 19:24
Avatar
Jaroslav Smrž
Redaktor
Avatar
Odpovídá na Pavel Kletečka
Jaroslav Smrž:24. června 19:31

Teď moc nechápu, jak to myslíš. Ale potřebuješ předat ten parametr do View. Vůbec nevím, jak máš napsaný model uživatele. Chtělo by to Model uživatele, alespoň tu metodu, která získává id uživatele a pak příslušný kontroler.

Nahoru Odpovědět 24. června 19:31
I have no idea what it is doing but I´m scared to delete it... xD
Avatar
Odpovídá na Jaroslav Smrž
Pavel Kletečka:24. června 19:33

Model jsem nepochopil k čemu má být, protože mám všechno info v databazi, ale jetli je potřeba, tak bych to prvně zkusil vymslet sám. Jen jsem doufal, že by to šlo bez toho. Omlouvám se pokud je to amaterská chyba, dostal jsem brigádu na c# a snažím se ještě volnočasově doučit cshtml.

 
Nahoru Odpovědět 24. června 19:33
Avatar
Jaroslav Smrž
Redaktor
Avatar
Odpovídá na Pavel Kletečka
Jaroslav Smrž:24. června 19:39

Aha, tak teď už je mi to jasné. MVC (Model, View, Controller) architektura bez modelu opravdu nefunguje. Doporučuji projít si místní tutoriály C#. NET Core nebo ASP .NET MVC

Akceptované řešení
+20 Zkušeností
+1 bodů
Řešení problému
Nahoru Odpovědět 24. června 19:39
I have no idea what it is doing but I´m scared to delete it... xD
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:25. června 8:20

Niz popisu php prikazy (neni to c#)
Mno, pokud tam mas databazi, tak nekde mas nejaky takovy kod (bez dalsiho info, prohlidnuti kodu se da realna situace jen tezko odhadnout, kazdy pise kod jinak):

$id = isset($_GET['id']) ? $_GET['id'] : ''; // ziskani id z prikazoveho radku

$result = sql("SELECT * FROM stranky WHERE stranka_id = ?", $id); // sql dotaz na db pro ziskani stranky
$row = sql_fetch($result); // zformatovani dat z sql do array $row

echo $row['text'];
echo $row['id']; // ziskani a vypsani id z SQL

No, takze, to, co chces, je tam v podstat uz na zacatku $id.

v htaccess mas nejspis nastavene prepisovani adresy z

/Displayer/Info/1 na
index.php?path=Displayer/Info/&id=1
// Nebo neco takoveho... Je to to same jako v html kodu mit
<a href="index.php?path=Displayer/Info/&id=1">odkaz</a> nebo
<form method=get action="index.php"><input name=path value="..."><input name=id value="1"></form>
// V php z toho ziskas id prave pomoci
$id = isset($_GET['id']) ? $_GET['id'] : '';

Mno, ale kdyby jsi to chtel ziskat primo v html, obejit server, v tomto pripade by to slo. Jenom bych to nevidel jako spravne reseni. myslim si, ze potrebujes spis ziskat na serveru id stranky a pak jej vypsat.
U uzivatele je mozne ziskat id pomoci javascriptu. Je to trochu slozitejsi, ale jde to.
google = javascript location
https://developer.mozilla.org/…API/Location

<script>
var str, arr;
str = location.pathname // "/Displayer/Info/1"
arr = str.split('/'); // rozdel retezec podle lomitek ["", "Displayer", "Info", "1"]
alert(arr[arr.length-1]) // ziskej posledni polozku pole "1"
</script>
Editováno 25. června 8:20
 
Nahoru Odpovědět 25. června 8:20
Avatar
Jaroslav Smrž
Redaktor
Avatar
Odpovídá na Peter Mlich
Jaroslav Smrž:25. června 12:49

On měl špatně celou architekturu. Chtěl použít MVC a předat něco pohledu z kontroleru, ale kontroler to samozřejmě nemá kde vzít, když nemá žádný model. Navíc by měl použít ORM pro práci s databází a to je zase Entity Framework, kde se nepracuje s SQL. Celá jeho myšlenka získat id uživatele z URL byla tedy chybná.

Nahoru Odpovědět 25. června 12:49
I have no idea what it is doing but I´m scared to delete it... xD
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 8 zpráv z 8.