Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][MySQL]Pobieranie danych rekordów na podstawie ustalonej danej
odie2
post
Post #1





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 17.06.2013
Skąd: Lubin, Polska

Ostrzeżenie: (10%)
X----


Witam,
od niedawna mam styczność z PHP i MySQL, a z braku dużej ilości czasu i motywacji, uczę się głównie na gotowych zapytaniach, itp., ulepszając je oraz rozbudowując. Oczywiście jeżeli szukam czegoś konkretnego to szukam tego na internecie, a potem z tym kombinuję.

Podczas tworzenia strony już w dwóch przypadkach spotkałem się z pewnym problemem, przez który mój kod stał się długi i nieczytelny.
Wyświetlam np. obrazki, ale chcę aby były tylko z danej daty i były zrobione tak, aby w późniejszej fazie mogło to być zmieniane poprzez panel na stronie. Oczywiście można do tego zrobić nową tabelkę w bazie danych i pobierać daty na podstawie rekordu o danym id, ale czy można to zrobić prościej? Pokażę co mam na myśli, na jednym przykładzie (w drugim już nie pamiętam o co mi dokładnie chodziło wink.gif).

Przykład 1
  1. <?php
  2. $data = "2013-06-01"; //data ustawiona w bazie danych
  3. $wynikbazydata = mysql_query("SELECT data FROM lksgaleria WHERE data='".$data."'") or die('Błąd zapytania');
  4. if (mysql_num_rows($wynikbazydata) > 0) {
  5. $data2 = strtotime($data); //przekształcanie daty do innej formy
  6. $dataobl = dateV('j F Y ( l )', $data2); //przekształcona data do innej formy przy użyciu funkcji dateV (nie moja funkcja, która pokazuje dni i miesiące po polsku)
  7. $wynikbazy = mysql_query("SELECT * FROM lksgaleria WHERE data='".$data."' ORDER BY id") or die('Błąd zapytania');
  8. include("galeriazdjecie.php"); //szablon takich samych treści
  9. }
  10.  
  11. // [...]
  12.  
  13. ?>


Gdzie galeriazdjecie.php:
  1. <?php
  2. if(mysql_num_rows($wynikbazy) > 0) {
  3. echo '<h3 class="margines" style="background: none; border-bottom: 1px solid black; margin-top: 10px">'.$dataobl.'</h3>';
  4. echo "<table border=0 style='border-collapse: collapse; text-align: center'>";
  5. echo "<tr>";
  6. while($r = mysql_fetch_assoc($wynikbazy)) { //poniżej wstawianie obrazka na podstawie danych z bazy
  7. echo "<td style='display: inline-block; padding:0; margin: 0px 2px;'>";
  8. echo "<a rel='lightbox-cats' title='".$r['title']."' href='".$r['scr']."'>";
  9. echo "<img src='".$r['miniscr']."' style='border: none' alt='".$r['alt']."' width='286' height='161' />";
  10. echo "</a>";
  11. echo "</td>";
  12.  
  13. }
  14. echo "</tr>";
  15. echo "</table>";
  16. }
  17. ?>


Zrzut wyniku:


(coby mi ktoś nie powiedział, że brzydka strona - to jest szkic, czekam na grafiki i pomysł na wygląd elementów)

Zrzut bazy danych:



Aby nie było wypowiedzi, żebym w ogóle się za to nie brał, itp. - zrobiłem kilka dynamicznych stron pod zapytaniem, które same po adresie wykrywają co mają załadować, ale nie mam żadnego pomysłu, jak zrobić to bez adresu smile.gif

Jeżeli nie podałem np. wartości zmiennych to przepraszam i proszę o napisanie czego zapomniałem wink.gif

Jeżeli już istniał taki temat, proszę o link, ponieważ nie wiem pod jakim hasłem tego szukać (temat to masło maślane ;X).

Pozdrawiam, odie2

Ten post edytował odie2 20.06.2013, 18:50:48
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 2)
b4rt3kk
post
Post #2





Grupa: Zarejestrowani
Postów: 1 933
Pomógł: 460
Dołączył: 2.04.2010
Skąd: Lublin

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


Nie rozumiem co Ty tworzysz? Po co pobierasz najpierw datę, a dopiero później zdjęcia? Nie prościej wszystko naraz?

  1. $query = "SELECT * FROM lksgaleria ORDER BY data DESC";
  2. $res = mysql_query($query) or die('Błąd zapytania');
  3. $data = '';
  4.  
  5. while ($row = mysql_fetch_assoc($res)) {
  6. if ($data != $row['data']) {
  7. $data = $row['data'];
  8. $data2 = strtotime($data); //przekształcanie daty do innej formy
  9. $dataobl = dateV('j F Y ( l )', $data2); //przekształcona data do innej formy przy użyciu funkcji dateV (nie moja funkcja, która pokazuje dni i miesiące po polsku)
  10. echo '<h3 class="margines" style="background: none; border-bottom: 1px solid black; margin-top: 10px">'.$dataobl.'</h3>';
  11. echo "<table border=0 style='border-collapse: collapse; text-align: center'>";
  12. echo "<tr>";
  13. }
  14. echo "<td style='display: inline-block; padding:0; margin: 0px 2px;'>";
  15. echo "<a rel='lightbox-cats' title='".$r['title']."' href='".$r['scr']."'>";
  16. echo "<img src='".$r['miniscr']."' style='border: none' alt='".$r['alt']."' width='286' height='161' />";
  17. echo "</a>";
  18. echo "</td>";
  19. if ($data != $row['data']) {
  20. echo "</tr>";
  21. echo "</table>";
  22. }
  23. }


Poza tym masz literówkę, nie scr, tylko src - skrót od source, czyli źródło.

Ten post edytował b4rt3kk 20.06.2013, 20:10:44


--------------------
Jeśli pomogłem, kliknij proszę 'pomógł'. Dzięki.
Go to the top of the page
+Quote Post
odie2
post
Post #3





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 17.06.2013
Skąd: Lubin, Polska

Ostrzeżenie: (10%)
X----


Dzięki za nakierowanie. Muszę tylko trochę zmodyfikować, aby dobrze pokazywało przy większej ilości dat i przy zdjęciach bez dat.
Literówkę już poprawiam smile.gif

Opiekunów proszę o zamknięcie tematu.

Ten post edytował odie2 20.06.2013, 20:28:30
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: 20.08.2025 - 06:37