Autor Zpráva
Komentáře?
Profil *
Ahojte...

mam funkci napsat článek, funguje v poho, smazat článek,editovat, zobrazit přes přechodné ID... atd... prostě jednoduché funkce (základní) :-)

Jenže, mam tu problém, chci vypisovat a přidávat pod každým článek komentáře, ano logicky řečeno vemu novou tabulku napriklad 'komentare_clanky' a vyplnim ID, pid a potom z. informace z formuláře... Krok s přidáváním komentářů, jsem se ale rozhodl přidat až někdy u 20 článku... tudiž mám ID v tabulce 'clanky' v hodnotě 50 a v 'komentare_clanky' mi pid zacne od nuly... To by nebyl takový problém, který by se nevyřešil... ale teď... Mám například pid 1... a ID článku, ke kterému jsem tento komentář napsal mam třeba 25... tudiž potřebuju definovat, že 1 patří k 25... 2 k 26, je mi jasné, že to musí jít po sobě a too nejlépe od nuly... tudiž převzato mluvme o ID - pid ; 1 - 1 ; 2 - 2 ... jenže jaký mám použít SQL dotaz na definování toho, že pid v tabulce komentáře odpovídá ID v tabulce clanky :-)
Komentáře?
Profil *
napsal jsem to moc složitě, ve směs jde o to, abych potom mohl pomoci toho SQL dotazu definovat WHERE na vkládání a čtení do a z db ;)
Alphard
Profil
Moc přehledné to opravdu není, navíc jste nevysvětlil, co je pid.
Obecně řečeno a asi nejlepší řešení:
tabulka články, mj. má sloupec id
tabulka komentáře, mj. má sloupce id a id_clanku
Id článku obsahuje id článku, ke kterému se váže komentář. Tj. platí: články.id = komentáře.id_článku. Vyzkoušené a bezproblémové řešení.
AM_
Profil
Máš v tom evidentně hokej a neuvádíš podstatné věci.
1) "mam funkci napsat článek" - funkci, která by napsala článek, si moc nedovedu představit (umělá inteligence?)
2) co je pid? id bych ještě jakž takž pochopil
3) proč by mělo vůbec vadit, že id komentářů začnou od nuly (navíc - auto-increment v sql začíná 1, takže už vůbec nevím, jak jsi k tomu došel)

Ve zkratce, jasně a jednoduše uděláno:

CREATE TABLE clanky(
  id_clanek INT NOT NULL AUTO_INCREMENT,
  clanek TEXT,
  ...
  PRIMARY KEY(id_clanek)
);
CREATE TABLE komentare(
  id_komentar INT NOT NULL AUTO_INCREMENT,
  id_clanek INT NOT NULL, --id clanku, ke kteremu komentar patri
  komentar TEXT,
  ...
  PRIMARY KEY(id_komentar)
);

K příslušnému článku (id_clanek) si vypíšeš všechny komentáře se stejným (id_clanek).

Tohle je jednoduché a efektivní řešení komentářům ke článkům, kde nenastane zřejmě žádný z tebou popisovaných problémů. Vyjadřuješ se bohužel dost špatně - snažíš se totiž mluvit jako někdo, kdo problematice rozumí, ale je vidět, že ji vůbec nechápeš nebo neumíš používat.
Vezmi si např. výraz "definovat WHERE na vkládání a čtení do a z db"
- WHERE na čtení z DB existuje, ale ani zdaleka jsi zde nedefinoval, co přesně chceš číst (jeden komentář? všechny? článek?) ani za jakých podmínek
- WHERE na vkládání - klauzuli WHERE nelze použít v příkazu INSERT INTO, tedy rozhodně ne v obvyklých případech, možná by na mě nějaký šťoural vytáhl nějaký superspeciální případ, ale to zřejmě nebude tvým problémem

Jinak řečeno - není ostuda se zeptat jako laik, horší je se snažit vyjádřit jako odborník.
Komentáře?
Profil *
já to myslel tak, že by práve pid byl stejný jako id v tabulce clanky, proto bych to potom mohl vypisovat podle podmínky, jenže teď si napsal vytvoření tabulky, já potřebuju definovat právě to, že pid v tabulce komentare se rovna id v tabulce clanky
Alphard
Profil
Komentáře?:
jenže teď si napsal vytvoření tabulky, já potřebuju definovat právě to, že pid v tabulce komentare se rovna id v tabulce clanky
Přesně tak, to vám oba radíme, pojmenování není podstatné.
AM_
Profil
Komentáře?
myslím, že názvy id_clanek a id_komentar jsou o něco výstižnější než id a pid.
ano, platí, že clanky.id_clanek=komentare.id_clanek, protože:
- každý článek má unikátní identifikátor id_clanek
- každý komentář má unikátní identifikátor id_komentar a přiřazení ke správnému článku pomocí id_clanek.

Na tomhle paradigmatu stojí základ filosofie relačních databází - relace mezi články a kometáři se realizuje právě sloupcem id_clanek.
Error404
Profil
jasně, ale když vkládám do databáze komentář, tak kde mam v SQL dotazu dopsat to, že je to právě ono id
Lamicz
Profil
Error404
Presne nechapu dotaz - Mam nejaky clanek a k nemu pisu komentar, k FORMu, kde je TEXTAREA zpravy pridam

<INPUT TYPE="HIDDEN" NAME="id" VALUE=".$_GET['id']."> 


s id clanku, ktery prave zobrazuji a zpracuji ho pak do SQL dotazu:

mysql_query("INSERT INTO `komentare` (`id_clanek`,`komentar`) VALUES ('".intval($_POST['id'])."', '".mysql_real_escape_string($_POST['zprava'])."'");

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

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