| Autor | Zpráva | ||
|---|---|---|---|
| Wladimir Čert Profil * |
#1 · Zasláno: 22. 1. 2013, 19:46:50
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"> $_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 |
#3 · Zasláno: 22. 1. 2013, 21:41:43
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 |
#4 · Zasláno: 22. 1. 2013, 22:21:31
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 * |
#5 · Zasláno: 23. 1. 2013, 12:34:38
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 * |
#6 · Zasláno: 23. 1. 2013, 16:18:28
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 * |
#7 · Zasláno: 24. 1. 2013, 16:49:53
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 (); ...WHERE autor_clanku IN...
Okrem toho, máš tam mať: ...WHERE id_clanku IN (" . implode(',', $pole_s_idckami_clanku . ");... |
||
|
Časová prodleva: 13 let
|
|||
0