Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP]rozbudowany formularz dodawania danych
michal_86
post 4.02.2010, 08:28:02
Post #1





Grupa: Zarejestrowani
Postów: 36
Pomógł: 0
Dołączył: 1.02.2010

Ostrzeżenie: (0%)
-----


Witam!

Chciałbym stworzyć formularz razem z skryptem dodawania, który będzie równocześnie dodawał tekst i zdjęcie

formularz wygląda tak:

  1. <form action="ddbwpow52.php" method="POST">
  2.  
  3. ID - tylko cyfry<br/>
  4. <input type="text" name="id"/ size=\"5\"><br/>
  5. Lokalizacja<br/>
  6. <input type="text" name="Lokalizacja"/ size=\"50\"><br/>
  7. Tytul<br/>
  8. <input type="text" name="tytul"/ size=\"150\"><br/>
  9. Opis<br/>
  10. <textarea name="opis" cols="70" rows="25"></textarea><br/>
  11.  
  12. Powierzchnia<br/>
  13. <input type="text" name="powierzchnia"/ size=\"150\"><br/>
  14. czynsz<br/>
  15. <input type="text" name="czynsz"/ size=\"150\"><br/>
  16. Dostepne<br/>
  17. <input type="text" name="dostepne"/ size=\"100\"><br/>
  18. Zdjecie<br/>
  19. <input type="hidden" name="MAX_FILE_SIZE" value="30000" />
  20. <form enctype="multipart/form-data" action="ddbwpow52.php" method="POST">
  21. Zdjęcie : <input name="zdjecie" type="file" /><br/>
  22. <input type="submit" value="dodaj"/>
  23. <input type="reset" value="Kasuj" />
  24. </CENTER>
  25. </form>


problem polega na tym, iż jak pewnie zauważyliście są dwie opcje wysyłania: <form action="ddbwpow52.php" method="POST"> oraz <form enctype="multipart/form-data" action="ddbwpow52.php" method="POST">
Jak się również zapewne domyślacie skrypt wykonuje tylko jedną metodę wysyłki - tą która znajduje się wyżej. Co ciekawe jeśli drugą opcje umieszczę ponad zwykłe wysyłanie - skrypt nie robi niczego, gdy jest tak jak teraz dodaje tylko tekst

Oto skrypt dodawania:
  1. $id = $_POST['id'];
  2. $tytul = $_POST['tytul'];
  3. $opis = $_POST['opis'];
  4. $powierzchnia = $_POST['powierzchnia'];
  5. $czynsz = $_POST['czynsz'];
  6. $dostepne = $_POST['dostepne'];
  7. $Lokalizacja = $_POST['Lokalizacja'];
  8. $zdjecie= $_POST['zdjecie'];
  9.  
  10. if( $id and $tytul and $opis and $powierzchnia and $czynsz and $dostepne and $Lokalizacja and $zdjecie ) {
  11.  
  12.  
  13. $connection = @mysql_connect('localhost', 'root')
  14. or die('Brak połączenia z serwerem MySQL');
  15. $db = @mysql_select_db('biurapow5', $connection)
  16. or die('Nie mogę połączyć się z bazą danych');
  17.  
  18. // dodajemy rekord do bazy
  19. $ins = @mysql_query("INSERT INTO pow5 SET id='$id', tytul='$tytul', opis='$opis', powierzchnia='$powierzchnia', czynsz='$czynsz', dostepne='$dostepne', Lokalizacja='$Lokalizacja', zdjecie='$zdjecie' ");
  20.  
  21. if($ins) echo "Rekord został dodany poprawnie";
  22. else echo "Błąd nie udało się dodać nowego rekordu";
  23. if( is_uploaded_file( $_FILES['zdjecie']['tmp_name'] ) )
  24. {
  25. $strUploadDir = 'images/' . $_FILES['zdjecie']['name'];
  26. if( move_uploaded_file( $_FILES['zdjecie']['tmp_name'], $strUploadDir ) )
  27. {
  28. echo 'Plik został pomyślnie uploadowany! <br />';
  29. }
  30. else
  31. {
  32. echo 'Upload pliku nie powiódł się!';
  33. }
  34. echo 'Dodatkowe informacje o uploadowanym pliku: <pre>' . print_r( $_FILES, true ) . '</pre>';
  35. }
  36. else
  37. {
  38. echo 'Wystąpił błąd podczas wysyłania pliku na serwer!';
  39. }
  40.  
  41. mysql_close($connection);
  42. }
  43.  
  44. ?>


