Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Zapytanie do bazy
Forum PHP.pl > Forum > Przedszkole
stefan_precz
  1. <?php
  2.  
  3. $links = mysql_db_query($nazwa_bazy, &#092;"SELECT * FROM katalog_linki ORDER BY id DESC LIMIT 10\") or die(\"wystapił błąd: <b>\".mysql_error().\"</b>\");
  4. while ($row = mysql_fetch_array($links))
  5. ?>


tak wygląda zapytanie, które wyciąga 10 najnowszych wpisów do katalogu, chcę przerobić to tak żeby wyciągał 10 najnowszych wpisów z katalogu ale z pominięciem jednej kategorii, w katalogu jest 12 kategorii i chcę właśnie aby z jednej z nich nie wyświetlało nowych wpisów, może mi ktoś podpowiedzieć jak powinno wyglądać zapytanie.
crash
  1. SELECT *
  2. FROM katalog_linki WHERE kategoria != "niechciana_kategoria"/id_kategorii ORDER BY id DESC LIMIT 10

W zależności od tego jak masz oznaczone kategorie użyj albo jej nazwy albo id.
stefan_precz
  1. <?php
  2. SELECT * FROM katalog_linki WHERE kategoria != &#092;"Zaprzyjaźnione\" ORDER BY id DESC LIMIT 10
  3. ?>
czyli zapytanie ma wyglądać tak ? bo jeśli tak to nie działa a id kategorii to 18
crash
Użyj poprawnej nazwy kolumny z id/nazwą kategorii i porównaj ją z niechcianą wartością.
stefan_precz
tylko ze kategorie zapisywane są w innej tabeli nazywa sie ona katalog_kategorie a w tabeli katalog_linki struktura wygląda tak id kategoria opis link. więc jak to rozwiązać gdy id 18 to id kategorii niechcianej ale z innej tabeli a to zapytanie zadajemy tabeli katalog_linki
tiraeth
  1. SELECT *
  2. FROM katalog_linki WHERE id_kategoria != 18 ORDER BY id DESC LIMIT 10


zamiast id_kategoria podaj nazwe kolumny z identyfikatorami kategorii z tabeli katalog_linki
crash
@Tiraeth: Kategorie są w innej tabeli...

  1. SELECT l.*
  2. FROM katalog_linki AS l, kategorie AS k
  3. WHERE k.id != 18
  4. ORDER BY l.id DESC LIMIT 10


No ale jeśli w tabeli katalog_linki masz komórke: kategoria, to czemu nie dać po prostu:
  1. SELECT *
  2. FROM katalog_linki WHERE kategoria != 18
  3. ORDER BY id DESC LIMIT 10
stefan_precz
  1. SELECT *
  2. FROM katalog_linki WHERE kategoria != 18
  3. ORDER BY id DESC LIMIT 10
niestety gdy dam takie zapytanie nadal wyświetla wpisy z tej kategorii. W tabeli katalog_linki jest komórka kategorie ale nie jest jej przypisane zadne ID a tutaj eliminujemy ją poprzez id, więc pomyślałem zeby eliminować ją przez nazwę i zrobiłem tak
  1. SELECT *
  2. FROM katalog_linki WHERE kategoria != "zaprzyjaźnione" ORDER BY id DESC LIMIT 10
ale tez nie działa
crash
Dobra to może najpierw dowiedz się jakie dane masz w tabelach, to bardzo ułatwi sprawę, bo jak strzelasz co tam moze być to tak wątpie, żeby Ci się udało.
stefan_precz
no więc struktura wygląda tak:
tablea: katalog_linki a w nim komórki
id katagoria opis link
tabela: katalog_kategorie a w nim komórki
id kategoria
crash
No i dalej nie wiadomo czym jest komórka kategoria w tabeli katalog_linki
Zakładając, że jest to id kategorii to:
  1. SELECT *
  2. FROM katalog_linki WHERE kategoria != 18 ORDER BY id DESC LIMIT 10

a jeśli nazwa to:
  1. SELECT *
  2. FROM katalog_linki WHERE kategoria != "zaprzyjaźnione" ORDER BY id DESC LIMIT 10

No i to musi działać. A jeśli nie będzie działać, to napisz chociaż do zwraca zapytanie, czy są jakieś błędy itp.
stefan_precz
komórka kategoria w tabeli katalog_linki jest nazwą kategorii
  1. SELECT *
  2. FROM katalog_linki WHERE kategoria != "zaprzyjaźnione" ORDER BY id DESC LIMIT 10
wiec ten kod powienien działać ale nie działa wywala taki błąd
Kod
Parse error: parse error, unexpected T_STRING in /alt/home/webmaster.dyk/html/nowewst11.php on line 9
crash
O rany... Przecież wewnątrz " " musisz uciekać od cydzysłowiow:
  1. <?php
  2. $links = mysql_db_query($nazwa_bazy, &#092;"SELECT * FROM katalog_linki WHERE katalog != \"zaprzyjaźnione\" ORDER BY id DESC LIMIT 10\");
  3. ?>

I jeśli nazwa jest Zaprzyjaźnione to pisz tak, wielkość znaków jest istotna.
stefan_precz
tak wpisałem z dużej i to samo
crash
Co to samo? Podałem Ci przecież poprawny kod php więc jak może być ten sam błąd?
stefan_precz
  1. <?php
  2. $links = mysql_db_query($nazwa_bazy, "SELECT *
  3. FROM katalog_linki WHERE kategoria != \"Zaprzyjaźnione\" ORDER BY id DESC LIMIT 10 ");
  4. ?>
- to jest prawidłowy kod i niestety nie pomija dalej tych wpisów wyświetla dalej wszystko jak idzie
crash
A może spróbuj przez id kategorii z drugiej tabeli (dobre zapytanie podane było wcześniej), bo moze MySQL ma problemy z 'ź' w tej nazwie kategorii...
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.