Za darmo na e-mailPraktyczny kurs PHP (aż 200 stron!)

Krok po kroku, opanuj podstawy PHP za darmo - praktyczny kurs w formie e-booka prosto na Twój e-mail

Upload file

3.17K viewsfile mysql php Upload
0

Mam problem z wrzucaniem plików na serwer.

Poniższy kod działa prawidłowo jako osobny plik ale jak go wrzucę do innego gdzie jest już inny formularz wrzucający dane do bazy to upload plików nie działa. Dziwne jest to ze kiedyś działał ale aplikacja była mniej rozbudowana o kod tak PHP jak i js. Oczywiście isset wskazuje na inny input niż główny do edycji rekordu w bazie. Nie wiem jak do tego podejść, zacząłem już czytać o podwójnym formularzu na stronie ale nie wiem czy to dobry kierunek. Czytałem też to https://www.w3schools.com/TAgs/att_button_formenctype.asp ale nie do końca rozumiem działanie. Jakieś porady jak to ogarnąć?

<?php
require('db.php');
?>
 <!DOCTYPE HTML>
<html lang="pl">
<head>
 <meta charset="utf-8" />
 <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
 <title>Upload file</title>
</head>
 <body>
  <form action="" method="post" enctype="multipart/form-data">
 <fieldset>
    <legend>Upload file</legend>
      <label for="zl">Zlecenie</label><input type="text" name="zl" id="zl"><br>
      <input type='file' id='file' name='file'><br>
      <input name='submit' type='submit' value='Dodaj'></br>
 </fieldset>
</form>
<?php
if (isset($_POST['submit']))
  {
  #retrieve file name from file
  $fileName = $_FILES['file']['name'];
  #max mb
  $fileSize = $_FILES['file']['size'];
  #temporary file name to store file
  $tname = $_FILES['file']["tmp_name"];
  #get file ext from file
  $fileExt = explode('.', $fileName);
  #change to lower case
  $fileActualExt = strtolower(end($fileExt));
  #allowed ext
  $allowed = array('jpg','jpeg','png','pdf');
 if (in_array($fileActualExt,$allowed)){
  if($fileSize <= 5000000){
  #file name with a random number so that similar don't get replaced
  $pname = rand(1000,10000)."-".$fileActualExt;
  #upload directory path
  $uploads_dir = 'uploads';
  #TO move the uploaded file to specific location
  move_uploaded_file($tname, $uploads_dir.'/'.$pname);
    echo "OK";
  }else{
    echo "File too big";
  }
  }elseif(!in_array($fileActualExt,$allowed)){
    echo "Bad format";
  }
}                       
  if(isset($_POST['submit'])){
  $zl = $_REQUEST['zl'];
  $upload = "UPDATE guitars SET img2 ='".$pname."' WHERE ID=$zl";
  mysqli_query($con,$upload);
}
?>
 </body>
</html>

Jacek Kołcon Answered question 4 lutego 2021
Add a Comment
0

Hej Mariusz,

Musiałbyś pokazać, w jaki sposób łączysz te dwa formularze w jednym pliku. Bez tego to trochę jak wróżenie z fusów.

Generalnie tendencja jest taka, że kod HTML wyświetlający dany formularz jest w innym pliku, niż kod PHP obsługujący dane z formularza. Wtedy mając jeden plik z widokiem, na którym masz wiele różnych formularzy – każdy z formularzy miałby parametr action odpowiadający plikowi przetwarzającemu jego dane.

Wtedy nie masz też problemu z wieloma zmiennymi o tych samych nazwach, które mogłyby przyjść z różnych formularzy.

Marcin Wesel Answered question 22 stycznia 2021
Add a Comment
You are viewing 1 out of 2 answers, click here to view all answers.
Write your answer.
Ominiesz taką okazję?Praktyczny Kurs PHP (aż 200 stron!) za darmo

Gorąco polecam, naprawdę warto skorzystać! To nic nie kosztuje. Krok po kroku, opanuj podstawy PHP za darmo - praktyczny kurs w formie e-booka prosto na Twój e-mail.