Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MySQL]Pobieranie danych rekordów na podstawie ustalonej danej
Forum PHP.pl > Forum > Przedszkole
odie2
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
b4rt3kk
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.
odie2
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.
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.