Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Pętla For() pomoc w ogarnięciu
Forum PHP.pl > Forum > Przedszkole
MrLoverLover
Siemka ja wprawdzie dopiero zaczynam głęboko przemyślać na temat nauki PHP Ale potrzebuję zrobić masowe dodawanie obrazków chcę to połączyć z skryptem a`la kwejk.pl
Problem w tym że jakby no nie wiem jak Wczoraj użytkownik Kshyhoo podpowiedział mi abym dodał do formularza

  1. multiple name="ufile[]" size="50"


a potem w pętli

  1. for ($i=0; $i<sizeof($_FILES['ufile']['size']); $i++) {


Wszystko byłoby pewnie łatwe dla kogoś kto rozumie choć trochę php. Nie wiem jak zabrać się za tą pętle trochę kombinowałem wychodziły jakieś cuda, że lepiej nie mówić różne fora tutoriale ale raczej z tutoriali nie nauczę się bo nie da się uczyć czegoś od środka tj. nie znam podstaw nie zrozumiem nic dalej.

W każdym razie moje próby prowadziły do naprawde chorych rzeczy np:

  1. for ($i=0; $i<sizeof($_FILES['ufile']['size']); $i++) {
  2. if(filesize($_FILES['ufile']['tmp_name']) >= $conf->pobierz('max_file_size')) {
  3. $data_img = date("YmdHis");
  4. $sp1 = pathinfo($_FILES['obrazek']['name']);
  5. $uploaddir = 'img/upload/'.$data_img.'.'.$sp1['extension'];
  6. switch(uploadFile('obrazek','img/upload/', array(1=>'jpg','jpeg','gif','png','JPG','JPEG','GIF','PNG'), 0, $data_img)) {
  7. case 0: echo "Nie wybrano pliku do załadowania!"; break;
  8. case 1: echo "Wgrywanie pliku nie powiodło się."; break;
  9. case 2:
  10. if($sp1['extension'] != "gif" && $sp1['extension']!= "GIF") {
  11. $image = new SimpleImage();
  12. $image->load($uploaddir);
  13. if($image->getWidth() > 670) {
  14. $image->resizeToWidth(670);
  15. $image->save($uploaddir);
  16. }
  17. else { //jeżeli obrazek jest mniejszy niż limit szerokości to jest kompresowany żeby mniej ważył
  18. $image->resizeToWidth($image->getWidth());
  19. $image->save($uploaddir);
  20. }
  21. }
  22. }
  23.  
  24. }


Ale nie działało więc postanowiłem napisać o pomoc

cały plik dodaj.php wygląda tak

  1. <?php
  2. if ($user->verifyLogin()) {
  3. if(isset($_POST['submit_obrazek']) and $_GET['co']=='obrazek') {
  4. if(!$_POST['tytul'] || !$_FILES['obrazek']['name']) {
  5. echo '<b>Nie wypełniono pola z tytułem lub obrazkiem!</b><br/><a href="dodaj.php">&laquo; Powrót</a>';
  6. }
  7. else {
  8. //UPLOAD OBRAZKA
  9. if(filesize($_FILES['obrazek']['tmp_name']) >= $conf->pobierz('max_file_size')) {
  10. $data_img = date("YmdHis");
  11. $sp1 = pathinfo($_FILES['obrazek']['name']);
  12. $uploaddir = 'img/upload/'.$data_img.'.'.$sp1['extension'];
  13. switch(uploadFile('obrazek','img/upload/', array(1=>'jpg','jpeg','gif','png','JPG','JPEG','GIF','PNG'), 0, $data_img)) {
  14. case 0: echo "Nie wybrano pliku do załadowania!"; break;
  15. case 1: echo "Wgrywanie pliku nie powiodło się."; break;
  16. case 2:
  17. if($sp1['extension'] != "gif" && $sp1['extension']!= "GIF") {
  18. $image = new SimpleImage();
  19. $image->load($uploaddir);
  20. if($image->getWidth() > 670) {
  21. $image->resizeToWidth(670);
  22. $image->save($uploaddir);
  23. }
  24. else { //jeżeli obrazek jest mniejszy niż limit szerokości to jest kompresowany żeby mniej ważył
  25. $image->resizeToWidth($image->getWidth());
  26. $image->save($uploaddir);
  27. }
  28. }
  29.  
  30. $tytul=htmlspecialchars($_POST['tytul']);
  31. $zrodlo=htmlspecialchars($_POST['zrodlo']);
  32. $autor = $user->userInfo("id");
  33. $data=date('d-m-Y H:i');
  34. $wykonaj = mysql_query("INSERT INTO `shity` (`title`, `img`, `source`, `author`, `data`, `type`) VALUES ('$tytul', '$uploaddir', '$zrodlo', '$autor', '$data', 'obrazek')");
  35.  
  36. echo "Obiekt został dodany!";
  37. break;
  38. case 3: echo "Niedozwolone rozszerzenie lub typ pliku!"; break;
  39. case 4: echo "Taki plik już istnieje.";
  40. }
  41. }
  42. else echo "Plik jest za duży.";
  43. echo '<br /><a href="index.php">&laquo; Strona Główna</a>';
  44. }
  45. }
  46. else {
  47. ?>
  48.  
  49. <?php
  50. if(@$_GET['co']=='obrazek' || !@$_GET['co'])
  51. {
  52. ?>
  53. <div id="tab">
  54. <ul>
  55. <li id="selected"><a href="dodaj.php?co=obrazek"><img src="img/photo.png" style="position:relative;top:3px;"/> Dodaj Obrazek</a></li>
  56. <li><a href="dodaj.php?co=film"><img src="img/film.png" style="position:relative;top:3px;"/> Dodaj filmik z YouTube</a></li>
  57. </ul>
  58. </div>
  59. <div id="tab_linia"></div>
  60. <form action="dodaj.php?co=obrazek" method="post" enctype="multipart/form-data">
  61. <table>
  62. <colgroup>
  63. <col width="120px;">
  64. <col>
  65. </colgroup>
  66. <tbody><tr>
  67. <td>Tytuł:</td>
  68. <td>
  69. <input class="pole" type="text" name="tytul">
  70. </td>
  71. </tr>
  72. <tr>
  73. <td>Obrazek:</td>
  74. <td>
  75. <input type="hidden" name="MAX_FILE_SIZE" value="<?php echo $conf->pobierz('max_file_size')*1024; ?>" /> <!--maksymalna wielkość pliku w bajtach-->
  76. <input name="obrazek" type="file" /> <span style="color:#595959">(max. <?php echo $conf->pobierz('max_file_size'); ?>KB)</span>
  77. </td>
  78. </tr>
  79. <tr>
  80. <td>Źródło:</td>
  81. <td><input class="pole" type="tekst" name="zrodlo"></td>
  82. </tr>
  83. <tr>
  84. <td></td>
  85. <td>
  86. <input type="submit" name="submit_obrazek" class="button" value="Dodaj" />
  87. </td>
  88. </tr>
  89. </tbody></table>
  90. </form>
  91. <?php
  92. }
  93. else
  94. {
  95. if(isset($_POST['submit_film']) and $_GET['co']=='film')
  96. {
  97. if(!$_POST['tytul_filmu'] || !$_POST['adres_filmu']) {
  98. echo '<b>Nie wypełniono pola z tytułem lub adresem filmu!</b><br/><a href="dodaj.php?co=film">&laquo; Powrót</a>';
  99. }
  100. else {
  101. if (preg_match("(http://)", $_POST['adres_filmu']))
  102. {
  103. $tytul=htmlspecialchars($_POST['tytul_filmu']);
  104. $adres_filmu=trim($_POST['adres_filmu']);
  105. $autor = $user->userInfo("id");
  106. $data=date('d-m-Y H:i');
  107.  
  108. $zapytanie = "INSERT INTO `shity` (`title`, `img`, `source`, `author`, `data`, `type`) VALUES ('$tytul', '$adres_filmu', 'YouTube', '$autor', '$data', 'film')";
  109. $wykonaj = mysql_query($zapytanie);
  110. echo '<b>Filmik został pomyślnie dodany!</b><br/>
  111. <a href="index.php">&laquo; Strona Główna</a>';
  112. } else {
  113. echo '<b>Link do filmu jest niepoprawny.</b><br/><a href="dodaj.php?co=film">&laquo; Powrót</a>';
  114. }
  115. }
  116. }
  117. else {
  118. ?>
  119. <div id="tab">
  120. <ul>
  121. <li><a href="dodaj.php?co=obrazek"><img src="img/photo.png" style="position:relative;top:3px;"/> Dodaj Obrazek</a></li>
  122. <li id="selected"><a href="dodaj.php?co=film"><img src="img/film.png" style="position:relative;top:3px;"/> Dodaj filmik z YouTube</a></li>
  123. </ul>
  124. </div>
  125. <div id="tab_linia"></div>
  126. <form action="dodaj.php?co=film" method="post" enctype="multipart/form-data">
  127. <table>
  128. <colgroup>
  129. <col width="120px;">
  130. <col>
  131. </colgroup>
  132. <tbody><tr>
  133. <td>Tytuł:</td>
  134. <td>
  135. <input class="pole" type="text" name="tytul_filmu">
  136. </td>
  137. </tr>
  138. <tr>
  139. <td>Adres filmu:</td>
  140. <td>
  141. <input class="pole" type="text" name="adres_filmu"> <span style="color:#595959">np. <a href="http://www.youtube.com/watch?v=7BfGua1Hn-8&lt;/span&gt;" target="_blank">http://www.youtube.com/watch?v=7BfGua1Hn-8</span></a>
  142. </td>
  143. <tr>
  144. <td></td>
  145. <td>
  146. <input type="submit" name="submit_film" class="button" value="Dodaj" />
  147. </td>
  148. </tr>
  149. </tbody></table>
  150. </form>
  151. <?php
  152. }
  153. }
  154. }
  155. else {
  156. echo 'Aby dodać nowy obrazek musisz być zalogowany.<br/><br/>
  157. <a href="login.php" class="button" style="float:left;">Logowanie</a>
  158. <a href="rejestracja.php" class="button" style="margin-left:10px;float:left;">Rejestracja</a>
  159. <div style="clear:left;"></div>';
  160. }
  161. ?>



Znalazłem w tym całym skrypcie jak mi się wydaje ważny plik dotyczący uploadu

http://wklej.to/z4hVX (wrzucam tutaj bo post byłby za długi)

Proszę o jakieś wskazówki jak się za to zabrać smile.gif
Lorum3
O co dokładnie chodzi z tym masowym dodawaniem obrazków?
MrLoverLover
Jest skrypt a`la kwejk i jak to na kwejku dodawanie obrazka a ja chce zrobić możliwość dodawania kilku obrazków.

