![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 61 Pomógł: 0 Dołączył: 10.04.2015 Ostrzeżenie: (0%) ![]() ![]() |
Witam. Jestem nowy zarówno na forum jak i w tematyce języka PHP. Chcę tu i tu osiedlić się na stałe.
Stworzyłem bardzo prosty panel dodawania zdjęć. Z wyświetlaniem ich w tabelce nie będę miał problemu. Problem jest inny. Zdjęcia wrzucam na serwer do folderu "zdjecia" nadając im nazwy np. 1, 2, 3 itd. Panel po prostu dodaje do tabeli (mysql) do kolumny "nazwa_zdjecia" wpisaną przez usera nazwę (przykładowo "1"). Zdjęcie wyświetlam w ten sposób: (na razie całkowicie mi to wystarczy) Kod $zapytanie = 'SELECT nazwa_zdjecia FROM galeria_zdjec'; $wynik = mysql_query($zapytanie, $polaczenie); while ($rekord = @mysql_fetch_assoc($wynik)) { echo '<img src="zdjecia/'.$rekord['zdjecie'].'.jpg" width="200px" height="200px">'; } Chciałbym pójść krok na przód i dopisać do panelu możliwość dodawania kategorii, ale nie wiem, jak wtedy w danej kategorii miałyby się wyświetlać dane zdjęcia, bez mojej ingerencji w kod. Nie chce ściągać galerii. Chcę się uczyć. Myślę już drugi dzień nad rozwiązaniem tego problemu. Każda kategoria (stworzona z odsyłacza obrazkowego do pliku (kategoria1.php, kategoria2.php itp. i opisu) musiałaby mieć przyporządkowaną osobną tabelę mysql, ale ani plik "kategoria1.php) sam się nie utworzy a jeśli nawet po prostu user skopiuje plik i nada mu nazwę "katrgoria2.php" to plik ten nie będzie zawierał kodu wyświetlającego odpowiednie zdjęcia. Nie wiem. Proszę mniej nakierować na rozwiązanie. Oto mój kod dodawania zdjęcia: Kod if (@$_POST['dodaj']) {
$nowe_zdjecie =($_POST['zdjecie']); // sprawdź, czy taka nazwa produktu jest już w bazie $zapytanie = "SELECT zdjecie FROM galeria_zdjec WHERE zdjecie='$nowe_zdjecie'"; $produkt = mysql_query($zapytanie); if (mysql_num_rows($produkt) > 0) echo "<p>Zdjęcie o takiej nazwie już istnieje. Podaj inną nazwę.</p>"; else { $zapytanie = "INSERT INTO galeria_zdjec (zdjecie) VALUES ('$nowe_zdjecie')"; $wstaw = mysql_query($zapytanie); if ($wstaw) echo "<p>Dodano nowe zdjęcie</p>"; else echo "<p>Dodanie nowego zdjęcia nie powiodło się</p>"; } } ?> <p><b>Dodaj zdjęcie</b></p> <p>Dodawane zdjęcie musi znajdować się na serwerze w folderze "zdjecia"!</p> <!-- formularz Dodaj nowe zdjęcie --> <form action="<?php echo $_SERVER['PHP_SELF'];?>" method="POST"> Nazwa zdjęcia: <input name="zdjecie" /> <input type="submit" name="dodaj" value="Dodaj" /> <input type="reset" value="Resetuj" /> </form> <p /> |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 1 240 Pomógł: 278 Dołączył: 11.03.2008 Ostrzeżenie: (0%) ![]() ![]() |
Twój kod jest błędny ponieważ nie dodaje zdjęć tylko zapisuje ich lokalizacje w bazie danych.
Poczytaj o upload`zie w PHP. Nazwe pliku zdjęcia twórz sobie sam za pomocą np. $name = time().(rand(0,1000)).'.jpg'); (poczytaj co oznacza time oraz rand) Nazwe samego zdjęcia (tą którą wpisuje użytkownik) wrzucaj jako name, adres jako src. tbl_photos - id - category_id - name - src tbl_categories - id - name Na początku do tbl_categories dodajesz przykładowe kategorie. Następnie przy dodawaniu zdjęcia tworzysz sobie <select> w którym możemy wybrać kategorie (<option value="{id z tabeli tbl_categories}">{name z tabeli tbl_categories}</option>). Po wrzuceniu zdjęcia na serwer zapisujesz identyfikator kategorii w tabeli wraz z nazwą zdjęcia i src. Teraz żeby wyświetlić zdjęcia w danej kategorii tworzysz sobie plik np. kategoria.php który w parametrze GET będzie zawierał identyfikator wyświetlanej kategorii np. /kategoria.php?id=1 Potem tworzysz zapytanie które znajdzie wszystkie zdjęcia z tabeli tbl_photos gdzie category_id = $_GET['id'] (Pamiętaj żeby to ID rzutować na int - poczytaj jak to się robi). Zapytanie powinno Ci zwrócić X rekordów i za pomocą pętli foreach sobie je wyświetlasz. -------------------- |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 61 Pomógł: 0 Dołączył: 10.04.2015 Ostrzeżenie: (0%) ![]() ![]() |
Widziałem, że jakiś nocnik (nocny marek) będzie na forum. Dzięki. Zaczynam czytać o upload. Poleciało "pomógł". ; ]
link do strony 1. Nie umiem wyświetlić wszystkich kategorii w rozwijanej liście przy dodawaniu zdjęcia. 2. Nadal nie wiem jak przy wrzucaniu zdjęcia dodać dane "id_kategorii", "name" oraz "src" do tabeli "zdjecia". upload.php Kod <!DOCTYPE html> <html> <meta charset="UTF-8"> <head></head> <body> <?php include ('naglowek_polaczenie.php'); $zapytanie = 'SELECT * FROM kategorie'; $wynik = mysql_query($zapytanie, $polaczenie); $rekord = mysql_fetch_assoc($wynik); ?> <form method="post" action="upload3.php" enctype="multipart/form-data"> <input type="hidden" name="MAX_FILE_SIZE" value="550000"> Wybierz plik który chcesz umieścić na serwerze:<br> <select name="id_kategorii"> <option value="<?php echo $rekord['id'] ?>"><?php echo $rekord['name'] ?></option> </select> <input type="submit" value="Wgraj plik"> <input type="file" name="pliczek" size="40"> </body> </html> upload3.php Kod <!DOCTYPE html> <html> <meta charset="UTF-8"> <head></head> <body> <?php $name = time().(rand(0,1000)); move_uploaded_file($_FILES['pliczek']['tmp_name'],"foto/".$name.'.jpg'); echo 'typu pliku: '; echo $_FILES['pliczek']['type'] . '<br>'; echo 'rozmiar: '; echo $_FILES['pliczek']['size'] . '<br>'; echo 'nazwa: '; echo $_FILES['pliczek']['name'] . '<br>'; echo 'nazwa tymczasowa: '; echo $_FILES['pliczek']['tmp_name'] . '<br>'; echo 'błędy: '; echo $_FILES['pliczek']['error'] . '<br>'; ?> </body> </html> tabela "kategorie" id name tabela "zdjecia" id id_kategorii name src Ten post edytował brychu 12.04.2015, 18:42:12 |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 1 240 Pomógł: 278 Dołączył: 11.03.2008 Ostrzeżenie: (0%) ![]() ![]() |
Ad. 1
W twoim przypadku zapytanie zwraca kilka kategorii a ty wyświetlasz tylko 1. Poszukaj sobie w dokumentacji (w komentarzach) jak się dostać do wszystkich rekordów: mysql_fetch_assoc Ad. 2
nie masz pola (input type text) name - może warto najpierw je dodać i potem:
src to nic innego jak ścieżka do pliku, jak już go wgrasz na serwer za pomocą move_uploaded_file to zapisz jego ścieżkę w twoim przypadku będzie to:
-------------------- |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 61 Pomógł: 0 Dołączył: 10.04.2015 Ostrzeżenie: (0%) ![]() ![]() |
Wielkie dzięki, ale mam jeszcze jeden problem. Niby już tłumaczyłeś na samym początku, ale nie rozumiem.
STRONA PANEL Chcę, żeby po wybraniu odpowiedniej kategorii wyświetliły się wszystkie zdjęcia z danej kategorii. Kategorię mogę wyświetlić. To nie problem. Problemem jest to, że nie wiem jak dodać parametr GET w odsyłacz oraz jakie napisać zapytanie. Coś takiego bym kombinował, ale skąd miałbym wziąć GET['id'] i jak go później użyć. Kod <?php $id_kategorii = $_GET['id']; $zapytanie ="SELECT * FROM kategorie WHERE id=$id_kategorii"; $wynik = mysql_query($zapytanie) or die ('Błąd: ' . mysql_error()); ?> Od razu zapytam jeszcze o jedno. Gdy wyświetlam sobie tabelkę ze zdjęciami, to jak to zrobić, żeby zdjęcia wyświetlały się np. 4 w rzędzie a nie każde jedno pod drugim? Napisałem zwykłą tabelkę no i wyświetla tak jak się spodziewać można, a chciałbym, żeby było inaczej. Kod <table>
<?php while ($rekord = mysql_fetch_assoc($zdjecia)) { ?> <tr> <td><?php echo $rekord['id']; ?></td> <td><?php echo $rekord['zdjecie']?></td> </tr> <?php } ?> <table> Ten post edytował brychu 15.04.2015, 12:30:35 |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 1 240 Pomógł: 278 Dołączył: 11.03.2008 Ostrzeżenie: (0%) ![]() ![]() |
Ad. 1
$_GET['id'] to parametr GET przekazywany w linku np. kategoria.php?id=1 Wtedy gdy: $id = (int) $_GET['id']; To $id = 1; Tworzysz linki tam gdzie wyświetlasz kategorie dodając na końcu ?id={ID KATEGORII} Co do zapytania nie szukasz kategorii tylko zdjęć a więc - SELECT * FROM zdjecia WHERE kategoria_id=$id_kategorii" Ad. 2 To zwykły HTML/CSS - Poczytaj jakiś kurs i dopiero zadawaj pytania. -------------------- |
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 61 Pomógł: 0 Dołączył: 10.04.2015 Ostrzeżenie: (0%) ![]() ![]() |
Działa już mi wszystko. Serdeczne dzięki! Daje Ci 3 x "pomógł".
|
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 15.08.2025 - 03:07 |