Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: odczytywanie newsów z jednej kategori
Forum PHP.pl > Forum > Gotowe rozwiązania
kemsi
Zrobiłem taki mały skrypcik newsów oparty o bazę mysql z podziałem na kategorie, ale teraz mam takie pytanie. Załużmy, że mamy taką sytuację: na stronie otworz.php otwieram wszystkie newsy, a np. z lewej mam trzy linki z kategoriami i jak klikne np. na link o nazwie "Klub" to chcem, żeby mi się wyświetliły newsy z kategorii newsy a jak klikne na Strona to żeby mi sięwyświetliły newsy z kategorii Strona itd..Chciałbym, żeby to wszystko było zawarte w jednym pliku, bo przypuśćmy, że mam 20 kategorii to tyle plików bym musiał zrobic.

Oto pliki dwa:
odczyt.php
  1. <html>
  2. <head>
  3. </head>
  4. <body>
  5. <center>
  6. <?
  7.  $polancz = mysql_connect('localhost', 'kemsi', 'manutd') or die();
  8.  mysql_select_db('news');
  9.  
  10.  $odczyt = mysql_query(&#092;"SELECT `id`, `category`, `temat`, `mail`, `autor`, `tresc` FROM `newsy` ORD
    E
  11.  BY `id` DESC\") or die();
  12.  while($wiersz = mysql_fetch_array($odczyt)) {
  13.  echo \"<table border=1 width=300>
  14.  <tr><td>&#092;".$_wiersz['temat'].\"</td></tr>
  15.  <tr><td>&#092;".$wiersz['tresc'].\"</td></tr>
  16.  <tr><td>Dodał: <a href=&#092;"mailto:\".$wiersz['mail'].\"\">\".$wiersz['autor'].\"</a> Kategoria: \".$wiersz['category'].\"</td></tr>
  17.  <tr><td><a href=&#092;"komentuj.php?newsid=\".$wiersz['id'].\"\">Komentarze</a></table><br><br>\";
  18.  }
  19. ?>
  20. </center>
  21. </body>
  22. </html>


dodaj.php
  1. html>
  2. <head>
  3. </head>
  4. <body>
  5. <?
  6. $poloncz=mysql_connect('localhost', 'kemsi', 'manutd');
  7.  
  8. mysql_select_db('news');
  9.  
  10. if(!$temat || !$tresc || !$autor || !$mail){
  11. echo &#092;"Nie wypełniłeś wszystkich pól\";
  12. }
  13. else
  14. $dodaj=&#092;"INSERT INTO newsy VALUES ('0','\".$kategoria.\"','\".$temat.\"','\".$mail.\"','\".$autor.\"','\".$tresc.\"')\";
  15. $dodaje=mysql_query($dodaj);
  16. ?>
  17. <form method=\"post\" action=\"dodaj.php\"><table border=\"0\">
  18. <tr><td>Temat: <input type=\"text\" name=\"temat\"></td></tr>
  19. <tr><td>Tresc: <textarea name=\"tresc\" rows=\"6\"></textarea></td></tr>
  20. <tr><td>Pseudo: <input type=\"text\" name=\"autor\"></td></tr>
  21. <tr><td>E-Mail: <input type=\"text\" name=\"mail\"></td></tr>
  22. <tr><td><select name=\"kategoria\">
  23. <option value=\"klub\">Klub
  24. <option value=\"strona\">Strona
  25. <option value=\"reszta\">Reszta
  26. </select></td></tr>
  27. <tr><td><input type=\"submit\" value=\"Wyślij\"></td></tr></table></form>
  28. </body>
  29. </html>
Fipaj
Na końcu selekta WHERE kategoria = '{$_GET['kategoria']}'

A link powinien wyglądać tak: odczyt_kat.php?kategoria=nazwa_kategorii

Zrób jeszcze plik odczyt_caly.php, który odczytuje wszystkie najnowsze newsy - to ma być kopia tego na górze tak jak jest teraz, a ten nazwij odczyt_kat.php

Nadążasz??
kemsi
Pewne, że zrozumiałem to co napisałeś. Zrobiłem według twoich wskazówek, ale jak odczytuje to jest całą pusta strona. Nie wiem dlaczego, zrobiłem to według twoich wskazówek. Oto jak to zrobiłem:

plik odczytaj_kat.php:
  1. <?
  2. $poloncz=mysql_connect(&#092;"host\",\"login\",\"haslo\");
  3. $poloncz_query=mysql_query($poloncz);
  4.  
  5. mysql_select_db('news');
  6.  
  7. $select=mysql_query(&#092;"SELECT `id`,`category`,`temat`,`mail`,`autor`,`tresc` FROM `newsy` ORDER BY
     
  8. id` DESC WHERE category='\".$_GET['kategoria'].\"'\") or die;
  9. while($news=mysql_fetch_array($select)){
  10. echo \"<table border\"1\" width\"300\"><tr><td>\".$news['temat'].\"</td></tr>
  11. <tr><td>\".$news['tresc'].\"</td></tr>
  12. <tr><td>Dodał: <a href=\"mailto:\".$news['mail'].\"\">\".$news['autor'].\"</a></td></tr></table>\";
  13. }
  14. ?>


a oto jakie linki dałem w odczytaj.php:
  1. <?php
  2. echo &#092;"<a href=\"odczytaj_kat.php?kategoria=klub\">Kategoria Klub</a><br>\";
  3. ?>
Fipaj
Tak myślałem że coś będzie źle sad.gif

Niestety nie wiem co...

Kiedyś miałem z systemem newsów ten sam problem, i go nie rozwiązałem... Poddałem się i zmodyfikowałem sobie ScozNews...
kemsi
Ech, szkoda, że nie wiesz, bo już sie cieszyłem jak widziałem, że odpowiedziałeś a tu nic. Może ktoś inny z forum będzie wiedział i odpowie
soldat
Moim zdaniem widzisz białą stronę bo tu jest błąd składni SQL :
  1. SELECT `id`,`category`,`temat`,`mail`,`autor`,`tresc`
  2. FROM `newsy` ORDER BY `id` DESC WHERE category= ...)


ORDER używa się po WHERE a nie na odwrót
Sam napisałeś query ... or die, program robi to co mu kazałeś smile.gif

Pozdr.
kemsi
Dzięki, a teraz chcąc jeszcze rozbudowac ten system newsów pomyślałem sobie żeby zrobić "wiadomość dnia" a inaczej zwaną "najważnejszą wiadomością", tak żeby na samej górze ona będzie wyświetlana. Nie mam zbytnio pomysłu jak to zrobić. Napewno kiedyś widzieliście już cośtakiego. A robić to siębędzie np. tak: normalnie się dodaje newsa a potem można kliknąć "Wiadomośc Dnia" i ona będzie na samej górze, i będzie zastępować poprzednią.

Fipaj - teraz widzisz jaki błąd robiłeś? Może w ogóle na żadnym takim forum się nie pytałeś? winksmiley.jpg "Kto pyta nie błądzi". tongue.gif
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-2024 Invision Power Services, Inc.