Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Multi Upload Image
webd.jk
post
Post #1





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 23.01.2011

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


Witam,

Za nim ktoś odeśle do Google lub innej wyszukiwarki niech doczyta do końca. Po googlowałem troszkę. Znalazłem kilka rozwiązań, ale żadne nie spełniło moich wymagań.

Na stronie jest formularz. który zawiera pola różnego typu w tym - "n"(nie wiadomo ile) pól typu file.

Co chciałbym osiągnąć:

Po zatwierdzeniu formularza skrypt ma za zadanie:

- poddać dane walidacii (server-side)
- przenieść pliki na serwer do katalogu którego nazwa jest określona w jednym z pól formularza (mkdir('sciezka/'.$_POST['nazwa']))
- jeśli zdjęcia zostały wgrane prawidłowo to wgrywamy dane z formularza do bazy danych
- jeśli zapytanie wykonało się prawidłowo to wyciągamy ID wstawionego rekordu
- następnie do drugiej tabeli wgrywamy ID wstawionego rekordu i nazwę zdjęcia
- w przypadku niepowodzeń któregokolwiek z zapytań usuwamy zdjęcia z dysku

Brak pomysłu :/ Jakby ktoś miał choćby jakieś sugestie jak rozwiązać ten problem będę wdzięczny.

Drobne wskazówki mile widziane.
Nie będę się upierał, ale chciałbym, aby skrypt był odporny na wyłączony JS i to rodzi kolejne problemy :/
Go to the top of the page
+Quote Post
Reptile ReX
post
Post #2





Grupa: Zarejestrowani
Postów: 119
Pomógł: 0
Dołączył: 19.01.2008

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


Nic innego niż zacząć robić, to nie jest trudne, a gdy pojawi się problem, to zapytać.
Go to the top of the page
+Quote Post
wookieb
post
Post #3





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




To, że nie znalazłeś gotowców to myślisz, że znajdziesz go tutaj? Myślisz, że jak rzucisz listę TWOICH wymagań wszyscy rzucą Ci sie odpowiedzą z seriami "od początku php" i podadzą Ci na talerzu? Zapomnij.
Odrazu określ czego chcesz. Nikt gotowca Ci nie da a jak nie masz zamiaru brać się za pisanie (co już powinieneś zacząć) daj ogłoszenie na Forum: Gielda ofert


--------------------
Go to the top of the page
+Quote Post
webd.jk
post
Post #4





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 23.01.2011

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


Nie zrozumieliśmy się. Nie oczekiwałem kodu, ale raczej jakieś wskazówki. Kod piszę cały czas i już jest nawet spory postęp. Jak skończę to podrzucę do weryfikacji.

No i wypociłem 'coś' :/ Trochę pomieszanie z poplataniem. Jest może ktoś chętny na pomoc w uporządkowaniu kodu? Nie testowałem jeszcze gruntowanie kodu, ale na pierwszy rzut oka działa poprawnie(na drugi coś nie tak z transakcją). Wszelkie sugestie mile widziane.

