Autor | Zpráva | ||
---|---|---|---|
Lamič Profil * |
#1 · Zasláno: 29. 1. 2011, 10:32:15
Ahoj, mám kod s nahráváním screenshotů do jedný tabulky, názvy souborů odděluji ;
teďkon mi de o mazání jednotlivých souborů vytvořil sem si if (isset($_GET['delete_screen'])){ $del = MySQL_Query("DELETE FROM matches WHERE id = ".$_GET['edit_match']." LIMIT 1 "); teďkon mě ale vůbec nenapadá jak zvolit právě ten správný název souboru pro smazání screenshoty se mi ukládaj ve sloupci screeny |
||
jenikkozak Profil |
#2 · Zasláno: 29. 1. 2011, 10:38:47 · Upravil/a: jenikkozak
Lamič:
„názvy souborů odděluji ;“ Znamená to, že v jedné buňce máte více hodnot, které jsou oddělené středníkem? V takovém případě navrhuji vytvořit novou tabulku, do níž se budou jednotlivé hodnoty ukládat včetně s id matche, ke kterému patří. Poté bude změna jednoho záznamu jednodušší, aniž by bylo nutno manipulovat s ostatními. |
||
Spectator Profil |
#3 · Zasláno: 29. 1. 2011, 10:39:42
Pokud chceš smazat jeden údaj v tabulce, pak nepoužívej DELETE, ale UPDATE a nahraď hodnotu nějakým nulovým prvkem, který máš nastaven pro danou tabulku (NULL, 0, ...)
|
||
xmark Profil |
#4 · Zasláno: 29. 1. 2011, 10:45:54
Spectator:
cože?? Lamič: „screenshoty se mi ukládaj ve sloupci screeny“ Objasni vztah mezi tvými výrazy screenshot a soubor, dále pak mezi $_GET['delete_screen'] a $_GET['edit_match']. Záznamy v tabulce i soubory můžeš mazat podle jejich názvů. |
||
Lamič Profil * |
#5 · Zasláno: 29. 1. 2011, 10:51:35
jenikkozak:
Tohoto sme se právě chtěl vyvarovat, ale asi mi nci jiného nezbývá. xmark: screenshot - název obrázku, který je nahrán v tabulce matches ve sloupci screeny např. 1.jpg;2.jpg;3.jpg; atak dále... soubor - je vlastně to samé jako screenshot :) $_GET['delete_screen'] - pomocí adresy např. www.mujweb.cz/admin.php?page=zapasy&delete_screen=1.jpg smaže z databáze daný údaj $_GET['edit_match'] - zjístí aktuální ID zápasu ve kterém se screenshoty nacházejí |
||
jenikkozak Profil |
#6 · Zasláno: 29. 1. 2011, 10:53:48
Lamič:
„Tohoto sme se právě chtěl vyvarovat, ale asi mi nci jiného nezbývá.“ Proč ses chtěl vyvarovat správného řešení? |
||
xmark Profil |
#7 · Zasláno: 29. 1. 2011, 10:59:35
Lamič:
„screenshot - název obrázku, který je nahrán v tabulce matches ve sloupci screeny např. 1.jpg;2.jpg;3.jpg; atak dále...“ Aha, tak stačilo toto. To je chybná konstrukce, která zjednoduší prvotní vytvoření a dříve nebo později přinese přesně ty problémy, na které jsi teď narazil. Tak opravit, přesypat data a příště máš o zkušenost víc :) Správné řešení je jen jedno: pomocí dvou tabulek. |
||
Lamič Profil * |
#8 · Zasláno: 29. 1. 2011, 11:04:13
Dobře, díky za rady ;)
|
||
Lamič Profil * |
#9 · Zasláno: 29. 1. 2011, 11:58:59
Tak už to mám skoro hotový, akorát mám zase problém, že mi to maže všechny screenshoty v tom zápase.
Přitom by to mělo smazat ten údáj, který odpovídá ID. muj kod: <?php $sql_screeny = MySQL_Query("SELECT * FROM screenshoty WHERE id_match = ".$_GET['edit_match'].""); while ($row_screen = MySQL_Fetch_Array($sql_screeny)) { if (isset($_GET['delete_screen'])){ $del = MySQL_Query("DELETE FROM screenshoty WHERE id = ".$row_screen['id'].""); if (!$del){ error("Nastala chyba!"); } else { ok("Screen byl úspěšně smazán!"); } } echo "<td><a href='images/screen/".$row_screen['img']."' target='_blank'><img src='images/screen/".$row_screen['img']."' width='200' height='200'></a><br> <strong>ID screenu: ".$row_screen['id']."</strong>"; echo'<a href="?strana=zapasy_edit&edit_match=' . $_GET['edit_match'] . '&delete_screen=' . $row_screen['id'] . '" onClick="return confirm(\'Opravdu smazat screen?!?\');"><img src="images/ico_delete.gif"></td>'; } ?> |
||
xmark Profil |
#10 · Zasláno: 29. 1. 2011, 12:04:12
Máš nějak zmatek v těch ID. Musí to být tak, že budeš mít tabulku matches a tabulku screenshoty, kde u každého screenshotu bude mj. sloupec IDmatch. Z formuláře pak můžeš podle potřeby předat ID match nebo ID screenshotu a podle jednoho nebo druhého v tabulce screenshotů mazat.
|
||
Lamič Profil * |
#11 · Zasláno: 29. 1. 2011, 12:16:30
Tabulku matches a screenshoty mám.
Výpisy mi fungují správně, u screenu udávám i jaký má ID. ID screenu: ".$row_screen['id']." $row_screen['id'] je ID screenu, který chci smazat tudíš provedu: DELETE FROM screenshoty WHERE id = ".$row_screen['id']." |
||
xmark Profil |
#12 · Zasláno: 29. 1. 2011, 12:22:27 · Upravil/a: xmark
Takže jestli tomu dobře rozumím, tak ty si jedním dotazem řekneš o všechny sloupce z tabulky screenshoty, kde souhlasí id_match a pak v cyklu smažeš každý ten řádek zvlášť. Nebylo by lepší udělt to takhle?
DELETE FROM screenshoty WHERE id_match = ".$_GET['edit_match'] A doplním, že mazat můžeš podle jednoho nebo druhého sloupce. Jestli chceš smazat jeden screenshot, dělej to na základě jeho ID. |
||
Lamič Profil * |
#13 · Zasláno: 29. 1. 2011, 12:30:41
Ano, první dotazem si vyžádám, aby se mi zobrazily všechny screenshoty, který odpovídají id_match. Druhým dotazem mažu screenshot podle jeho id.
xmark: „Nebylo by lepší udělt to takhle?“ - chci mazat pouze jeden screenshot na který kliknu, nikoliv všechny screenshotu který obsahují id_match tedkon jak to mám tj. DELETE FROM screenshoty WHERE id = ".$row_screen['id']." se mi mažou všechny screenshoty který obsahují id_match přitom by mělo smazat pouze to id „A doplním, že mazat můžeš podle jednoho nebo druhého sloupce. Jestli chceš smazat jeden screenshot, dělej to na základě jeho ID.“ ano, to vím proto to chci mazat podle id, nechápu proč mi to nefujguje |
||
xmark Profil |
#14 · Zasláno: 29. 1. 2011, 12:34:03
Lamič:
„nechápu proč mi to nefujguje“ A já nechápu, kde a jak předáváš tomu dotazu konkrétní ID obrázku. Vidím jen $_GET['edit_match'] |
||
Lamič Profil * |
#15 · Zasláno: 29. 1. 2011, 12:37:40
".$row_screen['id']." - zjíštujě ID obrázku
DELETE FROM screenshoty WHERE id = ".$row_screen['id']." <a href="?strana=zapasy_edit&edit_match=' . $_GET['edit_match'] . '&delete_screen=' . $row_screen['id'] . '" onClick="return confirm(\'Opravdu smazat screen?!?\');"><img src="images/ico_delete.gif"> |
||
xmark Profil |
#16 · Zasláno: 29. 1. 2011, 12:41:31
Lamič:
Ještě jednou. Kde v tomto dotazu „DELETE FROM screenshoty WHERE id = ".$row_screen['id']."“ vidíš $_GET['delete_screen']? |
||
Lamič Profil * |
#17 · Zasláno: 29. 1. 2011, 12:46:01
nemám, předávám číslo pomocí ".$row_screen['id']."
teď když sem udělal DELETE FROM screenshoty WHERE id = ".$_GET['delete_screen']." tak mi to maže stejně jako předtím, tj všechny screenshoty v daném zápase |
||
xmark Profil |
#18 · Zasláno: 29. 1. 2011, 13:01:00
Jsem si jist, že to smaže všechny řádky, kde id = hodnota předaná tím GETem. Jestli máš takových řádků víc, máš špatně nastaveno chování pole ID.
|
||
Lamič Profil * |
#19 · Zasláno: 29. 1. 2011, 13:19:08
Tak mazání už mi funguje jak má :) Moc díííky :)
teď ještě abych nemusel zakládat nové vlákno, jak udělat přidávání více polí, aby se mi přidávalo samo id teď se mi přidává pouze jeden údaj $editimg = $_POST["editimg"]; $zapis = MySQL_Query("INSERT INTO screenshoty SET id = '', id_match = '$editid', img = '$editimg' "); if (!$zapis){ error("Chyba při ukládání screenshotu!"); } else { ok("Screenshot/y přidan/y!"); } <div class="field"><label>Screenshot: <input type="text" name="editimg[]"></label></div> |
||
Lamič Profil * |
#20 · Zasláno: 29. 1. 2011, 13:20:47
předtím sem to měl řešené v jednom sloupci oddělující ; takže sem měl
$addimg = implode(";", $_POST[addimg]); |
||
Časová prodleva: 13 let
|
0