I moje pytanie - czy da się zmienić coś w samym formularzu aby oba typy wysłania szły za jednym kliknięciem, czy musze kombinować ze skryptem, a jeśli tak to w jakim kierunku?

Pozdr
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 15)
Lewiatan
post 4.02.2010, 08:39:59
Post #2





Grupa: Zarejestrowani
Postów: 28
Pomógł: 6
Dołączył: 1.02.2010
Skąd: Łódź

Ostrzeżenie: (0%)
-----


A próbowałeś wrzucić to w jeden formularz? Tzn. z enctype="multipart/form-data" wysyłać też tekst? Nigdy czegoś takiego nie próbowałem, ale może by zadziałało.

Z drugiej strony możesz pokombinować z AJAXem. Zrobić jeden submit i do niego podpisać zdarzenie które wyśle dane tekstowe z formularza, a potem normalnie wykona ACTION odnośnie obrazka.
Go to the top of the page
+Quote Post
phpion
post 4.02.2010, 08:41:14
Post #3





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Do pierwszego <form> dodaj enctype="multipart/form-data", a drugi <form> wywal.
Go to the top of the page
+Quote Post
nospor
post 4.02.2010, 08:41:44
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cos przekombinowales. Jak chcesz dodatkowo formem wyslac plik to dodajesz do forma enctype="multipart/form-data" i juz. zadnych dodatkowych formularzy nie musisz robic.
Inna sprawa ze ty nie umiesz robic zwyklego uploadu - widac to po kodzie. Najpierw zapoznaj sie z tym
http://www.php.net/manual/pl/features.file...post-method.php


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
michal_86
post 4.02.2010, 09:11:05
Post #5





Grupa: Zarejestrowani
Postów: 36
Pomógł: 0
Dołączył: 1.02.2010

Ostrzeżenie: (0%)
-----


na tym linku co dałeś bazuje cały skrypt

poza tym...jak daje to w dwóch oddzielnych formularzach to wszystko działa...gdy jednak łącze coś się gryzie

zrobiłem tak jak powiedziliści czyli "
  1. <form action="ddbwpow52.php" enctype="multipart/form-data" method="POST">
i nie dodaje niczego...pusta strona

jakiś inne pomysły? smile.gif
Go to the top of the page
+Quote Post
nospor
post 4.02.2010, 09:19:40
Post #6





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




no bo masz
$zdjecie= $_POST['zdjecie'];
a potem sprawdzasz w ifie czy jest $zdjecie czy nie. No a jak przesylasz plik formem to $_POST nie zawiera tego pliku. Dlatego wlasnie stwierdzilem , ze nie masz zielonego pojecia o uploadzie i podałem ci link do przeczytania smile.gif


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
michal_86
post 4.02.2010, 10:29:59
Post #7





Grupa: Zarejestrowani
Postów: 36
Pomógł: 0
Dołączył: 1.02.2010

Ostrzeżenie: (0%)
-----


$zdjecie jest po to by została do bazy dopisana jego nazwa - tu nic nie jest przypadkowe akurat. Chodzi mi o to że plik jest wysyłany na server do katalogu a nie do bazy, a do bazy idzie jego nazwa dzięki której będę mógł potem wyświtlić to zdjęcie na stronie smile.gif Założenie jest takie - wszystko co dodaje w tym formularzu potem wyświetlić się ma na stronie

Może nie da się tego wszystkiego na jednym formularzu "załatwić" ?

Go to the top of the page
+Quote Post
nospor
post 4.02.2010, 10:34:43
Post #8





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
$zdjecie jest po to by została do bazy dopisana jego nazwa - tu nic nie jest przypadkowe akurat.
Kiedy ci tlumacze, ze przy uploadzie w $_POST nie ma informacji o pliku tylko w $_FILES.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
michal_86
post 4.02.2010, 10:45:49
Post #9





Grupa: Zarejestrowani
Postów: 36
Pomógł: 0
Dołączył: 1.02.2010

Ostrzeżenie: (0%)
-----


no wiem właśnie się zorientowałem ..ale jak z $files wyciągnąć jedynie jego nazwę?
Go to the top of the page
+Quote Post
nospor
post 4.02.2010, 10:48:47
Post #10





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