W headerze nic specjalnego, includuje tylko funkcje - żadnych zmyślny.

  1. <?php require_once 'header.php'; ?>
  2.  
  3. <div id="container_background">
  4. <div id="container_content"><?php
  5. $db = db_connect();
  6. $sql = 'SELECT * FROM modules WHERE modules_id = :modules_id';
  7. $mod = $db->prepare($sql);
  8. $mod->bindValue(':modules_id', $_GET['m'], PDO::PARAM_STR);
  9. $mod->execute();
  10. if(!$module = $mod->fetch(PDO::FETCH_ASSOC)){
  11. ?><p class="info err">Moduł nie istnieje!</p><?php
  12. die();
  13. }
  14.  
  15. if($_POST['buy_x']){
  16. $errors = array();
  17. $extImg = array('image/gif', 'image/jpeg', 'image/png', 'image/jpg');
  18. $insertColumn = '';
  19. $insertValue = '';
  20. $_POST = array_map('trim', $_POST);
  21.  
  22. if($module['clogo']){
  23. if($_FILES['logo']['error'] != 4){
  24. if(!in_array($_FILES['logo']['type'], $extImg)){
  25. $errors['extImg'] = 'Niepoprawny format zdjęcia!';
  26. }
  27. if($_FILES['logo']['size'] > 2097152){
  28. $errors['size'] = 'Rozmiar obrazka nie może przekraczać 2Mb!';
  29. }
  30. }else{
  31. $errors['err'] = 'Logo nie zostało wysłane';
  32. }
  33. }
  34.  
  35. fixFilesArray($_FILES['photo']);
  36. $i = 1;
  37. foreach ($_FILES['photo'] as $position => $file) {
  38. if(!in_array($file['type'], $extImg)){
  39. $errors['extImg'][$i] = 'Niepoprawny format zdjęcia!';
  40. }
  41. if($file['size'] > 2097152){
  42. $errors['size'][$i] = 'Rozmiar obrazka nie może przekraczać 2Mb!';
  43. }
  44. $i = $i+1;
  45. }
  46.  
  47. if(!preg_match("/^[a-z0-9]{3,16}$/", $_POST['site_address'])){
  48. $errors['site_address'] = 'Adres może zawierać tylko litery i cyfry';
  49. }else{
  50. $sql = 'SELECT idcompany FROM company WHERE c_site_address = :c_site_address';
  51. $name = $db->prepare($sql);
  52. $name->bindValue(':c_site_address', $_POST['site_address'], PDO::PARAM_STR);
  53. $name->execute();
  54. if($testName = $name->fetch(PDO::FETCH_ASSOC)){
  55. $errors['nameExists'] = 'Nazwa strony jest już zajęta';
  56. }else{
  57. $insertColumn .= 'c_site_address,';
  58. $insertValue .= ':c_site_address,';
  59. }
  60. }
  61.  
  62. if($module['cname']){
  63. if(empty($_POST['name'])){
  64. $errors['name'] = 'Pole nazwa firmy musi być wypełnione!';
  65. }else{
  66. $insertColumn .= ' c_name,';
  67. $insertValue .= ' :c_name,';
  68. }
  69. }
  70.  
  71. if($module['ctrade']){
  72. if(empty($_POST['trade'])){
  73. $errors['trade'] = 'Pole branża musi być wypełnione!';
  74. }else{
  75. $insertColumn .= ' c_trade,';
  76. $insertValue .= ' :c_trade,';
  77. }
  78. }
  79.  
  80. if($module['cdescription']){
  81. if(empty($_POST['description'])){
  82. $errors['description'] = 'Pole opis musi być wypełnione!';
  83. }else{
  84. $insertColumn .= ' c_description,';
  85. $insertValue .= ' :c_description,';
  86. }
  87. }
  88.  
  89. if($module['cactivity']){
  90. if(empty($_POST['activity'])){
  91. $errors['activity'] = 'Pole opis działalności musi być wypełnione!';
  92. }else{
  93. $insertColumn .= ' c_activity,';
  94. $insertValue .= ' :c_activity,';
  95. }
  96. }
  97.  
  98. if($module['chobby']){
  99. if(empty($_POST['hobby'])){
  100. $errors['hobby'] = 'Pole hobby musi być wypełnione!';
  101. }else{
  102. $insertColumn .= ' c_hobby,';
  103. $insertValue .= ' :c_hobby,';
  104. }
  105. }
  106.  
  107. if($module['cmail']){
  108. if (!filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)){
  109. $errors['email'] = 'Pole email musi być wypełnione!';
  110. }else{
  111. $insertColumn .= ' c_email,';
  112. $insertValue .= ' :c_email,';
  113. }
  114. }
  115.  
  116. if($module['caddress']){
  117. if (!filter_var($_POST['phone'], FILTER_VALIDATE_INT)){
  118. $errors['phone'] = 'Pole phone musi być wypełnione!';
  119. }else{
  120. $insertColumn .= ' c_phonenumber,';
  121. $insertValue .= ' :c_phonenumber,';
  122. }
  123. if(empty($_POST['street'])){
  124. $errors['street'] = 'Pole ulica musi być wypełnione!';
  125. }else{
  126. $insertColumn .= ' c_street,';
  127. $insertValue .= ' :c_street,';
  128. }
  129. if(empty($_POST['city'])){
  130. $errors['city'] = 'Pole miasto musi być wypełnione!';
  131. }else{
  132. $insertColumn .= ' c_city,';
  133. $insertValue .= ' :c_city,';
  134. }
  135. if ( !preg_match('/^[0-9]{2}-?[0-9]{3}$/', $_POST['postcode'])){
  136. $errors['postcode'] = 'Nieprawidłowy kod pocztowy';
  137. }else{
  138. $insertColumn .= ' c_postcode,';
  139. $insertValue .= ' :c_postcode,';
  140. }
  141. }
  142.  
  143. if(empty($errors)){
  144. mkdir('images/company/'.$_POST['site_address'], 0777);
  145. $logo = substr($_SERVER['REQUEST_TIME'], 7,3).clearText($file['name']);
  146. if(move_uploaded_file($_FILES['logo']['tmp_name'], 'images/company/'.$_POST['site_address'].'/'.$logo)){
  147. $uploadedImg[] = 1;
  148. $insertColumn .= ' c_logo,';
  149. $insertValue .= ' :c_logo,';
  150. }else{
  151. $uploadedImg[] = 0;
  152. }
  153.  
  154.  
  155. foreach ($_FILES['photo'] as $position => $file){
  156. $imgName = substr($_SERVER['REQUEST_TIME'], 7,3).clearText($file['name']);
  157. if(move_uploaded_file($file['tmp_name'], 'images/company/'.$_POST['site_address'].'/'.$imgName)){
  158. $uploadedImg[] = 1;
  159. $imgNames[] = $imgName;
  160. }else{
  161. $uploadedImg[] = 0;
  162. }
  163. }
  164. if(!in_array(0, $uploadedImg)){
  165. $insertColumn .= 'subscription, c_view, c_registration_date';
  166. $insertValue .= ':subscription, :view, :registration_date';
  167.  
  168. $db = db_connect();
  169. $sql = 'INSERT INTO company('.$insertColumn.')
  170. VALUES('.$insertValue.')';
  171.  
  172. $stmt = $db->prepare($sql);
  173. $stmt->bindValue(':c_site_address', $_POST['site_address'], PDO::PARAM_STR);
  174. $stmt->bindValue(':subscription', $_POST['subscription'], PDO::PARAM_INT);
  175. $stmt->bindValue(':view', 0, PDO::PARAM_INT);
  176. $stmt->bindValue(':registration_date', date("Y-m-d"), PDO::PARAM_STR);
  177. if($module['cname']){
  178. $stmt->bindValue(':c_name', $_POST['name'], PDO::PARAM_STR);
  179. }
  180.  
  181. if($module['ctrade']){
  182. $stmt->bindValue(':c_trade', $_POST['trade'], PDO::PARAM_STR);
  183. }
  184. if($module['clogo']){
  185. $stmt->bindValue(':c_logo', $logo, PDO::PARAM_STR);
  186. }
  187. if($module['cdescription']){
  188. $stmt->bindValue(':c_description', $_POST['description'], PDO::PARAM_STR);
  189. }
  190.  
  191. if($module['cactivity']){
  192. $stmt->bindValue(':c_activity', $_POST['activity'], PDO::PARAM_STR);
  193. }
  194.  
  195. if($module['chobby']){
  196. $stmt->bindValue(':c_hobby', $_POST['hobby'], PDO::PARAM_STR);
  197. }
  198.  
  199. if($module['cmail']){
  200. $stmt->bindValue(':c_email', $_POST['email'], PDO::PARAM_STR);
  201. }
  202.  
  203. if($module['caddress']){
  204. $stmt->bindValue(':c_phonenumber', $_POST['phone'], PDO::PARAM_INT);
  205. $stmt->bindValue(':c_street', $_POST['street'], PDO::PARAM_STR);
  206. $stmt->bindValue(':c_city', $_POST['city'], PDO::PARAM_STR);
  207. $stmt->bindValue(':c_postcode', $_POST['postcode'], PDO::PARAM_STR);
  208. }
  209. try {
  210. $db->beginTransaction();
  211. $stmt->execute();
  212. $id = $db->lastInsertId();
  213. $sql = 'INSERT INTO company_images(idcompany, images)
  214. VALUES(:idcompany, :images)';
  215. $insImg = $db->prepare($sql);
  216. foreach($imgNames as $img){
  217. $insImg->bindValue(':idcompany', $id, PDO::PARAM_INT);
  218. $insImg->bindValue(':images', $img, PDO::PARAM_STR);
  219. $insImg->execute();
  220. }
  221. $db->commit();
  222. }catch(PDOExecption $e){
  223. $db->rollback();
  224. rrmdir('../images/comapny/'.$_POST['site_address']);
  225. print "Error!: " . $e->getMessage() . "</br>";
  226. }
  227. }
  228. }else{
  229. foreach ($errors as $err){
  230. ?><p class="info err"><?php print $err;?></p><?php
  231. }
  232. }
  233. }else{
  234. header('Location: card_list.php');
  235. }?>
  236. </div>
  237. </div>
  238. </body>
  239. </html>
  240.  
  241.  
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 Aktualny czas: 21.08.2025 - 07:08