[PHP/MySQL] Usunięcie rekordu z bazy po zapisaniu pliku

Witam, jako, że zakładanie blokady na plik średnio mi wyszło to przepisałem kod na bazę danych. Prawie działa, ale jedyny problem to taki, że teraz skrypt nie chce mi usuwać rekordu z bazy. Pomoże ktoś?

$plik_otwarty = $_GET['strona'];

$wynik = mysql_query("SELECT * FROM edycja WHERE plik='$plik_otwarty'");


if(mysql_num_rows($wynik) > 0) {

while($r = mysql_fetch_array($wynik)) {

if($r[0] == $plik_otwarty && $r[1] == "tak") {

echo '';

      }

   }

}


if(empty($plik_otwarty))

{

echo'

tekst inf.';

}

else

{


$result = mysql_query("INSERT INTO edycja(plik, otwarty) VALUES('$plik_otwarty', 'tak')") or die(mysql_error());

echo'';

$a = file_get_contents("".$dir.$_GET['strona'].".".$typ_pliku."");


  echo $a;

  echo '
';

  echo '';

  $editor_data = stripslashes($_POST['content']);

  $editor_data = str_replace($tab1, $tab2, $editor_data);

  $editor_data = html_entity_decode($editor_data);

  $b = file_put_contents("".$dir.$_GET['strona'].".".$typ_pliku."", $editor_data);


echo'';

}


if ($b === true) {

$c = mysql_query ("TRUNCATE edycja");

}

za pomoc i wszelkie rady z góry dziękuję

Może jestem ślepy ale jak rekord z bazy ma być usuwany skoro nie ma nigdzie Delete’a?

na dole masz TRUNCATE, czyli czyszczenie całej bazy

Sprawdź tak:

TRUNCATE TABLE edycja

Ten kod jest strasznie zamieszany.

document.location.href = "edytor.php";';

dlaczego używasz javascriptu do przekierowania. Co jeśli ktoś wyłączy javascript u siebie w przeglądarce? Jak chcesz zrobić przekierowanie to użyj lepiej:

header('Location: edytor.php');
$a = file_get_contents("".$dir.$_GET['strona'].".".$typ_pliku."");

gdzie masz wcześniej zdefiniowaną zmienną $dir, tak samo $typ_pliku? Może ten kod to wycinek z całości, ale dla przykładu jest to niejasne. 3.

echo'

brak parametru ‘action’. 4.

$editor_data = str_replace($tab1, $tab2, $editor_data);

$tab1, $tab2?? 5.

if ($b === true) {

$c = mysql_query ("TRUNCATE edycja");

}

zobacz co zwraca zmienna $b, np. przez var_dump($b);

no i dlaczego czyścisz całą tabele a nie usuwasz poszczególnych rekordów? Co w przypadku, gdy będzie aktualnie edytowanych kilka plików, wszystkie one będą zablokowane do edycji, wprowadzisz zmiany w jednym pliku, zapiszesz i wszysko się wykasuje, w związku z czym pozostałe pliki, które są aktualnie edytowane nie będą już zablokowane.

Poza tym ten sposób jest o tyle dziwny, że co w przypadku, gdy ktoś wejdzie na edycję pliku, do bazy zostanie dodana informacja, że plik jest aktualnie edytowany i wyjdzie ze strony? Plik będzie dalej zablokowany do edycji bo wpis z tabeli nie zostanie usunięty, mimo, że nikt go nie będzie edytował… Na Twoim miejscu wykorzystałbym ajax do wysyłania co jakiś czas zapytania z identyfikatorem pliku, który jest właśnie edytowany i potem w php zrobił obsługę, w taki sposób, że jeżeli ostatni wpis w tabeli jest starszy niż ten timeout, który założysz to plik będzie możliwy do edycji, w przeciwnym razie blokada i stosowny komunikat.