Ascundere comentariu dupa stergere

Discutii si intrebari legate de scripturi si functii JavaScript, jQuery si Ajax, cod JavaScript in general.
cadou
Mesaje:328

Ascundere comentariu dupa stergere

Cod: Selectaţi tot

<a href="javascript:delete_comment('.$roi['comid'].');">
unde ($roi[comid]) poate avea orice valoare, exemplu :

Cod: Selectaţi tot

<a href="javascript:delete_comment(403');">
In JS:

Cod: Selectaţi tot

function delete_comment(id){
        $.ajax({
         url: '/folder/comentarii-delete.php?id='+id,
         type:'POST',
         success:function(m){
         if( m == 'SUCCESS' ){
                $('#cid'+comid).slideUp(300,function(){
                        $('.bar-title span').text( parseInt( $('.bar-title span').text() ) - 1 );
                });
         }
         }
        });
}
Unde #cid e div-ul cu comentariul comid e id-ul comentariului.
Exemplu :

Cod: Selectaţi tot

<div id=cid403> bla bla alt cod </div>
Ok, am prezentat ce era de prezentat, dar cand dau click pe butonu de stergere, el in baza de date se sterge, dar la mine nu dispare pana cand nu dau refresh la pagina.

steell Mesaje:190
Uite o idee cum sa procedezi: scri intr-un fisier php codul ce afiseaza in pagina comentariile. cand apesi delete incarci cu ajax fisierul care sterge comentariile si incluzi iara fisierul care citeste comentariile.
O idee la aceasta idee:)) este sa folosesti metoda load() nu ajax(). Asta pentru ca e mai usor de folosit si in momentul in care incarci cu load intr-un div un continut, fostul continut al acelui div va disparea iar informatiile vor fi noi.
Adauga la fiecare comentariu un tag id sau title sau ce vrei tu, dupa ce apesi delete preiei acel tag si il trimiti catre scriptul php care sterge comentariile din baza de date al carui camp id este acelasi cu cel din formular (asta inseamna ca trebuie sa adaugi o coloana id auto increment la tabelul cu comentarii).
Nu stiu daca s-a inteles ce am zis, dar mai mot-a-mot de atat nu stiu sa explic.

cadou Mesaje:328
1. in primul rand am inteles ce ai zis, nu mai sunt incepator, am inceput sa cunosc cam 70% php , incepator sunt la javascript, ajax.
2. Codu meu e cam asa : cam ce cred ca ne intereseaza.
Cod afisare comentarii , codul de la un comentariu,
iar div-ul in care afiseaza toate comentariile este:
<div id=comentarii-profil></div>

Cod: Selectaţi tot

<div id=cid'.$roi['comid'].'>
etc cod .... mai multe div-uri si span-uri ....
</div>
Unde cid'.roi['comid].' de exemplu este cid400, normal ca id-ul e auto increment.
Apoi in js :

Cod: Selectaţi tot

function delete_comment(id){
    $.ajax({
    	url: '/folder/comentarii-delete.php?id='+id,
    	type:'POST',
    	success:function(m){
    		if( m == 'SUCCESS' ){
    		  $('#cid'+comid).slideUp(300,function(){
    		      $('.bar-title span').text( parseInt( $('.bar-title span').text() ) - 1 );
    		  });
    		}
    	}
    });
}
Unde delete_comment(id) poate fi de exemplu delete_comment(400).
Problema e ca nu prea stiu javascript, acum incep sa invat. Tot ce e mai sus e facut de mine :d, dar cu mici esecuri.
Sper ca sunt de folos aceste informatii.

steell Mesaje:190
Pai daca ai inteles de ce nu faci asa cum am zis. Practic ti-am oferit raspunsul si se pare ca ai si inteles. Nu te mai complica cu ajax() si efectul de slideup, foloseste load().
Uite exemplu metoda load():
tutorialeweb.net/javascript/incarcare-fisiere.php

MarPlo Mesaje:4343
Salut,
Daca butonul de stergere e asa:

Cod: Selectaţi tot

<a href="javascript:delete_comment(403);">
Iar Div-ul cu comentarii e:

Cod: Selectaţi tot

<div id="cid403"> cod comentariu </div>
In functia delete_comment(id) folosesti parametrul "id" si la definirea id-ului elementului /div-ului cu comentariu, adica:

Cod: Selectaţi tot

$('#cid'+ id).slideUp(300,function() { ... });
- Id-ul, valorile de atribute din tag-uri HTML trebuie mereu intre ghilimele.

cadou Mesaje:328
Tot nu merge.
E exact cum mi-ai zis acum.

MarPlo Mesaje:4343
Acest cod e testat, functioneaza. Trebuie doar sa stii sa-l aplici la tine.

Cod: Selectaţi tot

<a href="javascript:delete_comment(403);">Delete</a>
<div id="comentarii">
  <div id="cid402"> cod comentariu 402</div>
  <div id="cid403"> cod comentariu 403</div>
  <div id="cid404"> cod comentariu 404</div>
</div>
<script type="text/javascript">
function delete_comment(id){
  $.ajax({
   url: '/folder/comentarii-delete.php?id='+id,
   type:'POST',
   success:function(m){
      $('#cid'+ id).slideUp();
    }
  });
}
</script>

cadou Mesaje:328
Acum merge, mersi.
Am incercat sa pun codu asta si la stergerea tuturor comentariilor, dar nu merge, "slid" up-ul, ca de sters le sterge, dar dispar dupa ce dau refresh la pagina.

Cod: Selectaţi tot

<a href="javascript:delete_comment_all('.$row['id'].');">
unde (...id-ul) e id-ul persoanei care a primit com.
js

Cod: Selectaţi tot

function delete_comment_all(id){
  $.ajax({
   url: '/folder/comentarii-delete-all.php?id='+id,
   type:'POST',
   success:function(m){
      $('#cid'+ id).slideUp();
    }
  });
}

MarPlo Mesaje:4343
Daca toate comentariile sunt de exemplu intr-un tag cu id="comentarii", slideUp() trebuie sa-l aplici la $('#comentarii').
Deci, ori, dupa "success" sa ai:

Cod: Selectaţi tot

$('#comentarii').slideUp();
ori gasesti alta solutie in functie de cum si unde ai adaugate toate comentariile.