• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Wrzucenie plików i tekstu do bazy MYSQL jedną funkcją

Aruba Cloud - Virtual Private Server VPS
0 głosów
582 wizyt
pytanie zadane 13 lutego 2023 w PHP przez zbiku25 Gaduła (3,000 p.)

W ramach jednego formularza chcę przesłać do bazy 3 pola tekstowe, jedno zdjęcie i 1 plik. Zrobiłem tak jak poniżej - używam do tego 2 odrębnych metod na klasie obiekcie sheet.

Zastanawiam się czy jest to optymalne rozwiązanie... być może dobre praktyki są inne (można wykorzystać jedną metodę?) - prośba o sugestię od bardziej doświadczonych ode mnie:)

Oczywiście odrębnie zaprogramuje sobie przeniesienie pliku z folderu tymczasowego do docelowego (to wiem jak zrobić)

Mój kod

index.php

<?php

include("classes/classes.php");

if( $_SERVER['REQUEST_METHOD']=="POST")
{
	$sheet = new Sheets();
	$result1 = $sheet->insert_data($_POST);
	$result1 = $sheet->insert_files($_FILES);
	
}


?>

.... i dalej formularz

<form method="post" enctype="multipart/form-data">
Author<br>
<input type="text" name="author"><br>
Title<br>
<input type="text" name="title"><br>
Tonation<br>
<input type="text" name="tonation"><br>
Image<br>
<input type="file" name="image"><br>
File<br>
<input type="file" name="file"><br><br>

<input type="submit">
</form>

plik z klasą:

class Sheets
{
	public function insert_data($data)
	{
		$author = $data['author'];
		$title = $data['title'];
		$tonation = $data['tonation'];

		$query = "INSERT INTO sheets(author, title, tonation) VALUES('$author', '$title', '$tonation')";
		
		$DB = new Database;
		$DB->save($query);
		
	}
	
		public function insert_files($data)
	{

		$images = $data['image']['tmp_name'];
		$file = $data['file']['tmp_name'];
		
		$query = "INSERT INTO sheets (images, file) VALUES ('$images', '$file')";
		
		$DB = new Database;
		$DB->save($query);
		
	}
}

 

3 odpowiedzi

0 głosów
odpowiedź 13 lutego 2023 przez zbiku25 Gaduła (3,000 p.)

właśnie się zorientowałem, że to musi być jedna funkcja, bo w przypadku dwóch są dodawane dwa rekordy w bazie....indecision

Pytanie zatem jak połączyć dane z $_FILES i $_POST w jednym zapytaniu....

0 głosów
odpowiedź 13 lutego 2023 przez charlieg Początkujący (280 p.)
hejka ja bym to zalatwil ze przypisal bym sobie atrybut name do inputa i nie bawil bym sie w tworzenie obiektu i funkcji tylko za pomoca action przeniosl wykonanie skryptu do osonego pliku dla czytelnosci teraz uzyl bym metody isset przyjmujaca wartosc z atrybutu name ---> submita ew nad ta instrukcja warunkowa funkcje i ich wykonanie kiedy spelniony jest warunek.
komentarz 13 lutego 2023 przez zbiku25 Gaduła (3,000 p.)
hej, dzięki za propozycję. Rzeczywiście można to zrobić w osobnym pliku, jednak robię to zadanie bardziej dla nauki programowania obiektowego niż znalezienia najprostszego rozwiązania stąd zależy mi na nauczeniu się sposobu jak to zrobić obiektowo :)
0 głosów
odpowiedź 13 lutego 2023 przez zbiku25 Gaduła (3,000 p.)

OK znalazłem działające rozwiązanie - wystarczy w metodzie dwie zmienne

public function insert_data($data, $files)

i później przy wywołaniu podać:

objekt->insert_data($_POST, $_FILES)

Jeżeli ktoś widzi lepsze rozwiązanie do będę wdzięczny :)

Podobne pytania

+1 głos
1 odpowiedź 1,655 wizyt
pytanie zadane 6 września 2015 w PHP przez tytanik2011 Użytkownik (930 p.)
0 głosów
1 odpowiedź 577 wizyt
pytanie zadane 20 czerwca 2020 w PHP przez Bakkit Dyskutant (7,600 p.)
0 głosów
1 odpowiedź 214 wizyt
pytanie zadane 19 stycznia 2019 w PHP przez Patryk Kania Początkujący (310 p.)

93,329 zapytań

142,323 odpowiedzi

322,400 komentarzy

62,664 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Wprowadzenie do ITsec, tom 1 Wprowadzenie do ITsec, tom 2

Można już zamawiać dwa tomy książek o ITsec pt. "Wprowadzenie do bezpieczeństwa IT" - mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy aż 15% zniżki! Dziękujemy ekipie Sekuraka za fajny rabat dla naszej Społeczności!

...