| 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: 11 let
|
|||
0