Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Jak nadać kolejność miniaturom?
Forum PHP.pl > Forum > Przedszkole
Lukasso
W panelu administracyjnym strony www mam formularz dodawania zdjęć do galerii. Upload zdjęć działa, kasowanie też, dodawanie (i uaktualnianie) opisu też, problem stwarza mi ustawianie kolejności zdjęć. Dodałem do tabeli galeria_zdjecia pole picorder gdzie wpisywane wartości decydują o kolejności wyświetlania zdjęć w galerii. Wpisanie ręczne do bazy cyfr w polu picorder powoduje prawidłowe wyświetlanie zdjęć w zadanej kolejności. Nie działa jednak pole w formularzu służące do określania kolejności (wpisania odpowiedniej cyfry w miejsce tej wyświetlanej z bazy danych). Załączam obrazek.

Cyfry w polach "kolejność" to zawartość pola picorder z bazy. Chciałbym móc zmieniać kolejność wpisując inną cyfrę i zapisując dane do bazy. Próbuję użyć tutaj funkcji UPDATE, ale robię coś nie tak, bo nie działa. Poniżej jest pole z tekstem uaktualniane w ten sam sposób, ale w tym przypadku jest łatwiej, bo pole jest jedno. Miniatur jest wiele.

Proszę o pomoc w rozwiązaniu tego problemu.

