Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php][mysql] Kasowanie rekordu i pliku
Forum PHP.pl > Forum > Przedszkole
redelek
Witam,

  1. <?php
  2. include 'config.php';
  3. $link = mysql_connect('localhost', 'root', 'tajneaslo');
  4. mysql_select_db('faq', $link);
  5. $result = mysql_query('DELETE FROM `f_dane` WHERE id='.$_GET["co"].' ',$link);
  6. echo '<center><B><font color=red size=3>Rekord o ID <font color=blue>'.$_GET["co"].'</font> został pomyślnie usunięty<br><br></B></CENTER>'; 
  7. print '<center><input name="" type="button" value="Zamknij" onclick="window.close()" /></CENTER>';
  8.  
  9. ?>


Wszystko pięknie działa i rekord jest usuwany z bazy . Niestety do bazy mam wstawiany link do pliku. W bazie jest pole zalacznik w którym rekord zapisuje się tak pliki/obrazek1.jpg. Po wykonaniu kodu takiego jak powyżej rekord z bazy znika, ale plik pozostaje.
Jak można usunąć ten plik wraz z rekordem z bazy?. Żeby było prościej to nie wszystkie pola załącznik zawierają pliki czyli rekord do bazy można dodać bez załącznika.

Będę wdzięczny za pomoc
danielk
Funkcja unlink. Z poziomu zapytania SQL raczej sie nie da usunąć pliku
redelek
Cytat(danielk @ 6.09.2007, 09:06:49 ) *
Funkcja unlink. Z poziomu zapytania SQL raczej sie nie da usunąć pliku


Czyli najpierw muszę zadać pytanie SELECT by pobrać nazwę pliku a potem
$myFile = "testFile.txt";
unlink($myFile);
i dopiero kasowanie za pomocą DELETE .?
Cezar708
ja proponuję to w tranzakcji zrobić:

  1. <?php
  2. $ok = true;
  3. $ok &= mysql_query("BEGIN") ? true : false;
  4. $ok &= unlink($linkDoPliku);
  5. $ok &= mysql_query("DELETE (...)");
  6.  
  7. if ( $ok ){
  8. mysql_query("COMMIT");
  9. } else {
  10. mysql_query("ROLLBACK");
  11. }
  12. ?>


na przykład nie usunie rekordu z bazy jeśli nie udało się usunięcie pliku, myślę, że sposób bezpieczniejszy.
redelek
Cytat(Cezar708 @ 6.09.2007, 09:46:26 ) *
ja proponuję to w tranzakcji zrobić:

  1. <?php
  2. $ok = true;
  3. $ok &= mysql_query("BEGIN") ? true : false;
  4. $ok &= unlink($linkDoPliku);
  5. $ok &= mysql_query("DELETE (...)");
  6.  
  7. if ( $ok ){
  8. mysql_query("COMMIT");
  9. } else {
  10. mysql_query("ROLLBACK");
  11. }
  12. ?>


na przykład nie usunie rekordu z bazy jeśli nie udało się usunięcie pliku, myślę, że sposób bezpieczniejszy.


Uj może i bezpieczne , ale ja raczkuje a to co napisałeś to nawet nie wiem czym się je. Ale bardzo dziękuję na przyszłość zapiszę sobie.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.