Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [SQL][PHP]Automatyczne wpisy w bazie po przeladowaniu strony
Forum PHP.pl > Forum > Przedszkole
chrzanu
Witam
Posiadam taki skrypt na dodwania zdjecia na serwer i przeslanie siezki do bazy mysql oraz wyswietlanie zdjec. Jak zrobic aby po przeladowaniu strony z fomularzem do bazy nie dodawal sie pusty wpis z folderem w ktorym przechowywane sa wszystkie wyslane pliki?

  1.  
  2. <form method="post" action="paneladmina.php?ident=pic" enctype="multipart/form-data">
  3. <input type="hidden" name="MAX_FILE_SIZE" value="900000">
  4.  
  5. Wybierz plik który chcesz umieścić na serwerze:<br>
  6.  
  7. <input type="file" name="pliczek" size="40"><br>
  8. <input type="submit" value="Wgraj plik">
  9.  
  10. $plik_tmp = $_FILES['pliczek']['tmp_name'];
  11. $plik_nazwa = $_FILES['pliczek']['name'];
  12. $plik_rozmiar = $_FILES['pliczek']['size'];
  13.  
  14. $plik_nazwa = strtolower($plik_nazwa);
  15. $plik_nazwa = str_replace("ż","z",$plik_nazwa);
  16. $plik_nazwa = str_replace("?","a",$plik_nazwa);
  17. $plik_nazwa = str_replace(" ","",$plik_nazwa);
  18. $plik_nazwa = str_replace("_","",$plik_nazwa);
  19.  
  20. if(is_uploaded_file($plik_tmp)) {
  21. move_uploaded_file($plik_tmp, "upload/".$_FILES['pliczek']['name']);
  22. echo "Plik: <strong>$plik_nazwa</strong> o rozmiarze
  23. <strong>$plik_rozmiar bajtów</strong> został przesłany na serwer! Link do pliku: <code>http://twoja.domena.pl/upload/$plik_nazwa</code> ";
  24. }
  25.  
  26. $connection = mysql_connect("localhost","root","krasnal");
  27. $db = mysql_select_db("test", $connection);
  28. $name = 'upload/'.$_FILES['pliczek']['name'];
  29. $sql="INSERT INTO obrazki (sciezka)
  30. VALUES
  31. ('$name')";
  32.  
  33. if (!mysql_query($sql))
  34. {
  35. die('Błąd: ' . mysql_error());
  36. }
  37. echo "Plik został zapisany!<br>";
  38.  
  39. $connection = mysql_connect("localhost","root","krasnal");
  40. $db = mysql_select_db("test", $connection);
  41. $sql = mysql_query("SELECT * FROM obrazki");
  42. $i = 0;
  43. while ($row = mysql_fetch_array($sql)) { $i++;
  44.  
  45. $sciezka = $row['sciezka'];
  46.  
  47. echo '<div>';
  48. echo "$i. ";
  49. echo "<br />";
  50. echo "<a href='$sciezka'><img height='90' width='90' src='$sciezka' /></a>";
  51. echo '</div>';
  52. }
  53.  
drozdii07
Sprawdzaj czy został wysłany formularz. Na przykład funkcją isset();
chrzanu
wszystko fajnie ale nie wiem jak to zrobic biggrin.gif
CuteOne
Żadne isset().. naucz się oddzielać kod prezentacji od kodu wykonywalnego. Stwórz dwa pliki np. viewForm.php i saveForm.php

- viewForm.php ma zawierać tylko formularz z action skierowanym na saveForm.php
- saveForm.php po pomyślnym dodaniu przekierowuje na viewForm (za pomocą header('Location:'))

w ten sposób unikniesz problemów z if(isset($_POST)) na pół pliku
drozdii07
  1. if(isset($_POST['submit'])){
  2. // wykonaj kod
  3. }


Edit:
Albo tak jak opisał to CuteOne wink.gif
GoOx
Tak tylko żeby zabezpieczyć sie przed natrętami w tym drugim pliku i tak musi być isset() by sprawdzało czy przycisk został naciśniety, bo jeśli wejdzie taki typowy natręt na stronę i pozna dostęp do pliku save_forum do przykładowo bazy i tak się dostaną jakieś dane po wczytaniu strony.
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.