Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Skrócenie kodu
Forum PHP.pl > Forum > Przedszkole
Xart
Witam, da się może jakoś skrócić taki oto KOD ?

  1. $obrazek1 = $_POST['obrazek1'];
  2. $miniatura1 = $_POST['miniatura1'];
  3. $obrazek2 = $_POST['obrazek2'];
  4. $miniatura2 = $_POST['miniatura2'];
  5. $obrazek3 = $_POST['obrazek3'];
  6. $miniatura3 = $_POST['miniatura3'];
  7. $obrazek4 = $_POST['obrazek4'];
  8. $miniatura4 = $_POST['miniatura4'];
  9. $obrazek5 = $_POST['obrazek5'];
  10. $miniatura5 = $_POST['miniatura5'];
  11. $obrazek6 = $_POST['obrazek6'];
  12. $miniatura6 = $_POST['miniatura6'];
  13. $obrazek7 = $_POST['obrazek7'];
  14. $miniatura7 = $_POST['miniatura7'];
  15. $obrazek8 = $_POST['obrazek8'];
  16. $miniatura8 = $_POST['miniatura8'];
  17. $obrazek9 = $_POST['obrazek9'];
  18. $miniatura9 = $_POST['miniatura9'];
  19. $obrazek10 = $_POST['obrazek10'];
  20. $miniatura10 = $_POST['miniatura10'];
  21. $obrazek11 = $_POST['obrazek11'];
  22. $miniatura11 = $_POST['miniatura11'];
  23. $obrazek12 = $_POST['obrazek12'];
  24. $miniatura12 = $_POST['miniatura12'];
  25. $obrazek13 = $_POST['obrazek13'];
  26. $miniatura13 = $_POST['miniatura13'];
  27. $obrazek14 = $_POST['obrazek14'];
  28. $miniatura14 = $_POST['miniatura14'];
  29. $obrazek15 = $_POST['obrazek15'];
  30. $miniatura15 = $_POST['miniatura15'];
  31. $obrazek16 = $_POST['obrazek16'];
  32. $miniatura16 = $_POST['miniatura16'];
  33. $obrazek17 = $_POST['obrazek17'];
  34. $miniatura17 = $_POST['miniatura17'];
  35. $obrazek18 = $_POST['obrazek18'];
  36. $miniatura18 = $_POST['miniatura18'];
  37. $obrazek19 = $_POST['obrazek19'];
  38. $miniatura19 = $_POST['miniatura19'];
  39. $obrazek20 = $_POST['obrazek20'];
  40. $miniatura20 = $_POST['miniatura20'];
  41. $obrazek21 = $_POST['obrazek21'];
  42. $miniatura21 = $_POST['miniatura21'];
  43. $obrazek22 = $_POST['obrazek22'];
  44. $miniatura22 = $_POST['miniatura22'];
  45. $obrazek23 = $_POST['obrazek23'];
  46. $miniatura23 = $_POST['miniatura23'];
  47. $obrazek24 = $_POST['obrazek24'];
  48. $miniatura24 = $_POST['miniatura24'];
  49. $obrazek25 = $_POST['obrazek25'];
  50. $miniatura25 = $_POST['miniatura25'];
john_doe
a co Ty wgrywasz przez form obraz i jego miniaturę?
Wgrywaj tylko fotkę a mini rób w locie to po 1sze.

po drugie użyj tablic.
Xart
@UP
W bazie będę miał same linki do fotek i miniatur więc nie mogę zrobić tego w locie ...
da radę ten kod pętlą jakoś ?

