Autor Zpráva
Wladimir Čert
Profil *
Zdravím,


řeším jeden složitější příklad.
Mám tabulku s články:
I
D - Název - Autor
0 - První  - nic
2 - Druhý  - nic
atd...
atd...

s tím, že pole autor je null (zatím nevyplněn).

Mám i formulář, kde edituji uživatele a kde si vypíšu seznam článků nějak takto:
<input value="1" name="autor" type="checkbox"> Článek - "První"
<input value="1" name="autor" type="checkbox"> Článek - "Druhý"
atd...
atd...

Potřebuji k článkům přiřadit autora. (Zatrhnu u jakých článků bude autor s ID 1). Vím že mi navrhnete, ať to udělám opačně, ať přiřazuji autory přímo k článkům, ale jde mi hlavně o princip, abych jej pochopil.

Konkrétně netuším, jak by se mohl dělat hromadný UPDATE. Díky.
Str4wberry
Profil
Spíš bych navrhovat toho uživatele k článku přiřadit v momentě jeho uložení.

Jinak:
1) Doporučil bych použít pole (jako name použijete autor[]) a do value dát ID článku:
<input value="1" name="autor[]" type="checkbox">
2) Zaškrtnuté položky potom přijdou v $_POST["autor"].
3) Na příkaz update se podívejte do dokumentace. Jako podmínku použijete where id in (1, 2, 3, …), kterou si sestavíte z toho pole se zaškrtnutými články.
Tori
Profil
Opačný přístup (tj. mít seznam článků a k nim v <select>u vybírat autory) mi přijde lepší. Tak jak to máte teď by bylo potřeba také zkontrolovat, jestli
a) článek už není přiřazen k jinému autorovi (tj. místo UPDATE byste zřejmě použil INSERT...ON DUPLICATE KEY UPDATE)
b) jestli jste nezrušil zaškrtnutí, tj. článek už nemá být přiřazen tomuto autorovi (dá se řešit různými způsoby)
Str4wberry
Profil
Ono bude dost záležet na způsobu využití, což mi zatím z [#1] není úplně jasné. Při potřebě vybrat pro velké množství článků z několika autorů by asi bylo právě pohodlnější si nejprve vybrat autora a potom mu zaškrtat články. Kontroly a) a b) mi v takovém případě nepřijdou úplně nezbytné. Ad a) může se nechat možnost upravit jen nepřiřazené články nebo autora případně přepsat, ad b) zrušení může probíhat celkem jednoduše přes vybrání autora nic a připsání mu autorství.

Ale jak píšu, bylo by potřeba lépe specifikovat, co je cílem vytvořit a jak se to má používat.
Wladimir Čert
Profil *
Díky moc zaVáš čas!
Str4wberry: - to určitě vyzkouším, s těmi poli už jsem viděl hromadné mazání.

Při potřebě vybrat pro velké množství článků z několika* autorů by asi bylo právě pohodlnější si nejprve vybrat autora a potom mu zaškrtat články.


* já právě upravuji jednoho autra a k němu přiřazuji články. S tou ochranou už to dám do SQL WHERE podmínku a nebo dám disabled do inputu. To už se pak uvidí, ale díky.
Wladimir Čert
Profil *
Tak kluci, tady se ztrcátím:
       mysq_query("UPDATE clanky 
       SET autor_clanku='".intval($_POST['autor'])."'
       WHERE autor_clanku IN (" . implode(',', intval($_POST['autor'])) . ");
       ");

SQL vrátí chybu:
Warning: SQL error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ')' at line 3 --- SQL code: UPDATE clanky SET autor_clanku='0' WHERE clinic IN ();

Input mám definovaný takto:
<input type="checkbox" name="autor[]" value="0">
Wladimir Čert
Profil *
Nikdo by nevěděl? :-(
tiso
Profil
Wladimir Čert: ale tvoj dotaz vyzerá inak, podľa SQL chyby takto:
UPDATE clanky SET autor_clanku='0' WHERE clinic IN ();
nie: ...WHERE autor_clanku IN...
Okrem toho, máš tam mať:
...WHERE id_clanku IN (" . implode(',', $pole_s_idckami_clanku . ");...

Vaše odpověď

Mohlo by se hodit

Odkud se sem odkazuje


Prosím používejte diakritiku a interpunkci.

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