o zgrozo.... przeciez juz to robisz chociazby tutaj:
$strUploadDir = 'images/' . $_FILES['zdjecie']['name'];

ty weź sie naucz uploadowac jak ci radzilem bo ty jedynie skopiowales kod bez jakiegokolwiek namyslu


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
michal_86
post 4.02.2010, 12:26:27
Post #11





Grupa: Zarejestrowani
Postów: 36
Pomógł: 0
Dołączył: 1.02.2010

Ostrzeżenie: (0%)
-----


sory też teraz zorientowałęm..za szybko zadaje pytania..przepraszam!!!

dzięki!

a jak przerobić $_FILES['zdjecie']['name']
na $name i $zdjecie

powiem wprost nie wiem jak wrzucić to name do bazy
ten kod jest zły
  1. sql_query("INSERT INTO pow5 SET id='$id', tytul='$tytul', opis='$opis', powierzchnia='$powierzchnia', czynsz='$czynsz', dostepne='$dostepne', Lokalizacja='$Lokalizacja', zdjecie=" . $_FILES['name'] );


próbowałem różnych nawiasów i albo był błąd albo nic nie dodawał...nie wiem jak to rozszyfrować, nie rozumiem tego systemu znacznikowania przy opracjach na bazie w tym przypadku jak wstawić $_FILES['zdjecie'] do komendy insert
manual php mi nie pomógł - musze mieć jakiś przykład, wzór...

i nie chodzi że się lenie ale w tutorialach które przejrzałem nie spotkałem opisu wyjaśnienia takiego przykładu
Go to the top of the page
+Quote Post
nospor
post 4.02.2010, 12:35:12
Post #12





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




  1. $name = $_FILES['zdjecie']['name'];

I teraz w zmiennej $name masz nazwe pliku - jest to zwykly tekst w zmiennej. A zwykly tekst w zmiennej przeciez juz wkladasz do zapytania...


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
michal_86
post 4.02.2010, 13:46:49
Post #13





Grupa: Zarejestrowani
Postów: 36
Pomógł: 0
Dołączył: 1.02.2010

Ostrzeżenie: (0%)
-----


  1. $name = $_FILES['name'];
  2.  
  3. if( $id and $tytul and $opis and $powierzchnia and $czynsz and $dostepne and $Lokalizacja ) {
  4.  
  5.  
  6. $connection = @mysql_connect('localhost', 'root')
  7. or die('Brak połączenia z serwerem MySQL');
  8. $db = @mysql_select_db('biurapow5', $connection)
  9. or die('Nie mogę połączyć się z bazą danych');
  10.  
  11. // dodajemy rekord do ba
  12. $ins = @mysql_query("INSERT INTO pow5 SET id='$id', tytul='$tytul', opis='$opis', powierzchnia='$powierzchnia', czynsz='$czynsz', dostepne='$dostepne', Lokalizacja='$Lokalizacja', zdjecie='$name' ");


zrobiłem tak - niewiem czy cie dobrze zrozumiałem, w kazdym razie efekt jest taki że pole zdjecie w bazie jest puste ;/ coś źle zinterpretowałem?
Go to the top of the page
+Quote Post
nospor
post 4.02.2010, 13:48:07
Post #14





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




zaraz zamkne temat....

ZNAJDZ 10 ROZNIC:

$name = $_FILES['zdjecie']['name']; - kod co ci podałem
$name = $_FILES['name']; - kod jaki ty napisałeś


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
michal_86
post 4.02.2010, 14:00:03
Post #15





Grupa: Zarejestrowani
Postów: 36
Pomógł: 0
Dołączył: 1.02.2010

Ostrzeżenie: (0%)
-----


przepraszam..rozumiałem to jako dwie różne zmienne, po prostu zajmuje sie tym dopiero od 4 dni dlatego czasem robie głupie manewry..tutaj wydawało mi się że samo name daje nazwę..

w każdym razie działa - DZIĘKUJĘ ! ! !
Go to the top of the page
+Quote Post
nospor
post 4.02.2010, 14:02:34
Post #16





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
.tutaj wydawało mi się że samo name daje nazwę..
To skoro zajmujesz sie tym 4 dni to zrob wkoncu to o co cie prosilem. Nie polegaj na swoim WYDAWANIU SIE bo sami widzisz ze cie zawodzi. Dalem ci na początku linka to go przejedź od deski do deski 100 razy az wkoncu załapiesz co jest co w tym krociutkim kodzie.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 11:58