Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: zapytanie do bazy i warunki
Forum PHP.pl > Forum > PHP
oximus
Witam, to moj pierwszy post. Bardzo potrzebuje pomocy.
Oto moj problem, praktycznie nie potrafie go ruszyc. Prosze o jakies naprowadzenie, no chyba, ze znajdzie sie ktos, kto to machnie od reki ;]
Mam tabele "events" w bazie. Tabela ma kilka kolumn. Mnie interesuja kolumny: 'When', 'Text' i 'Prefix'. 'When' to pola typu 'timestamp', w ktorej jest data i czas, reszta kolumn normalna typu 'varchar'. Ok. Teraz, w kolumnie 'Prefix' są różne dane. W kazdym polu moze być jedna z czterech wartosci: (puste pole, +, -, *). Mnie interesuje ostatnie zdarzenie krytyczne sygnalizowane * lub +. Więc przeszukuję kolumne 'Prefix' od dołu sortując ją wg daty (a propos z tym tez mam problem, order by When nie dziala, nie wiem czemu). Lecac od dołu, napotykam pierwszy znak (pomijajac puste pola), jesli jest to gwiazdka to mam od razu wyswietlic komunikat o czasie zdarzenia (kolumna 'when') i zdarzeniu (kolumna 'text') odpowiadajace polu z gwiazdka. Tak samo jest z +. Jednak najwiekszy problem jest z minusem. Jesli ostatni znak to minus, wtedy szukam, ktorego plusa on resetuje (slowem minus zabija plusa o tym samym komunikacie w kolumnie text). Az do momentu gdy natrafie na niewyzerowanego plusa przez minusa lub trafie na gwiazdke. Czy ktos jest w stanie mi pomoc? Dziekuje. Mam nadzieje ze to jest w miare jasne.

Ok! juz wiem czemu 'When' nie dziala, to zastrzezony wyraz Mysql, zmienilem na Whenl i jest Ok.
Skoro nikt nie potrafi mi pomoc, to chociaz napiszcie jak mam znalezc ta pierwsza gwiazdke...jaki warunek lub petla? Potem sobie juz dam rade. POMOCY.
hawk
Możesz podać jakieś przykłady? I czy chcesz to przetwarzać w php, czy po stronie bazy danych. Jeżeli to drugie, pewnie lepsze będzie forum poświęcone SQL.
oximus
Chcę to przetwarzac przez php. Przyklady? Tzn o co Ci chodzi? Skupmy sie na tym na razie, ze mam sobie dwie kolumny "TEXT" i "PREFIX". W pierwszej jest 20 wpisow. W drugiej są trzy wpisy (gwiazdką zaznaczony jest wiersz np: 4,8,12) reszta jest pusta (NULL). Teraz, szukając od dołu (czyli napotykajac na rzad 12), chce odczytac tekst zapisany w kolumnie obok(TEXT) z rzedu znalezionego czyli 12. Prosciej nie umiem smile.gif. Dzieki ze chociaz jeden sie odezwal. Na razie mam zapytanie:
  1. <?php
  2.  
  3. $query='SELECT Prefix, Text FROM events WHERE Prefix=\"*\" ORDER BY Whenl DESC';
  4. $result = mysql_query($query) or die ('blad:' . mysql_error());
  5. ?>
hawk
Hmm, wyciągnąć tylko potrzebne wiersze z bazy danych raczej nie dasz rady. Chyba że zmienisz bazę, wtedy może jakaś procedura...

Więc zrzuć wszystko, co ma plusy, minusy i gwiazdki, a następnie obrabiaj w php. Jeżeli masz wypisać wszystkie gwiazdki i "niewyzerowane" plusy, to: znajdź wszystkie minusy, i dla każdego znalezionego minusa poszukaj i usuń z tablicy (jeżeli jest) odpowiedni wpis z plusem. Następnie wypisuj wszystko.

Mam nadzieję, że dobrze zrozumiałem, o co chodzi...
oximus
OK juz mam w zapytaniu dać po "DESC" LIMIT 1;
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.