I kolejne ten kod może też się jakoś da mhm ?

  1. $mysqli->query("INSERT INTO `galleries` (id, nazwa, opis, ilosc, linkz, obrazek1, obrazek2, obrazek3, obrazek4, obrazek5, obrazek6, obrazek7, obrazek8, obrazek9, obrazek10, obrazek11, obrazek12, obrazek13, obrazek14, obrazek15, obrazek16, obrazek17, obrazek18, obrazek19, obrazek20, obrazek21, obrazek22, obrazek23, obrazek24, obrazek 25, miniatura1, miniatura2, miniatura3, miniatura4, miniatura5, miniatura6, miniatura7, miniatura8, miniatura9, miniatura10, miniatura11, miniatura12, miniatura13, miniatura14, miniatura15, miniatura16, miniatura17, miniatura18, miniatura19, miniatura20, miniatura21, miniatura22, miniatura23, miniatura24, miniatura 25, data) VALUES....
john_doe
Xart a możesz wyjaśnić co po co i dlaczego?
abyśmy wiedzieli co chcesz osiągnąć, jak ma działać
To podpowiemy optymalne rozwiązanie, bo to co tutaj pokazałeś jest raczej o kant d.... roztrzasnąć
Xart
Mam tabelę w bazie danych w której trzymam dane takie jak :

  1. CREATE TABLE IF NOT EXISTS `galleries` (
  2. `id` int(11) NOT NULL AUTO_INCREMENT,
  3. `nazwa` varchar(100) COLLATE utf8_polish_ci NOT NULL,
  4. `opis` text COLLATE utf8_polish_ci NOT NULL,
  5. `ilosc` int(11) NOT NULL DEFAULT '1',
  6. `linkz` varchar(100) COLLATE utf8_polish_ci NOT NULL,
  7. `obrazek1` varchar(100) COLLATE utf8_polish_ci NOT NULL,
  8. `obrazek2` varchar(100) COLLATE utf8_polish_ci NOT NULL,
  9. `obrazek3` varchar(100) COLLATE utf8_polish_ci NOT NULL,
  10. `obrazek4` varchar(100) COLLATE utf8_polish_ci NOT NULL,
  11. `obrazek5` varchar(100) COLLATE utf8_polish_ci NOT NULL,
  12. `obrazek6` varchar(100) COLLATE utf8_polish_ci NOT NULL,
  13. `obrazek7` varchar(100) COLLATE utf8_polish_ci NOT NULL,
  14. `obrazek8` varchar(100) COLLATE utf8_polish_ci NOT NULL,
  15. `obrazek9` varchar(100) COLLATE utf8_polish_ci NOT NULL,
  16. `obrazek10` varchar(100) COLLATE utf8_polish_ci NOT NULL,
  17. `obrazek11` varchar(100) COLLATE utf8_polish_ci NOT NULL,
  18. `obrazek12` varchar(100) COLLATE utf8_polish_ci NOT NULL,
  19. `obrazek13` varchar(100) COLLATE utf8_polish_ci NOT NULL,
  20. `obrazek14` varchar(100) COLLATE utf8_polish_ci NOT NULL,
  21. `obrazek15` varchar(100) COLLATE utf8_polish_ci NOT NULL,
  22. `obrazek16` varchar(100) COLLATE utf8_polish_ci NOT NULL,
  23. `obrazek17` varchar(100) COLLATE utf8_polish_ci NOT NULL,
  24. `obrazek18` varchar(100) COLLATE utf8_polish_ci NOT NULL,
  25. `obrazek19` varchar(100) COLLATE utf8_polish_ci NOT NULL,
  26. `obrazek20` varchar(100) COLLATE utf8_polish_ci NOT NULL,
  27. `obrazek21` varchar(100) COLLATE utf8_polish_ci NOT NULL,
  28. `obrazek22` varchar(100) COLLATE utf8_polish_ci NOT NULL,
  29. `obrazek23` varchar(100) COLLATE utf8_polish_ci NOT NULL,
  30. `obrazek24` varchar(100) COLLATE utf8_polish_ci NOT NULL,
  31. `obrazek25` varchar(100) COLLATE utf8_polish_ci NOT NULL,
  32. `miniatura1` varchar(100) COLLATE utf8_polish_ci NOT NULL,
  33. `miniatura2` varchar(100) COLLATE utf8_polish_ci NOT NULL,
  34. `miniatura3` varchar(100) COLLATE utf8_polish_ci NOT NULL,
  35. `miniatura4` varchar(100) COLLATE utf8_polish_ci NOT NULL,
  36. `miniatura5` varchar(100) COLLATE utf8_polish_ci NOT NULL,
  37. `miniatura6` varchar(100) COLLATE utf8_polish_ci NOT NULL,
  38. `miniatura7` varchar(100) COLLATE utf8_polish_ci NOT NULL,
  39. `miniatura8` varchar(100) COLLATE utf8_polish_ci NOT NULL,
  40. `miniatura9` varchar(100) COLLATE utf8_polish_ci NOT NULL,
  41. `miniatura10` varchar(100) COLLATE utf8_polish_ci NOT NULL,
  42. `miniatura11` varchar(100) COLLATE utf8_polish_ci NOT NULL,
  43. `miniatura12` varchar(100) COLLATE utf8_polish_ci NOT NULL,
  44. `miniatura13` varchar(100) COLLATE utf8_polish_ci NOT NULL,
  45. `miniatura14` varchar(100) COLLATE utf8_polish_ci NOT NULL,
  46. `miniatura15` varchar(100) COLLATE utf8_polish_ci NOT NULL,
  47. `miniatura16` varchar(100) COLLATE utf8_polish_ci NOT NULL,
  48. `miniatura17` varchar(100) COLLATE utf8_polish_ci NOT NULL,
  49. `miniatura18` varchar(100) COLLATE utf8_polish_ci NOT NULL,
  50. `miniatura19` varchar(100) COLLATE utf8_polish_ci NOT NULL,
  51. `miniatura20` varchar(100) COLLATE utf8_polish_ci NOT NULL,
  52. `miniatura21` varchar(100) COLLATE utf8_polish_ci NOT NULL,
  53. `miniatura22` varchar(100) COLLATE utf8_polish_ci NOT NULL,
  54. `miniatura23` varchar(100) COLLATE utf8_polish_ci NOT NULL,
  55. `miniatura24` varchar(100) COLLATE utf8_polish_ci NOT NULL,
  56. `miniatura25` varchar(100) COLLATE utf8_polish_ci NOT NULL,
  57. `data` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
  58. PRIMARY KEY (`id`)
  59. ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_polish_ci AUTO_INCREMENT=1 ;


Wgrywam dane do tej tabeli aby potem wyświetlić je skryptem takim:
  1. <?php
  2. include("config.php");
  3. $id = $_GET['id'];
  4. $zapytanie = $mysqli->query("SELECT * FROM `galleries` WHERE id='$id");
  5. $wynik = $zapytanie->fetch_assoc();
  6. $ilosc = $wynik['ilosc'];
  7. for($i = 1; $i <= $ilosc; $i++){
  8. $duzy = $wynik['obrazek'.$i.''];
  9. $maly = $wynik['miniatura'.$i.''];
  10. print '<a class="fancybox-buttons" data-fancybox-group="button" href="'.$duzy.'"><img src="'.$maly.'"/></a>';
  11. }
  12. ?>
nospor
Masz totalnie złą strukture bazy...
Mają byc dwie tabele:
Tabela GALERIA
ID
NAZWA
OPIS
LINKZ

Tabela OBRAZEK
ID
ID_GALERII - id galerii, do ktorej nalezy obrazek
SCIEZKA

I juz.
john_doe
w 1szej kolejności powinieneś utworzyć drugą tabelę np. pictures
która będzie przechowywała obrazy dla danej galerii w Twoim przypadku tabeli galleries

struktura tabela pictures
picture_id
gallery_id -> to id jest kluczem obcym z tabeli galleries
picture_file


Xart
Ale pytanie poco ?
Jak mogę te dane trzymać w jednej tabeli i będzie prościej ?
nospor
Po co? Bo tak sie wlasnie robi prawidlowo. To co ty zrobiles nie ma reki ani nogi.... I nie, to co zrobiles nie jest prostrze.
A co gdy nagle w galerii bedzie 30 zdjec a nie 24? Bedziesz dodawal kolejne pola? W schemaci co ci zaproponowalismy nie ma znaczenia ile bedzie zdjec w galerii
Xart
Nie ;p
Piszę takiego małego CMS'a dla strony szkoły smile.gif
I wiem że w jeden galerii nie będzie więcej niż 25 zdjęć bo wtedy robią 2 galerie
nospor
Przychodzisz na forum z prosbą jak skrocic.... podajemy ci wiec jak to sie robi prawidlowo a Ty dalej swoje.... To po co marnujesz nasz czas? Naucz się pisać prawidlowo. To co Ty chcesz zrobic to marnowanie czasu na zle praktyki
Xart
Ale kodu itak to nie skróci nie prawdaż ?
Bo itak będę musiał dodać te zdjęcia tlyko tyle, że do innej tabeli i dodatkowo narobi mi się wiecej
$mysqli->query("INSERT INTO `pictures`
bo będę musiał każdy obrazek zapisywać oddzielnie bo chyba inaczej się nie da...
Kshyhoo
Cytat(Xart @ 14.04.2014, 14:29:30 ) *
  1. $obrazek1 = $_POST['obrazek1'];
  2. $miniatura1 = $_POST['miniatura1'];

  1. $o1 = $_POST['o1'];
  2. $m1 = $_POST['m1'];


smile.gif
nospor
Skroci kod i to bardzo.
W petli bedziesz dodawal zdjecia
Turson
O przebudowie bazy już pisałem w innym temacie, ale dalej upierasz się przy swoim.

Cytat
Ale kodu itak to nie skróci nie prawdaż ?
Bo itak będę musiał dodać te zdjęcia tlyko tyle, że do innej tabeli i dodatkowo narobi mi się wiecej

Tabela więcej, a kodu mniej


Kshyhoo hahaha laugh.gif
john_doe
robisz coś takiego
  1. <input type="file" name="pic[]" />


i takich inputów masz tyle ile chcesz wgrać fotek, u Ciebie 25 ( sporo smile.gif )

dalej robisz posta

i uruchom sobie var_dump($_POST)
zobaczysz co zawiera tablica POST i już wiesz wszystko

potem wystarczy w pętli np. for jechać po tej tablicy i zapodawać INSERT, czyli zamiast 25 "z buta" insertów generujesz je dynamicznie za pomocą php
Xart
@UP
Inputów mam tyle ile sobie ustawię podczas dodawania galerii
Mam pole select i w zależności od ilości wybranych np '12'
wyświetli mi 12 inputów na obrazek i 12 na miniaturki

mhm
tylko nie mam badego pojęcią jak to robić inaczej niż "z buta" bo nigdy nie robiłem ;p
dodawać pętlą o.O ?
Jeszcze takie pytanie z innej beczki mogę dodać sam obrazek chyba nie ? A jako miniaturke wyświetlać go w innych rozmiarach za pomocą HTML hmm ?
john_doe
do Ciebie jak grochem o ścianę, albo chcesz nauczyć się czegoś albo nie!
Miej sobie <select> gdzie ustawiasz ile ma być inputów, to bez znaczenia.

niech dla przykładu będą trzy
  1. <input type="file" name="pic[]" />
  2. <input type="file" name="pic[]" />
  3. <input type="file" name="pic[]" />

  1.  
  2. <?php
  3. for($i=0;$i<count($_FILES["pic"]["name"]);$i++)
  4. {
  5. if (file_exists("upload/" . $_FILES["pic"]["name"][$i]))
  6. {
  7. echo $_FILES["pic"]["name"][$i] . " już istnieje na serwerze. ";
  8. }
  9. else
  10. {
  11.  
  12. //I tutaj upload fotki i insert do tabeli
  13.  
  14. move_uploaded_file($_FILES["pic"]["tmp_name"][$i],
  15. "upload/" . $_FILES["pic"]["name"][$i]);
  16.  
  17. $query = " INSERT INTO tabela (COL1, COL2, COL3) VALUES ( COS, COS, $_FILES["pic"]["tmp_name"][$i] ";
  18.  
  19. mysql_query($query);
  20.  
  21. }
  22. }
  23. ?>
  24.  


finish, BTW tak kopiuj wklej nie zadziała jak widzisz ale ogląd masz.
Xart
Zrobię to jeszcze troszkę inaczej i prościej ale ogólnie dzięki smile.gif
-CuteOne-
Rozumiem Twój sceptycyzm ale uwierz mi Twój kod to sieczka smile.gif

1. google -> php upload (poczytaj o wgrywaniu plików, tablicach FILES itp)
2. baza danych tak jak podpowiedzieli koledzy wyżej
3. możesz uploadować grafikę a następnie zmniejszyć ją w php'ie (google -> php image resize example) i zapisać pod taką samą nazwą+jakiś postfix np. file_1_mini.jpg
4. nie polecam skalować dużych obrazków w html, widziałem jak koleś robił miniatury z obrazka 1900x1000 px, strona ładowała się pół dnia smile.gif
Xart
@UP
Ja nie potrzebuje wogole uploadu obrazków biggrin.gif
Zakładamy, że obrazki mam już upnięte np na imgur i podaje tylko linki do wyświetlenia ich w galerii...

Napisałem takie coś:
  1. <?php
  2. $nazwa = $_POST['nazwa'];
  3. $zdjecie = $_POST['zdjecie'];
  4. $ilosc = $_POST['ilosc'];
  5. $opis = $_POST['opis'];
  6. $mysqli->query("INSERT INTO `galerie` (nazwa, opis, zdjecie, data) VALUES ('$nazwa', '$opis', '$zdjecie', NOW())");
  7. // pętla do dodania obrazków
  8. for($i = 1; $i <= $ilosc; $i++){
  9. $obraz = $_POST['obraz'.$i.''];
  10. $mysqli->query("INSERT INTO `obrazki` (galeria, link) VALUES ('$galeria', '$obraz')");
  11. }
  12. echo '<meta http-equiv="refresh" content="3; URL=panel.php">';
  13. ?>


I mam kolejne pytania....
1. Czy to zadziała i czy jest to w miarę optymalne
2. Da się jakoś łatwo wyciągnąć ID wiersza z tabeli galerie, który wcześniej dodałem a jest on ustawiony jako AUTO...
Czy muszę po wgraniu wiersza do galerie pobrać dane ?
nospor
Robiac nazwy z $i zamiast tablicy jak ci proponowano, wcale nie zrobiles proscie.... tablica byla o niebo bardziej uniwersalna i poprawna.

Ostatnie ID zwroci ci http://pl1.php.net/manual/en/mysqli-stmt.insert-id.php
Xart
No to jeszcze muszę spytać...
ale ja was męczę...

mógłby ktoś jakis link do tutka jak to na tych tablicach zrobić ten kod co mam ?

  1. for($i = 1; $i <= $ilosc; $i++){
  2. $obraz = $_POST['obrazek'.$i.''];
  3. $mysqli->query("INSERT INTO `obrazki` (galeria, link) VALUES ('$galeria', '$obraz')");
  4. }


// edit

mógłbym to zrobić np tak:

$obraz = $_POST['obrazek'][$i]; ?
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.