Autor | Zpráva | ||
---|---|---|---|
tachov Profil |
#1 · Zasláno: 28. 10. 2015, 19:15:33
prosím jak mám pořešit mazání singů z playlistu .
výpis mám pořešení z sql databáze takto : $dotaz = mysql_query("SELECT * FROM `music`"); while($zaznam = MYSQL_Fetch_Array($dotaz)): $idsong = $zaznam["idsong"]; $skladatel = $zaznam["skladatel"]; $album = $zaznam["album"]; $namesong = $zaznam["namesong"]; $cover = $zaznam["cover"]; $url = $zaznam["url"]; echo "<li id='$idsong' song='$url' cover='$cover' artist='$skladatel'>$skladatel ( $album ) $namesong </li><a href='javascript:deletemp(\"$url\"),deletempa(\"$cover\"),loadplaylist()'><img src='./img/cross.png' style='width:20px;height:20px;z-index:500;' id='kross' class='kros' title='' /></a>"; endwhile; ?> a script pro mazání : function deletemp(url){ if (window.XMLHttpRequest) { var xmlhttp=new XMLHttpRequest(); } else { var xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); } xmlhttp.open("GET","unlink.php?url="+url,true); xmlhttp.send(); xmlhttp.onreadystatechange=function() { if (xmlhttp.readyState==4 && xmlhttp.status==100) { } } } function deletempa(cover){ if (window.XMLHttpRequest) { var xmlhttp=new XMLHttpRequest(); } else { var xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); } xmlhttp.open("GET","unlink.php?cover="+cover,true); xmlhttp.send(); xmlhttp.onreadystatechange=function() { if (xmlhttp.readyState==4 && xmlhttp.status==100) { } } } function loadplaylist(){ $("#playlist").load("./playlist.php"); } </script> ale je vždy potřeba kliknout 2x |
||
Bez_názvu.jpg Profil * |
#2 · Zasláno: 30. 10. 2015, 12:36:51
Zdravim,
nejspíš to bude tim, že v okamžiku, kdy se volá loadplaylist(), se ještě do databáze nepromítly změny z volání deletemp() a deletempa(). Ta volání sou asynchronní, takže bys měl počkat, až se jedna akce dokončí (mazání), abys věděl, že databáze už je v jinym stavu a můžeš ho načíst (loadplaylist). Já bych to vyřešil tak, že bych deletemp a deletempa sloučil do jedný metody, a loadplaylist bych volal až když tyhle akce úspěšně proběhnou. Naznačim: <a href='javascript:deletemp(\"$url\", \"$cover\")'> function deletemp(url, cover){ if (window.XMLHttpRequest) { var xmlhttp=new XMLHttpRequest(); } else { var xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); } xmlhttp.open("GET", "unlink.php?url=" + url + "&cover=" + cover, true); xmlhttp.send(); xmlhttp.onreadystatechange=function() { if (xmlhttp.readyState==4 && xmlhttp.status==100) { loadplaylist(); // věci sou smazaný, takže můžu načíst aktuální stav } } } Tímhle způsobem pro každý smazání potřebuješ 2 požadavky na server a navíc pokaždý překresluješ celej obsah elementu #playlist. Efektivnější způsob je v odpovědi vrátit pouze příznak úspěch/neúspěch (jestli byla písnička smazaná, nebo ne) a pokud se povedlo, tak smazat element reprezentující smazanou písničku. Další možnost je v odpovědi na smazání vrátit výsledný stav (seznam skladeb), tudíž by odpadlo volání metody loadplaylist, ale překreslíš celý seznam písniček, i když ti stačí smazat jeden element. Nebo můžeš tento seznam projít a porovnat s tim, co zobrazuješ a jenom provést změny. |
||
Časová prodleva: 8 let
|
0