Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Pobranie kolejnego rekordu względem obecnego, MySQL
kiler129
post
Post #1





Grupa: Zarejestrowani
Postów: 566
Pomógł: 35
Dołączył: 21.06.2006

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


Witajcie!
Zagwozdka dotyczy bardziej SQL niż PHP. Mam sobie tabelę z 3ma polami: version, relnote, reldate; przechowuja kolejno wersję CMSu (np. 1.02), notkę wersji (np. wprowadzone zmiany) oraz datę wydania w formie timestampa.
I teraz gdy dostaję zapytanie o aktualizację najpierw sprawdzam, czy CMS który woła o update może być updatowany, tj czy taka wersja istnieje w bazie updatów (np. czy nie owołuje się wersja developerska które z zasady mają dezaktywowany autoupdate).
Wywołuję sobie
  1. $this->_dbObj->fetchFirst("SELECT * FROM `versions` WHERE `version` = :ver", array(":ver" => array("data" => $params["ver"], "dataType" => PDO::PARAM_STR)));
i sprawdzam czy zwróciło pusto czy dane, jeśli dane chcę sprawdzić czy jest nowa wersja ... i tu jest problem.
Gdyby numery wersji były kolejne wszystko byłoby OK ale nie chcę się tak ograniczać.
Da się pobrać (tzn. jak ;]) rekord następny względem tego sortując po kolumnie verion?
Dodanei pola auto increment też tu nic nie da - muszę zakładać, że zdarzy się sytuacja wypadnięcia rekordu.

EDIT:
Problem rozwiązany prosto jak budowa cepa smile.gif

  1. <?php
  2. $dta = $this->_dbObj->fetchAll("SELECT * FROM `versions` WHERE `version` >= :ver ORDER BY `version` ASC LIMIT 0,2", array(":ver" => array("data" => $params["ver"], "dataType" => PDO::PARAM_STR)));
  3. if($dta===false) {
  4. //Blad bazy
  5.  
  6. } elseif(empty($dta)) {
  7. //Brak wersji w bazie
  8.  
  9. } elseif(count($dta) == 1) {
  10. //Wersja jest aktualna
  11.  
  12. } elseif(count($dta) == 2) {
  13. //Istnieje nowsza wersja
  14.  
  15. } else {
  16. //Hmm ... chyab to nie moze sie wykonac?
  17. }


Ten post edytował kiler129 31.01.2011, 03:05:28


--------------------
flexiCMS v2 [|||||||+--] 75% done
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 Aktualny czas: 20.08.2025 - 01:48