Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Automatyczne gennerowanie menu na podstawie zawartości pola (data) w tabeli
bebzon_hc
post 10.02.2011, 21:40:45
Post #1





Grupa: Zarejestrowani
Postów: 36
Pomógł: 1
Dołączył: 10.02.2011
Skąd: Rawicz

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


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 :]
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 2)
lukaskolista
post 11.02.2011, 11:05:22
Post #2





Grupa: Zarejestrowani
Postów: 872
Pomógł: 94
Dołączył: 31.03.2010

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


  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']
Go to the top of the page
+Quote Post
bebzon_hc
post 12.02.2011, 19:10:24
Post #3





Grupa: Zarejestrowani
Postów: 36
Pomógł: 1
Dołączył: 10.02.2011
Skąd: Rawicz

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


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 ;]

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 Wersja Lo-Fi Aktualny czas: 24.07.2025 - 15:04