Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Automatyczne gennerowanie menu na podstawie zawartości pola (data) w tabeli
Forum PHP.pl > Forum > PHP
bebzon_hc
Witam!

Mam mały problem... Najpierw opiszę co chcę uzyskać.

Cel: skrypt ma automatycznie generować menu na moim blogu <li><a hfref=""></a></li> na podstawie rekordów (daty wpisania postu) w tabeli.

POLA W TABLICY: id_post; tytuł; zajawka; tresc; data (ma postać RRRR-MM-DD); autor

Na czerwono zaznaczyłem miejsce w którym jest ZONK!

  1. // przykładowa cała data w tabeli ma postać 2011-01-17
  2. for ($r=2011; $r<=2012; $r++) { // $r - rok
  3. for ($m=1; $m<=12; $m++) { //$m - miesiac
  4. if ($m <= 9) // miesiac w tabeli ma postać 01, 02, 03, 04, itd. do 12 dlatego rozdzieliłem na dwa warunki. W pierwszym warunku do wywołania dodane jest 0
  5. {
  6. $dbRequest = mysql_query("SELECT dbposty.data FROM dbposty WHERE dbposty.data LIKE \"".$r."-0".$m."-%\" LIMIT 1,1") or die('Błąd zapytania');
  7.  
  8. if ($dbRequest)
  9. {
  10. while ($row = mysql_fetch_assoc($dbRequest))
  11. {
  12. foreach ($row as $data)
  13. {
  14. preg_match('/..$/', $data, $miesiac); // tutaj zamiast miesiąca zwraca dzień, ale to pomińmy
  15. preg_match('/^..../', $data, $rok);
  16. echo $rok."&nbsp;".$miesiac;
  17. //echo $data."</br>"; - to działa
  18. }
  19.  
  20. }
  21. }
  22. }
  23. else
  24. {
  25. TUTAJ BĘDZIE TO SAMO CO WYŻEJ TYLKO BEZ 0 - zera
  26. }
  27. }
  28. }
Jeśli w zmiennej $rok i $miesiac uzyskam pojedyńcze, wygenerowane wartości wtedy juz z łatwością już można zaaplikować do <li><a hfref=""></a></li>.

Link jaki chcę uzyskać to np.:

  1. echo "<li><a href=\"index.php?id=01-2011\" target=\"_self\">Styczeń</a></li>";

gdzie: 01 to $m i 2011 to $r


P.S Uważam, że problem tkwi w tym, że foreach ($row as $data) zwraca mi tablice, a funkcja preg_match('/..$/', $data, $miesiac); służy do operacji na ciągach. Jest jakiś inny sposób żeby to obejść ? Jakiś odpowiednich preg_match dla tablic ?

Troche zagmatwane ale może ktoś to uniesie hehe :]
lukaskolista
  1. foreach ($row as $data)
nie rozumiem co robi ta petla. pole data jest dostepne w tablicy $row po indexem data, czyli
  1. $row['data']
bebzon_hc
oke sprawa załatwiona :] wystarczyło dodać: [0]


  1. foreach ($row as $data)
  2. {
  3. preg_match('/..$/', $data, $miesiac);
  4. preg_match('/^..../', $data, $rok);
  5. echo $rok[0]."&nbsp;".$miesiac[0];
  6. //echo $data."</br>";
  7. }



co do funkcji foreach {} nom to faktycznie troszke masło maślane ta funkcja hehe

owszem można ją usunąć i operaować indeksem. tez działa ;]

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.