Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: funkcje mysql kilka pytań
Forum PHP.pl > Forum > Bazy danych > MySQL
Apo
Witam
Mam taki problem z wyszukiwarką na bloga. Zapytanie wygląda następująco:
  1. <?php
  2.  
  3. "SELECT id, tytul, id_newsa FROM newsy WHERE id_newsa='' AND tytul LIKE '%$fraza%' OR wpis LIKE '%$fraza%' OR wpis_long LIKE '%$fraza%'"
  4.  
  5. ?>

No i mam sobie tabele w bazie, a wnie pole id_newsa. Domyślnie jest puste a jeśli nie jest to przechowuje id newsa który został skomentowany. No i przy wyszukiwaniu chciałem zrobić tak żeby przeszukiwał tylko pola gdzie id_newsa=''.
Ale mi to nie chodzi. Druga sprawa jak sie pozbyć tych Or-ów.

No i pytanie. Jaka jest różnica między mysql_fech_row a mysql_fetch_array :?:
crash
  1. id_newsa IS NULL


Cytat(Apo)
Druga sprawa jak sie pozbyć tych Or-ów.

Usunąć je po prostu? tongue.gif

Cytat(Apo)
Jaka jest różnica między mysql_fech_row a mysql_fetch_array

mysql_fech_row mysql_fetch_array
Apo
Cytat
QUOTE (Apo)
Druga sprawa jak sie pozbyć tych Or-ów.

Usunąć je po prostu?


No nie moge tongue.gif
Chce przeszukać podane tam pola ale żeby nie było tych or tylko jakis nawias albo coś ale mi to nie wychodzi.

\\\EDIT
crash:
To co podałes z tym IS NULL też mi nie działa.
Podam tu moje informacje dotyczące tabeli:

  1. <?php
  2. +-----------+-------------+------+-----+------------+----------------+
  3. | Field  | Type | Null | Key | Default | Extra |
  4. +-----------+-------------+------+-----+------------+----------------+
  5. | id | int(11)  | | PRI | NULL  | auto_increment |
  6. | data | varchar(10) | YES |  | 1137416873 | |
  7. | tytul  | varchar(70) | YES |  | NULL  | |
  8. | wpis | blob | YES |  | NULL  | |
  9. | wpis_long | blob | YES |  | NULL  | |
  10. | id_newsa | int(11)  | YES |  | NULL  | |
  11. | ip | int(11)  | YES |  | NULL  | |
  12. +-----------+-------------+------+-----+------------+----------------+
  13. ?>
track
OR jest wymagane, bo ustala alternatywe dla zapytania. Pobiera rekordy gdzie cos rowna sie xxx lub cos_innego = yyy. Dlatego OR jest wymagane jesli ma przeszukiwac kilka pol.
Apo
A nie wiecie czemu mi to is null dalej nie chodzi :?
Może przez to że jest zła konstrukcja zapytania albo cos. Bardzo mi na tym zależy a nie moge sobie z tym poradzić sad.gif
SongoQ
Cytat
A nie wiecie czemu mi to is null dalej nie chodzi :?


tabela
id | pole
1 NULL - NULL
2 '' - pusty string

  1. SELECT *
  2. FROM tabela
  3. WHERE pole IS NULL

zwraca rekord o id 2

  1. SELECT *
  2. FROM tabela
  3. WHERE pole = ''

zwraca rekord o id 1
Apo
No nadal nie chodzi, ake wiem co jest przyczyną. Gdy robie tak:
  1. <?php
  2. "SELECT id, tytul, id_newsa, wpis, wpis_long FROM newsy WHERE id_newsa='' "
  3. ?>

wszystko jest ok. Wyswietlane są tylko newsy.
Ale gdy zrobie tak:
  1. <?php
  2. "SELECT id, tytul, id_newsa, wpis, wpis_long FROM newsy WHERE id_newsa='' AND tytul LIKE '%$fraza%' OR wpis LIKE '%$fraza%' OR wpis_long LIKE '%$fraza%'"
  3. ?>

No to sa wyświetlane newsy i komentarze których ma nie być sad.gif((((
SongoQ
Cytat
No to sa wyświetlane newsy i komentarze których ma nie być sad.gif((((

Przeciez w tym zapytaniu nie ma komentarzy.
Apo
SongoQ:
pole id - to pole id wpisu do bazy czyli np newsa bądź komentarza.
pola id_newsa - jest puste gdy wpis to news a jeśli jest to komentarz to te pole przechowuje id newsa. Czyli np:
News ma id = 10 i skomentujemy go to komentarz ma tam swoje unikalne id i ma jeszcze id_newsa = 10.
No i potem przy wywołaniu długiej treści newsa robie zapytanie żeby wyświetlić komentarze:
SELECT * FROM newsy WHERE id_newsa='.$id.'
itd
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.