Autor Zpráva
Saria
Profil
Dobrý den, pracuji poprvé s DB a mám vytvořen učební příklad. Studuji vše podle knihy PHP a MySQL, Larry Ullman. Mám vytvořenu stránku, kde se uživatel přihlásí, zaregistruje a data se uloží do DB. Tuto část jsem pochopila. Pak jsem vytořila stránku , kde si uživatel vloží inzerát, může přidat fotografii, atd. To jsem také zvládla. Co mi činí potíže je vytvořit správnou druhou tabulku..

Do druhé tabulky ukládám údaje: název souboru, velikost, typ unzerátu, dobu inzerátu, atd....
Jako promární klíč mám id_prijetí.
V první tab. mám pr. klíč id_uzivatele.

V tabulce 2 je id_uzivatele jako cizí klíč.
Vytvořila jsem také dotaz:
$dotaz = "SELECT id_uzivatele FROM uzivatele, inzerce WHERE uzivatele, id_uzivatele = inzerce, id_uzivatele"; //(UŽIVATELSKÉ JMÉNO)

Ale dál s tím nemohu pohnout. Podle knihy bych měla mít nějaký sloupec z 2.tab. zařazen do 1. tab. Ale asi mi uniká nějaký základní princip, nemohu to prakticky pochopit.
Saria
Kajman_
Profil *
Prostě uděláte dotaz na více tabulek. Problém máte v tom, že v knížce jsou asi tečky a Vy tam máte čárky.

SELECT i.*, u.jmeno_uzivatele FROM uzivatele u, inzerce i WHERE u.id_uzivatele = i.id_uzivatele
Saria
Profil
Váš řádek i ten původní mi načte hodnotu 1, 2, 3, atd.....
Jen v principu nenačte iduživatele, který si inzerát vložil.

Je ale docela možné, že musí být nadefinovány podmínky, za kterých takto PHP script s inzerentním formulářem funguje a to já nemám.
Nebo jsem si vybrala složitější věc a měla bych se učit spojovat dvě tabulky na něčem příhodnějším. Každopádně jsem si našla www.linux.soft a tam je jedna z prvních rad, mít to promyšleno, což já nemám a vytvářím tabulky a řádky podle toho, co se učím.

Po tom, co jsem se dověděla v linuxu si teď ani nejsem jistá, je-li 1:N vhodná, nemělo-li by to být spíš N:N. Člověk to asi již intuitivně pozná z praxe, ale tu já ještě nemám. Takže pokračuji stylem pokus-omyl a občas i pokus-funguje.
Zatím jsem s tím teda nehla.....
Saria
Kajman_
Profil *
Myslím, že to máte navrhnuté dobře.

Ten dotaz vrátí všechny šloupečky v tabulce inzerce a příslušný řádek se jménem z tabulky uzivatele. Pokud se koukáte jen na první sloupeček, tak tam pochopitelně budou čísla inzerátů.
Saria
Profil
Pročítala jsem si různé dotazy v této sekci a musím teda před Vámi smeknout jak dovedete na vše přijít.....

Tímto se chci omluvit za otázku, nad kterou se Vám musí asi protáčet oči v sloup.
tabulka1: tabulka2:
id_uzivatele id_prijeti
uziv_jmeno id_uzivatele
jmeno typ_inzeratu
prijmeni titul_inzeratu
email nazev_souboru
heslo velikost_souboru
datum_registrace typ_souboru
kategorie
doba_inzerce
popis
cena
datum_prijeti


ověřené, zadané a upravené údaje (pro vložení inzerátu) z formuláře načtu příkazem INSERT INTO do tabulky 2
a id_uživatel do tabulky2 vyberu a vložím již zmíňovaným příkazem..ale teď ten "blbý dotaz"....ten příkaz mi vloží id_uživatele, který je zaregistrovaný, přihlášený a chce vložit inzerát=vložil inzerát ?

Nechybí mi nějaká hodnota řádku v tabulce1? Nemůžu si pomoci, ale určitě to nemám dobře.....
PS: to s tím prvním sloupečkem jsem náhodou, vyjímečně věděla, když si dám projít tabulku, tak je to v záhlaví rozepsáno, co je která hodnota.... a právě u id_uzivatel(tab.2) byla 0, zkusila jsem zadat vých. hodnotu 1(tím začíná i číslování id_uzivatele v tab.1) a vypsalo mi to 1, pak 2, ...atd. Saria
Kajman_
Profil *
Dělal bych to také tak. Prostě u inzerátu sloupeček s id_uzivatele. N:N je v tomhle asi k nepotřebě, protože těžko bude inzerát, který nabízí více uživatelů dohromady.
Toto téma je uzamčeno. Odpověď nelze zaslat.

0