Autor Zpráva
Jan Žák
Profil
Dobrý den všem, chtěl bych požádat o pomoc s tímto problémem. Mám script pro smazání záznamu:

    $(document).ready(function() {
        $(".delete").click(function(){
            var del_id = $(this).attr("id");
            var info = 'id=' + del_id;
            var tr_id = $(this).closest("tr");
            if(confirm("Chystáte se odstranit peněžní ústav. Jste si jistí?")) {
                $.ajax({
                    type: "POST",
                    url: "ajax/bank-delete.php",
                    data: info,
                    success: function(response){
                      $("#message").append(response);
                      tr_id.fadeOut(500, function () { 
                        tr_id.remove();
                      });
                    },
                });
            }
            return false;
        });
    });


// we remove the record
$result = mysql_query("DELETE b FROM bank b
                        LEFT JOIN company c ON c.bank_name_id = b.id
                      WHERE b.id = ". (int)$id . "
                        AND c.id IS NULL") or die (mysql_error());

  if ($result == 1) {
    report('odstranil/a peněžní ústav <strong>'.$bank_name.'</strong>');
    echo "<div class=\"alert\" style=\"margin-top: 10px;\">Peněžní ústav byl odstraněn!</div>";
  } else {
    report('se pokusil/a odstranit peněžní ústav <strong>'.$bank_name.'</strong>');
    echo "<div class=\"alert\" style=\"margin-top: 10px;\">Peněžní ústav nebyl odstraněn! Zkontrolujte návazné položky (Firmy), které mohou být k peněžnímu ústavu přiřazeny!</div>";
  }

smazání záznamu proběhne v pořádku i s vypsáním hlášky z echo. Pokud záznam smazat nelze, protože je jinde použit, ke smazání nedojde, ale zobrazí se stejná hláška, že záznam byl odstraněn. Pro znovunačtení stránky se záznam znovu objeví. Jak toto ošetřit, prosím mám ošetřit, když ke smazání nedojde, aby script vypsal hlášku v else? Děkuji moc za cenné rady.
Alphard
Profil
Testoval jste samotné PHP? Opravdu se vše tváří jako true?
Zkuste mysql_affected_rows.
Jan Žák
Profil
Alphard:
Děkuji za radu, posunul jsem se trošku dále, nyní dojde ke smazání a vypsání hlášky, že záznam byl smazán. Pokud použiji záznam, který je již použit v jiné tabulce, dojde k vypsání také spávné hlášky že nebyl odstraněn, ale ajax mi tento záznam také skryje, a po znovunačtení se znovu objeví. Tuším že bude chyba někde zde:
success: function(response){
  $("#message").append(response);
  tr_id.fadeOut(500, function () { 
    tr_id.remove();
  });
},
ale bohužel nevím jak toto ošetřit, aby záznam když není odstraněn, nebyl také skryt.
Keeehi
Profil
Musíš si tam toho posat víc, třeba pomocí pole zakódovaného do JSONu.
  if ($result == 1) {
    report('odstranil/a peněžní ústav <strong>'.$bank_name.'</strong>');
    echo json_encode(['status' => true, 'message' => "<div class=\"alert\" style=\"margin-top: 10px;\">Peněžní ústav byl odstraněn!</div>"]);
  } else {
    report('se pokusil/a odstranit peněžní ústav <strong>'.$bank_name.'</strong>');
    echo json_encode(['status' => false, 'message' => "<div class=\"alert\" style=\"margin-top: 10px;\">Peněžní ústav nebyl odstraněn! Zkontrolujte návazné položky (Firmy), které mohou být k peněžnímu ústavu přiřazeny!</div>"]);
  }

success: function(response){
  var data = JSON.parse(response);
  $("#message").append(data['message']);
  
  if(data['status']) {
    tr_id.fadeOut(500, function () { 
      tr_id.remove();
    });
  }
},
Monkeys
Profil *
Jan Žák:
Uz som to tusim niekde pisal pri testovani a vyvoji VZDY pouzivajte Firebug. Usetri vam to kopu casu a problemov.
Dalej co sa tyka vasho problemu vypiste si navratovu hodnotu z php ako
alert(success); //vo vasom pripaade response

ak volate data v podobe json teda v php mate echo json_encode(...); v ajaxe treba json zakomentovat inak vam to pri alerte nevrati nic.

dufam ze som pomohol
M.
Jan Žák
Profil
Keeehi:
Děkuji Ti velice za pomoc i Vám ostatním, funguje jak má, zase jsem se naučil něčemu novému :) Hezký den.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: