Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Problem ze sktyptem do upload'u zdjec + przycisk usun przy zdjeciu
Forum PHP.pl > Forum > Przedszkole
unleashed
Witam mam problem ze skryptem wysyłającym zdjęcia na serwer i zapis nazwy itp w bazie mysql


  1.  
  2. <?
  3. $p_pojemnosc=$_FILES['plik']['size'];//pojemnosc pliku
  4. $p_typ=$_FILES['plik']['type']; // typ pliku
  5. $p_nazwa=$_FILES['plik']['name']; // nazwa pliku
  6. $p_smiec=$_FILES['plik']['tmp_name']; // chwilowa nazwa pliku
  7. if(($_FILES['file']['type'] != 'image/jpg')
  8. || ($_FILES['file']['type'] != 'image/jpeg')
  9. || ($_FILES['file']['type'] != 'image/png')
  10. || ($_FILES['file']['type'] != 'image/gif')) {
  11. echo '<p class="error">Wysłany plik posiada nieprawidłowe rozszerzenie!</p>';
  12. }
  13.  
  14.  
  15. $p_roz= array_pop(explode(".", $p_nazwa));
  16.  
  17. $max_size=round(($_POST['max_file_size']/1048576),3)."MB";
  18.  
  19.  
  20.  
  21. $poj_MB=round(($p_pojemnosc/1048576),2).'MB';
  22.  
  23.  
  24. $p_nazwa_zm=(md5($p_nazwa)).".".$p_roz;
  25. $folder="pliki/";
  26.  
  27.  
  28.  
  29.  
  30.  
  31. if ($p_pojemnosc <= 0)
  32. {
  33. echo ("Plik jest pusty nie mogę go przesłać <b>".$k_cze.$p_nazwa." ".$poj_MB.$f_koniec."</b><br />");
  34. echo "<a href=index.php>Wracaj ...</a>";
  35. }
  36.  
  37. if ($poj_MB > $max_size)
  38. {
  39. echo("Plik jest za duży maksymalnie można wysłać <b>".$k_cze.$max_size.$f_koniec."</b>"." .Plik wysyłany ma
  40.  
  41. rozmiar <b><i>".$k_nieb.$poj_MB.$f_koniec."</b></i><br />");
  42. echo "<a href=index.php>Wracaj ...";
  43. }
  44.  
  45. if (file_exists($folder.$p_nazwa_zm))
  46. {
  47. echo ("Plik o takiej nazwie jest już na serwerku <b><i>".$p_nazwa_zm."</b></i><br />");
  48. echo "<a href=index.php>Wracaj ...";
  49. }
  50.  
  51. else {
  52. if(!@move_uploaded_file($p_smiec, $folder.$p_nazwa_zm))
  53. exit('Nie mozna zachowac pliku. Prawdopodobnie nie ma folderu lub nie można w nim zapisać');
  54.  
  55. echo "Przeslanie udało się - <b>".$k_nieb.$p_nazwa."</b>"." ".$poj_MB."<br />";
  56. $path_file=$folder.$p_nazwa_zm;
  57. $conn = mysql_connect('localhost', 'user', 'pss') or die('Error connecting to mysql');
  58. $zapytanie=mysql_query("insert into nazwa_tabeli values(NULL,'$p_pojemnosc','$path_file','$p_typ')");
  59. echo "<a href=index.php>Wracaj ...";
  60.  
  61.  
  62. }
  63.  
  64. ?>
  65.  
  66.  

wzystko dziala ok ale jak dodaje ten kawałek kodu
  1. if(($_FILES['file']['type'] != 'image/jpg')
  2. || ($_FILES['file']['type'] != 'image/jpeg')
  3. || ($_FILES['file']['type'] != 'image/png')
  4. || ($_FILES['file']['type'] != 'image/gif')) {
  5. echo '<p class="error">Wysłany plik posiada nieprawidłowe rozszerzenie!</p>';
  6. }
  7.  

zeby akceptował tylko wysyłanie plików graficznych to wywala mi ze plik pa nieprawidowe rozszerzenie, bez tego wszystko dziala ok tylko moza przesłac kazdy plik, gdzie robie błąd? Walcze z tym od wczoraj i nic nie wychodzi.

Druga sprawa jak dodac przycisk "usun" przy kazdym zdjeciu i zeby usuwał plik z serwera i wpis z bazy myqsl?
  1. <?
  2.  
  3. $connection = mysql_connect("localhost","user","haslo");
  4. $db = mysql_select_db("db", $connection);
  5. $sql = mysql_query("SELECT * FROM nazwa_tabeli");
  6. $i = 0;
  7. while ($row = mysql_fetch_array($sql)) { $i++;
  8.  
  9. $sciezka = $row['nazwa'];
  10.  
  11.  
  12.  
  13.  
  14. echo "<a href='$sciezka'><img height='auto' width='100' src='$sciezka' /></a>";
  15.  
  16.  
  17. }
  18. ?>



Bardzo prosze o pomoc smile.gif
piotrooo89
1. zrób:

  1. print_r($_FILES['file']['type']);


i powiedz co dostajesz.

2. możesz zrobić link w stylu:

  1. $id = $row['id'];
  2. $sciezka = $row['nazwa'];
  3.  
  4. echo '<a href="?action=delete&nazwa='.$id.'"><img height="auto" width="100" src="'.$sciezka.'" /></a>";
nospor
if(($_FILES['file']['type'] != 'image/jpg')
|| ($_FILES['file']['type'] != 'image/jpeg')
|| ($_FILES['file']['type'] != 'image/png')
|| ($_FILES['file']['type'] != 'image/gif')) {
Logika się kłania.....
załóżmy że plik ma type=image/jpg. SUper, świetnie, sek w tym, że każdy inny || z twojego IF wyłapuje to, że jest różny od jego sprawdzania, wiec ciagle masz blad.
Powinno być && a nie ||
unleashed
Jak dodaje

  1. print_r($_FILES['file']['type']);

i zamieniam || na &&

cały czas jest ze zły format

a co do przycisku usun wywala mi błąd
Warning: Unexpected character in input: ''' (ASCII=39) state=1 in /virtual/e/r/erecovery2.ugu.pl/odczyt1.php on line 21
piotrooo89
ale co Ci się na ekranie pojawia po tym print_r?
unleashed
jak wstawie pod if(($_FILES['file']['type'] != 'image/jpg')... to mam bialy ekran jak w kazdym innym miejscu to ze zly format pliku :/
kaem
Czemu raz masz $_FILES['plik'] a innym razem $_FILES['file']?
A po za tym dokumentacja mówi, żeby przy sprawdzaniu typu pliku nie polegać na wartości zawartej w $_FILES['plik']['type']. Lepiej samemu napisać sobie funkcję, która sprawdzi rozszerzenie co trudne nie jest.
unleashed
Cytat(kaem @ 17.01.2012, 12:23:12 ) *
Czemu raz masz $_FILES['plik'] a innym razem $_FILES['file']?


biggrin.gif nie zauwarzyłem tego, dzieki, wszystko działa.

tylko co z tym usuwaniem plików z serewera i bazy danych, w ogóle nie wiem jak sie za to zabrac
zdemotywowany
Przy kliknięciu na button usuń przekazujesz ID zdjęcia, a następnie usuwasz na podstawie tego ID.
unleashed
zrobiłem tak

  1. <?
  2. $connection = mysql_connect("localhost","user","haslo");
  3. $db = mysql_select_db("db", $connection);
  4. $sql = mysql_query("SELECT * FROM nazwa_tabeli");
  5. $i = 0;
  6. while ($row = mysql_fetch_array($sql)) { $i++;
  7.  
  8. $sciezka = $row['nazwa'];
  9.  
  10.  
  11.  
  12.  
  13. echo "<a href='$sciezka'><img height='auto' width='100' src='$sciezka' /></a>";
  14.  
  15.  
  16.  
  17. $id = $row['id'];
  18. $sciezka = $row['nazwa'];
  19.  
  20. echo "<a href='usun.php'=.$id.'>USUN</a>";
  21. ?>


do tego utworzyłem plik usun.php i w nim:
  1. <?php
  2. $conn = mysql_connect('host', 'user', 'hass') or die('Error connecting to mysql');
  3.  
  4. $a = trim($_GET['a']);
  5. $id = trim($_GET['id']);
  6.  
  7. if($a == 'del' and !empty($id)) {
  8.  
  9. mysql_query("DELETE FROM nazwa_tabeli WHERE id='$id'")
  10. or die('Błąd zapytania: '.mysql_error());
  11.  
  12. echo 'Rekord został usunęty z bazy';
  13. }
  14. ?>


i nie wiem co dalej :/
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.