Kolega powiedział że lepiej pętlą while
  1. while($_FILES['ufile']['size']){


Ale prawde mówiąc nie mam pojęcia jak.
Kostek.88
Wydaje mi się, że powinieneś zacząć od stworzenia działającego przykładu uploadu wielu plików bez zbędnych bajerów typu sprawdzanie rozszerzeń, maksymalnej wielkości pliku oraz kompresji... stwórz najpierw bazę - potem ją rozbuduj. Wiem, że chciałbyś mieć wszystko na cacy, ale czasem trzeba zacząć od czegoś prostszego, bo jeśli - jak wspomniałeś - nie masz podstaw PHP, więcej kodu == większe prawdopodobieństwo pomyłki.

OK, przejdźmy do konkretów... możesz to też zrobić w pętli foreach... wydaje mi się, że for powinna być szybsza, ale przy takich malutkich skryptach uważam, że nie ma to znaczenia. Jeśli się mylę, to proszę kogoś o poprawkę.

  1. <?php
  2. $uploads_dir = '/uploads';
  3.  
  4. foreach ($_FILES["pictures"]["error"] as $key => $error) {
  5. if ($error == UPLOAD_ERR_OK) { // ten if możesz pominąć, by było Ci łatwiej
  6. $tmp_name = $_FILES["pictures"]["tmp_name"][$key];
  7. $name = $_FILES["pictures"]["name"][$key];
  8. move_uploaded_file($tmp_name, "$uploads_dir/$name");
  9. }
  10. }
  11. ?>


To jest najprostszy przykład z manuala... move_uploaded_file

Najważniejsze jest zrozumienie, że jeśli chcesz wysłać kilka plików, musisz zrobić to w tablicy... i jeśli masz taki kod

  1. <input type="file" name="plik[]" />
  2. <input type="file" name="plik[]" />
  3. <input type="file" name="plik[]" />


i wybierzesz pliki w każdym polu, skrypt PHP dostanie tablicę $_FILES['plik']. Zatem jadąc dalej...
  1. $_FILES['plik']['name'][0] //- nazwa pierwszego pliku, zobacz że 0 to pierwszy element tablicy
  2. $_FILES['plik']['name'][1] //- nazwa drugiego pliku, 1 = drugi element tablicy
  3. $_FILES['plik']['name'][2] //- nazwa trzeciego pliku, 2 = trzeci element tablicy $_FILES['plik']['name']
  4.  
  5. $_FILES['plik']['tmp_name'][0] //- tymczasowa nazwa pierwszego pliku
  6. $_FILES['plik']['tmp_name'][1] //- tymczasowa nazwa drugiego pliku
  7. $_FILES['plik']['tmp_name'][2] //- tymczasowa nazwa trzeciego pliku
  8.  
  9. // itd.


Jeśli nie potrafisz sobie wyobrazić tej tablicy, to na początku skryptu PHP daj...

  1. print_r($_FILES['plik']);


...a następnie, po odpaleniu skryptu, WIDOK -> POKAŻ ŹRÓDŁO albo CTRL+U. Pokaże Ci się ładna tablica.

Poza tym zauważ też, że zmienna $key to nic innego jak $i w przykładzie @Kshyhoo dla pętli for. Zauważ, że zaczyna się od zera i leci o jeden w górę za każdym wykonaniem pętli. Zatem weźmy wyrywkowo fragment:

  1. $name = $_FILES["pictures"]["name"][$key];


Widzisz zmienną $key? to jest nic innego jak nasze 0, 1 i 2, które wyżej wypisywałem, czyli taki mały spacer po tablicy.
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.