Tutaj próba użycia UPDATE:
  1. $updkolejnosc = mysql_query("UPDATE galeria_zdjecia SET
  2. picorder='".$_POST['picorder']."' WHERE id='".$_POST['id']."'") or die(mysql_error());
  3. $savedSettings="yes";


A tutaj fragment formularza:
  1. echo "<table>";
  2. while ($addP = mysql_fetch_array($getImages)) {
  3. $picorder =($addP['picorder']);
  4. if($main == $addP['id']) $selected = " checked "; else $selected = "";
  5. if($count%7==166) echo "<tr>";
  6.  
  7. echo "<td class=\"miniatury_box\">
  8.  
  9. kolejność <input name=\"picorder\" type=\"text\" value=\"".$picorder."\" size=\"2\"><br>
  10.  
  11. <img class=\"miniatury\" src=\"../mthumb.php?pic=".$addP['file_name']."&w=90&sq=Y&b=Y\" border=\"0\"><br>
  12. główne&nbsp;<input type=\"radio\" $selected name=\"main\" value=\"".$addP['id']."\"><br />
  13. usuń&nbsp;<input type=\"checkbox\" id=\"del_chk_addpic".$i."\" onClick=\"delete_pic(this.form,'addpic_".$i."');
  14. \">
  15. </td>";
  16.  
  17. if($count%7==0) echo "</tr>";
  18. $i++;
  19. $count++;
  20.  
  21. }
  22.  
  23. echo "</table>";

Z góry dzięki za pomoc.

b4rt3kk
Oczywiście, że nie ma prawa działać, bo nadpisujesz wartość $_POST['picorder'], a po drugie, nie ma nigdzie w formularzu pola o nazwie id, więc warunek WHERE jest pusty. Sprawdzałeś w ogóle jak wygląda zapytanie?

Prawidłowy formularz:
  1. echo "<table>";
  2. while ($addP = mysql_fetch_array($getImages)) {
  3. $picorder =($addP['picorder']);
  4. if($main == $addP['id']) $selected = " checked "; else $selected = "";
  5. if($count%7==166) echo "<tr>";
  6.  
  7. echo "<td class=\"miniatury_box\">
  8. <input type='hidden' name='id[]' value='{$addP['id']}' />
  9. kolejność <input name=\"picorder[]\" type=\"text\" value=\"".$picorder."\" size=\"2\"><br>
  10.  
  11. <img class=\"miniatury\" src=\"../mthumb.php?pic=".$addP['file_name']."&w=90&sq=Y&b=Y\" border=\"0\"><br>
  12. główne&nbsp;<input type=\"radio\" $selected name=\"main\" value=\"".$addP['id']."\"><br />
  13. usuń&nbsp;<input type=\"checkbox\" id=\"del_chk_addpic".$i."\" onClick=\"delete_pic(this.form,'addpic_".$i."');
  14. \">
  15. </td>";
  16.  
  17. if($count%7==0) echo "</tr>";
  18. $i++;
  19. $count++;
  20.  
  21. }
  22.  
  23. echo "</table>";


Prawidłowy zapis:

  1. foreach ($_POST['id'] as $key => $item) {
  2. $updkolejnosc = mysql_query("UPDATE galeria_zdjecia SET
  3. picorder='".$_POST['picorder'][$key]."' WHERE id='".$item."'") or die(mysql_error());
  4. $savedSettings="yes";
  5. }
Lukasso
Dzięki. Niestety nie pomogło. Najlepiej jak wkleję cały kod, bo wycinając fragment mogłem pominąć coś ważnego co znajduje się wcześniej. Ten plik pozostał mi z jakiegoś projektu, który ktoś dla mnie kiedyś zrobił. Straszny w nim bałagan, przepraszam. Ja, jako bardzo początkujący w temacie php, nie mogę sobie z tym poradzić. Próbowałem znaleźć informacje o prawidłowej składni zapytania (http://www.w3schools.com/php/php_mysql_update.asp) ale nie bardzo potrafię użyć go dla tego konkretnego przykładu.

Cały kod
  1. <?php
  2.  
  3. $tempNumber = substr(md5(uniqid(rand(2, 999999999))),0,9);
  4. $imgMaxSize = 1024*1024;
  5.  
  6. ## delete pictures
  7. if (!empty($_REQUEST['deletepic'])) {
  8. $page = getSqlRow("SELECT * FROM galeria WHERE id='".$_REQUEST['id']."'");
  9. if (eregi('addpic', $_REQUEST['deletepic'])) {
  10. $picDets = explode('_',$_REQUEST['deletepic']);
  11. $getAP = mysql_query("SELECT i.* FROM galeria_zdjecia i, galeria a WHERE i.galeria_id='".$page['id']."' AND a.id=i.galeria_id");
  12. $addPicRes = @mysql_result($getAP,$picDets[1],'file_name');
  13. $addPicId = @mysql_result($getAP,$picDets[1],'id');
  14. @unlink($addPicRes);
  15. $remAddPicDb = mysql_query("DELETE FROM galeria_zdjecia WHERE id='".$addPicId."'");
  16. }
  17. }
  18.  
  19. for ($i=0;$i<4;$i++) {
  20. if($_POST['the_pic'][$i]!='') $zapisz[] = $_POST['the_pic'][$i];
  21. }
  22. $_POST['the_pic'] = $zapisz;
  23.  
  24.  
  25. $id = $_REQUEST['id'];
  26.  
  27.  
  28. if($_POST['doAction'] == 'save') {
  29. //add foto --------------------------------------------
  30. for ($i=0;$i<4;$i++) {
  31.  
  32. if ($_FILES['addfile']['size'][$i]<$imgMaxSize) {
  33. if($_FILES['addfile']['name'][$i]!="") {
  34.  
  35. $sourceFile = $_FILES['addfile']['tmp_name'][$i];
  36. $sourceFileName = $_FILES['addfile']['name'][$i];
  37. $fileExtension = getFileExtension($sourceFileName);
  38. $addImageName = "gallery".$tempNumber."-".$i.".".$fileExtension;
  39. $isUpload = uploadBigFile($sourceFile,$addImageName,"../uplimg/");
  40. if ($isUpload) {
  41. $insertImage = mysql_query("INSERT INTO galeria_zdjecia (file_name, galeria_id)
  42. VALUES ('"."uplimg/".$addImageName."','".$_POST['id']."')") or die();
  43.  
  44. $_POST['the_pic'][]="uplimg/".$addImageName;
  45. }
  46. }
  47. } else {
  48. $errtxt .= "<br><strong>Bład.</strong> Wybrane zdjęcie #".($i+1)." jest zbyt duże. Największy akceptowany rozmiar to ".$imgMaxSize." kb";
  49. }
  50. }
  51.  
  52. // add/update text field
  53. $updHiddenCats = mysql_query("UPDATE galeria SET
  54. text='".remSpecialChars($_POST['text'])."', main='".$_POST['main']."' WHERE id='".$_POST['id']."'") or die(mysql_error());
  55.  
  56. $updkolejnosc = mysql_query("UPDATE galeria_zdjecia SET
  57. picorder='".$_POST['picorder']."' WHERE id='".$_POST['id']."'") or die(mysql_error());
  58. $savedSettings="yes";
  59.  
  60. //end add foto -----------------------------------------------------------
  61. }
  62.  
  63. include ("includes/header.php");
  64. include ('includes/menu.php');
  65.  
  66.  
  67. $nbAddPics = getSqlNumber("SELECT id FROM galeria_zdjecia WHERE galeria_id='".$id."'");
  68.  
  69. echo "<script language=\"JavaScript\"> \n";
  70. echo " function delete_pic(theform,pic) { \n";
  71. echo " if (confirm('Na pewno chcesz usunąć to zdjęcie?')) { \n";
  72. echo " theform.deletepic.value = pic; \n";
  73. echo " theform.submit(); \n";
  74. echo " } else { \n";
  75. echo " theform.del_chk_mainpic.checked = false; \n";
  76. for ($i=0; $i<$nbAddPics; $i++) echo "theform.del_chk_addpic".$i.".checked = false; \n";
  77. echo " }\n";
  78. echo " } \n";
  79. echo "</script>";
  80.  
  81. ?>
  82.  
  83. <!-- ************ zawartosc ********************************************************************************
    ******** -->
  84.  
  85. <div id="content">
  86. <h3>Fotogaleria Babka </h3>
  87. <!-- start content -->
  88. <?php
  89.  
  90. //additional images -------------------------------------
  91. if(getSqlNumber("SELECT * FROM galeria_zdjecia WHERE needs_id='".$id."'")>0) {
  92. $getAddPics = mysql_query("SELECT * FROM galeria_zdjecia WHERE galeria_id='".$id."'");
  93. $addPicCnt = 0;
  94.  
  95. while ($addP = mysql_fetch_array($getAddPics)) $_POST['the_pic'][$addPicCnt++] = $addP['file_name'];
  96. }
  97. //additional images end -----------------------------
  98. $caption = 'Zapisz wprowadzone zmiany';
  99. ?>
  100. <p><? echo ($savedSettings=="yes")?"<p align=\"center\" class=\"info\">Pomyślnie zapisano w bazie danych</p>":"";
  101. ?></p>
  102. <form action="gallery_details.php" method="post" enctype="multipart/form-data" name="form">
  103. <input type="hidden" name="deletepic" value="">
  104. <INPUT type="hidden" name="doAction" value="save">
  105. <INPUT type="hidden" name="id" value="<?php echo $id ?>">
  106. <?
  107. for ($i=0;$i<4;$i++) {
  108. echo "<input type=\"hidden\" name=\"the_pic[]\" value=\"".$_POST['the_pic'][$i]."\"> \n";
  109. }
  110. ?>
  111. <table width="700"border="0" cellspacing="0" cellpadding="4" align="left">
  112. <tr class="<? echo (($count++)%2==0) ? "c2":"c1"; ?>">
  113. <td colspan="2" valign="top">
  114.  
  115. <h3>Dodaj zdjęcia</h3>
  116. </td>
  117. </tr>
  118. <tr class="<? echo (($count++)%2==0) ? "c2":"c1"; ?>">
  119. <td colspan="2" valign="top" width="300">
  120.  
  121. <?
  122. $main = getSqlField("SELECT main FROM galeria WHERE id=".$_REQUEST['id'],"main");
  123.  
  124. $imagesNumber = getSqlNumber("SELECT * FROM galeria_zdjecia WHERE galeria_id='".$id."' ORDER BY picorder ASC");
  125. if($imagesNumber>0) {
  126. $getImages = mysql_query("SELECT * FROM galeria_zdjecia WHERE galeria_id='".$id."' ORDER BY picorder ASC");
  127.  
  128. $i=0;
  129. $count=1;
  130.  
  131. <!-- TUTAJ JEST CZĘŚĆ -->
  132. echo "<table>";
  133. while ($addP = mysql_fetch_array($getImages)) {
  134. $picorder =($addP['picorder']);
  135. if($main == $addP['id']) $selected = " checked "; else $selected = "";
  136. if($count%7==166) echo "<tr>";
  137.  
  138. echo "<td class=\"miniatury_box\">
  139.  
  140. kolejność <input name=\"picorder\" type=\"text\" value=\"".$picorder."\" size=\"2\"><br>
  141.  
  142. <img class=\"miniatury\" src=\"../mthumb.php?pic=".$addP['file_name']."&w=90&sq=Y&b=Y\" border=\"0\"><br>
  143. główne&nbsp;<input type=\"radio\" $selected name=\"main\" value=\"".$addP['id']."\"><br />
  144. usuń&nbsp;<input type=\"checkbox\" id=\"del_chk_addpic".$i."\" onClick=\"delete_pic(this.form,'addpic_".$i."');
  145. \">
  146. </td>";
  147.  
  148. if($count%7==0) echo "</tr>";
  149. $i++;
  150. $count++;
  151. }
  152.  
  153. echo "</table>";
  154.  
  155. } else echo "Jeszcze nie załadowano zdjęć";
  156. ?>
  157.  
  158. <!-- DO TEGO MIEJSCA -->
  159.  
  160. </td>
  161. </tr>
  162.  
  163. <tr>
  164. <td valign="top">
  165. <h3>Załaduj zdjęcia</h3> </td>
  166.  
  167. <td>
  168. <table border="0" cellspacing="2" cellpadding="2">
  169. <tr>
  170. <td><?
  171. for ($i=0;$i<4;$i++) {
  172. echo "<table border=\"0\" cellspacing=\"2\" cellpadding=\"2\"> \n";
  173. echo " <tr> \n";
  174. echo " <td><input type=\"file\" name=\"addfile[]\" class=\"contentfont\">";
  175. // echo ' <br><b>'.$lang['orurl'].' </b><!--http:// <input type="text" name="picurl['.$i.']">--></td>';
  176. echo " </tr>";
  177. echo "</table>";
  178. } ?> </td>
  179. </tr>
  180. </table> </td>
  181. </tr>
  182.  
  183. <tr>
  184. <td colspan="2">
  185. <table background="transparent" width="700" border="0" cellspacing="2" cellpadding="4">
  186. <tr>
  187. <td align="left">
  188. <div class="linia"></div>
  189. <h3>Opis galerii</h3>
  190. <p>Możesz dodać opis do galerii, który pojawi sie nad miniaturami zdjęć na stronie. Wpisz treść i zapisz zmiany.</p> </td>
  191. </tr>
  192.  
  193. <tr>
  194. <td background="transparent"><textarea name="text" class="pole" cols="90" rows="7" id="text"><?=$text = addSpecialChars(getSqlField("SELECT text FROM galeria WHERE id=".$_REQUEST['id'],"text"))?></textarea>
  195. <script>
  196. var oEdit1 = new InnovaEditor("oEdit1");
  197. oEdit1.width="100%";//You can also use %, for example: oEdit1.width="100%"
  198. oEdit1.height='200px';
  199. oEdit1.REPLACE("text");//Specify the id of the textarea here
  200. </script>
  201. <br> </td>
  202. </tr>
  203. </table> </td></tr>
  204.  
  205. <tr class="c3">
  206.  
  207. <td colspan="2" align="center"><div class="linia"></div><input type="submit" name="savesettsok" value="<?php echo $caption ?>"></td>
  208. </tr>
  209. <tr>
  210. <td colspan="2" align="center"> <hr size="1" color=#cccccc />
  211. <p align="center" class="navi_links"><A href="gallery.php">powrót do listy galerii</A></p></td>
  212. </tr>
  213. </table>
  214. </form>
  215. <!-- ebd content -->
  216.  
  217. </div>
  218. <!-- ************ koniec ********************************************************************************
    ******** -->
  219. <div class="clear"></div>
  220. <?php include ('includes/footer.php'); ?>
  221.  
  222. <? } ?>
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.