Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Wysyłanie pliku na serwer i zapis linku w bazie
Forum PHP.pl > Forum > Przedszkole
olszam
Jak w temacie ktoś wie jak zrobić taki prosty formularz wysyłania plików na serwer bo patrze już na rożnych poradnikach i żaden mi nie chce działać.
nospor
Zacznij od zapoznania się z tym, jak się wysyła plik na serwer
http://pl.php.net/manual/pl/features.file-...post-method.php
Gdy to opanujesz, przejdziemy dalej
olszam
no robię jak w tym przykładzie ale mam taki komunikat Possible file upload attack!(mozliwy atak podczas uploadu chyba tak to się tłumaczy) ale nic jeszcze nie wysyłałem o co w tym biega?
nospor
Ten kod:
  1. $uploaddir = '/var/www/uploads/';
  2. $uploadfile = $uploaddir . basename($_FILES['userfile']['name']);
  3.  
  4. echo '<pre>';
  5. if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) {
  6. echo "File is valid, and was successfully uploaded.\n";
  7. } else {
  8. echo "Possible file upload attack!\n";
  9. }
  10.  
  11. echo 'Here is some more debugging info:';
  12. print_r($_FILES);
  13.  
  14. print "</pre>";

Należy wykonać dopiero po wysłaniu formularz. Ty go wykonujesz przed wysłaniem formularza.
Na stronie manuala przyjęto, że kod formularza i kod odbioru formularza są w różnych plikach. Ty dałeś wszystko w jednym - oczywiście można tak zrobić, ale należy pamiętać by ten kod wykonać dopiero po wysłaniu forma. Należy w tym celu całość objąć blokiem
if (!empty($_POST)){
//tu kod
}
olszam
thx działa tylko jednego nie rozumiem przy ścieżce gdzie chce wysłać plik czemu mi tam wywala błąd jak daje 'D:\wamp\www\stronka\test\' bo chce by ta sama nazwa pliku została.

już nie trzeba slash nie w tą strone był biggrin.gif

ok mam już skrypt na dodawanie zdjęć i działa ale nie wiem czemu nie chce do tabeli zdjęcia mi dodać rekordu a moja tabela wygląda tak:
ZDJECIA
idzdjecia
link
opis
idzawodnik (FK)
idtrener (FK)
iddanezawody (FK)

a kod wygląda następująco
  1. <?php
  2. require 'polacz.php';
  3. mysql_query("SET NAMES utf8");
  4. mysql_query("SET CHARACTER SET utf8");
  5. mysql_query("SET collation_connection = utf8_polish_ci");
  6. ?>
  7. <form enctype="multipart/form-data" action="przyklad1.php" method="POST">
  8. <input type="hidden" name="MAX_FILE_SIZE" value="3000000" />
  9. obrazek: <input name="link" type="file" />
  10. <br/>
  11. zawodnik: <select name="idzawodnik">
  12. <?php
  13. $sql2 = "SELECT * FROM zawodnik";
  14. $rezultat1 = mysql_query($sql2);
  15. while ($Wiersz1 = mysql_fetch_array($rezultat1))
  16. {
  17. echo '<option value="'.$Wiersz1['idzawodnik'].'">'.$Wiersz1['imiezawodnik'].' '.$Wiersz1['nazwiskozawodnik'].'</option>';
  18. }
  19. ?>
  20. </select><br />
  21. trener: <select name="idtrener">
  22.  
  23. <?php
  24. $sql3 = "Select * From trener";
  25. $rezultat2 = mysql_query($sql3);
  26. while ($Wiersz2 = mysql_fetch_array($rezultat2))
  27. {
  28. echo '<option value="'.$Wiersz2['idtrener'].'">'.$Wiersz2['imietrener'].' '.$Wiersz2['nazwiskotrener'].'</option>';
  29. }
  30. ?>
  31. </select><br />
  32. dane zawody:
  33. <select name="iddanezawody">
  34. <?php
  35. $sql4 = "SELECT * FROM danezawody";
  36. $rezultat3 = mysql_query($sql4);
  37. while ($Wiersz3 = mysql_fetch_array($rezultat3))
  38. {
  39. echo '<option value="'.$Wiersz3['iddanezawody'].'">'.$Wiersz3['iddanezawody'].'</option>';
  40. }
  41. ?>
  42. </select><br />
  43. <textarea name="opis">opis</textarea><br />
  44. <input type="submit" value="dodaj zdjecie" />
  45. </form>
  46. <?php
  47. if (!empty($_POST)){
  48. $uploaddir = 'test/';
  49. $uploadfile = $uploaddir . basename($_FILES['link']['name']);
  50. echo '<pre>';
  51.  
  52. if (move_uploaded_file($_FILES['link']['tmp_name'], $uploadfile))
  53. {
  54.  
  55.  
  56. if(isset($_POST['dodaj'])){
  57. $link = $_POST['link'];
  58. $opis = $_POST['opis'];
  59. $zawodnik = $_POST['idzawodnik'];
  60. $trener = $_POST['idtrener'];
  61. $danezawody = $_POST['iddanezawody'];
  62. if($link && $opis && $zawodnik && $trener && $danezawody)
  63. {
  64. $sql1="INSERT INTO zdjecia SET link='$link', opis='$opis', idzawodnik='$zawodnik', idtrener='$trener', iddanezawody='$danezawody'";
  65.  
  66. $ins = mysql_query($sql1);
  67. if($ins)
  68. {
  69. echo "Rekord został dodany poprawnie";
  70. }
  71. else {
  72. echo "Błąd nie udało się dodać nowego rekordu: ";
  73. }
  74.  
  75. }
  76. }
  77.  
  78. echo "plik został prawidłowo wysłany.\n";
  79. }
  80. else
  81. {
  82. echo "błąd w wysłaniu pliku!\n";
  83. }
  84.  
  85. echo 'info: ';
  86. print_r($_FILES);
  87.  
  88. print "</pre>";
  89. }
  90. mysql_close($polacz);
  91. ?>
Peter12
Pomyliłeś INSERT z UPDATE.
Błąd jest tutaj:
Cytat
$sql1="INSERT INTO zdjecia SET link='$link', opis='$opis', idzawodnik='$zawodnik', idtrener='$trener', iddanezawody='$danezawody'";

Zmień to na:
Cytat
$sql1="INSERT INTO zdjecia(idzdjecia, link, opis, idzawodnik, idtrener, iddanezawody) VALUES ('', '$link', '$opis', '$zawodnik', '$trener', '$danezawody')";
olszam
nie działa nadal ten sam efekt że wysłać mogę na serwer ale w bazie tego nie ma
Peter12
Cytat
if(isset($_POST['dodaj'])){

Z tego co widzę to w formularzu nie ma inputa typu submit o nazwie "dodaj".
olszam
dodałem to i teraz pisze: "Notice: Undefined index: link in D:\wamp\www\stronka\przyklad1.php on line 57" $link=$_POST['link'];
Necsord
Odwołujesz się do elementu tablicy, który nie istnieje. Musisz zawczasu sprawdzać czy istnieje a dopiero potem się do niego odwoływać. Do poczytania: isset.


...zresztą http://forum.php.pl/index.php?showtopic=188326&hl=
olszam
dobra sprawdzę jeszcze ale raczej wątpię by zadziałało jak coś do kolegi się zapytam.
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.