Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Kasowanie zdjęć wraz z użytkownikiem
Forum PHP.pl > Forum > Przedszkole
pomek2
Witam ,
mam taki problem mianowicie zrobiłem plik php który odpowiada za kasowanie użytkowników,

  1. <h4>Użytkownicy</h4>
  2. <?
  3.  
  4.  
  5.  
  6.  
  7. if($blokada){
  8. $ex = explode("|||", $blokada);
  9. $user = $ex[0];
  10. $stan = $ex[1];
  11.  
  12. if($stan == 1){
  13. $stan = 0;
  14. }else{
  15. $stan = 1;
  16. }
  17.  
  18.  
  19. mysql_query("UPDATE users SET status = $stan WHERE userid = $user");
  20. echo "<h2>Profil zaktualizowano</h2>";
  21. }
  22.  
  23. ?>
  24.  
  25.  
  26.  
  27.  
  28.  
  29.  
  30.  
  31. <table style="width:100%"; id="setings">
  32.  
  33. <tr>
  34. <td style="width:10%; text-align:center;"><b>ID</b></td>
  35. <td style="width:60%;"><b>Profil</b></td>
  36. <td style="width:30%;"><b>Aktywni</b></td>
  37. </tr>
  38. <?
  39.  
  40. $s1 = mysql_query("SELECT login, userid, status FROM users ORDER BY userid DESC");
  41. while($s2 = mysql_fetch_array($s1)){
  42. ?>
  43.  
  44. <?
  45.  
  46.  
  47. if(isset($_GET['delete'])){
  48. mysql_query("DELETE FROM users WHERE userid = '".$_GET['delete']."' ");
  49. }
  50.  
  51. ?>
  52.  
  53. <form method="POST" action="index.php" name="users<? echo $s2['userid']; ?>">
  54. <input type='hidden' name='p' value='users'>
  55. <tr>
  56. <td style="width:10%; text-align:center;"><? echo $s2['userid']; ?></td>
  57. <td style="width:60%;"><? echo $s2['login']; ?> (<a target="_blank" href="../profil-<? echo $s2['login']; ?>.html">zobacz</a>)</td>
  58. <td style="width:30%; text-align:center;">
  59. <p align="center"><input type="hidden" name="blokada" value="<? echo $s2['userid']; ?>|||<? echo $s2['status']; ?>"><input type="checkbox" name="a1" value="<? echo $s2['userid']; ?>|||<? echo $s2['status']; ?>" onchange='users<? echo $s2['userid']; ?>.submit()' <? if($s2['status'] == 1) echo 'checked'; ?>>
  60. <a href="?p=users&delete=<? echo $s2['userid']; ?>">usuń</a>
  61. </td>
  62.  
  63.  
  64. </tr>
  65. </form>
  66. <?
  67. }
  68. ?>
  69.  
  70. </table>
  71.  


Chciałbym żeby po wciśnięciu usuń także zostały skasowane zdjęcia tego właśnie użytkownika z tej tabeli zdjęcia w której to skład wchodzą następujące kolumny: userid, photoid, opis .
fenix.robi
Nie wiem czy o to Tobie chodziło smile.gif

  1. if(isset($_GET['delete'])){
  2. $result = mysql_query("DELETE FROM users WHERE userid = '".$_GET['delete']."' ");
  3. if($result){
  4. mysql_query("DELETE FROM zdjecia WHERE userid = '".$_GET['delete']."' ");
  5. }
  6. }
phpion
Zrób dodatkowe zapytanie w stylu:
  1. $query = 'DELETE FROM zdjecia WHERE userid = '.$_GET['delete'];

Najlepiej jednak byłoby gdybyś założył klucz obcy na kolumnie userid w tabeli ze zdjęciami z wartością ON DELETE CASCADE. Wówczas dane z tej tabeli usuną się automatycznie po usunięciu użytkownika.

Pamiętaj jednak przy tym, że (o ile przechowujesz zdjęcia na dysku) musisz dodatkowo usunąć pliki. Samo wywalenie rekordu z bazy danych nie usunie plików z dysku.
Soulast
powinno wystarczyć:

  1. if(isset($_GET['delete'])){
  2. mysql_query("DELETE FROM users WHERE userid = '".$_GET['delete']."' ");
  3. mysql_query("DELETE FROM zdjecia WHERE userid = '".$_GET['delete']."' ");
  4. }

pomek2
bardzo dziękuję za rady

z tabeli skasowało , teraz tak się zastanawiam jak skasować z serwera to zdjęcie z katalogu zdjęcia czy jest taka możliwość?
wujek2009
pomek2 - http://php.net/manual/en/function.unlink.php
pomek2
zrobiłem coś takiego jest dobrze?

  1. <?
  2.  
  3. if($usun != null){
  4. $userid=strip_tags($userid);}
  5. if(isset($_GET['delete'])){
  6. mysql_query("DELETE FROM users WHERE userid = '".$_GET['delete']."' ");
  7. mysql_query("DELETE FROM zdjecia WHERE userid = '".$_GET['delete']."' ");
  8. @unlink("zdjecia/$usun.jpg");
  9. }
  10.  
  11. ?>
phpion
Jeśli działa to znaczy, że jest dobrze (pomijając klasyczną podatność na SQL Injection oraz tą @ przed funkcją...). Jednak pewnie użytkownik ma N zdjęć i chcesz je wywalić wszystkie, więc musisz:

1. Usunąć użytkownika z bazy danych.
2. Pobrać wszystkie zdjęcia użytkownika (zwykły SELECT) i w pętli usuwać pojedynczo zdjęcia z dysku (unlink).
3. Usunąć zdjęcia z bazy danych.

Jeśli założyłeś relację użytkownik <-> zdjęcia z ON DELETE CASCADE to punkt 1. musisz wykonać na końcu. W przeciwnym razie od razu usuną Ci się rekordy zdjęć z bazy danych i SELECT w punkcie nr 2 nie zwróci żadnych danych (nie usuniesz zdjęć z dysku).
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.