Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php][mysql] Index/numer rekordu
Forum PHP.pl > Forum > PHP
SpamerZOtwocka
Czy istnieje jakiś sposób na sprawdzenie indexu/numeru rekordu? Tzn. którym jest z kolei który spełnia wymogi zapytania?

Mam tabelę, a w niej miedzy innymi numer_osoby.

I teraz potrzebuję pozycję/numer/index rekordu gdzie osoba ma numer XXX. Niestety nie moge po prostu napisać select numer _osoby from tabela, bo potrzebuje tej pozycji po odfiltrowaniu pewnych danych.

Konkretnie chodzi o znalezenie pozycji tego rekordu (czy jest pierwszy, drugi czy dziesiąty) wśród danych zwróconych przez to zapytanie.
Robert007
zapytanie MYSQL?

  1. SELECT * FROM tabela WHERE id = numer
SpamerZOtwocka
Nie rozumiesz.

Przyklad:
SELECT numer_osoby FROM tabela WHERE wiek<=1 AND costam=costam ORDER By 'miejsce zamieszkania'
i to zpytanie zwraca mi np. 50 wyników posegregowanych wedlug miejsca zamieszkania.
Czyli mam takie wyniki:
(...)
1234455
1234
653
56785
66
44565
654
(...)
I teraz chce POZYCJĘ rekordu gdzie numer równa się 66.
Czyli w tym wypadku:
(...)
1234455 <- 1 pozycja
1234
653
56785
66 <-piąta pozycja ( tego szukam)
44565
654
(...)
Darti
  1. $count=0;
  2. while($row = mysql_fetch_array($wynik)){
  3. $count++;
  4. if($row['numer_osoby']==66) echo "znalazłem na $count pozycji";
  5. }
darko
Zakładam, że wyciągnięte dane trzymasz w tablicy, np. o nazwie $dane, więc
  1. $pozycja = array_search('66', $dane);
lub
  1. $pozycja = array_search('66', $dane['numer']);
w zależności od tego, jak dokładnie zbudowana jest tabela, a co za tym idzie jak wygląda tablica z wyciągniętymi danymi.
SpamerZOtwocka
Właśnie chodzi o to żeby nie pobierac tych wszystkich danych jakie generuje to zapytanie a jednynie pozycje tego jednego rekordu. W niektórych przypadkach zapytanier to generuje kilka tysięcy danych, a mi chodzi tylko o pozycję jednego z nich. Myślałem raczej o jakiejs f-cji w mysql a nie kodzie php
darko
To:
Cytat(SpamerZOtwocka @ 27.12.2009, 19:22:42 ) *
Właśnie chodzi o to żeby nie pobierac tych wszystkich danych jakie generuje to zapytanie a jednynie pozycje tego jednego rekordu. W niektórych przypadkach zapytanier to generuje kilka tysięcy danych, a mi chodzi tylko o pozycję jednego z nich. Myślałem raczej o jakiejs f-cji w mysql a nie kodzie php

przeczy temu:

Cytat
Niestety nie moge po prostu napisać select numer _osoby from tabela, bo potrzebuje tej pozycji po odfiltrowaniu pewnych danych.

Albo ja czegoś nie rozumiem, albo przeczysz sam sobie. Może spróbuj jeszcze raz dokładnie wytłumaczyć o co Ci chodzi.
SpamerZOtwocka
Listing:
SELECT numer_osoby FROM tabela WHERE wiek<=1 AND costam=costam ORDER By 'miejsce zamieszkania'
i to zpytanie zwraca mi np. 50 wyników posegregowanych wedlug miejsca zamieszkania.
Czyli mam takie wyniki:
(...)
1234455
1234
653
56785
66
44565
654
(...)
I teraz chce POZYCJĘ rekordu gdzie numer równa się 66.
Czyli w tym wypadku:
(...)
1234455 <- 1 pozycja
1234
653
56785
66 <-piąta pozycja (TO JEST jedyna rzecz na której mi zależy w całej operacji)
44565
654
(...)

Rozwiazanie jakie proponujecie to ostatecznosc. Mam pobierać 4,5 tyś rekordów żeby określić położenie jedengo z nich? Myślałem o czymś bardziej ambitnym.

Inaczej mówiąc jak przekształcić 'listing' żeby był jak najbardziej wydajny. Najlepiej jakby było to jedno zapytanie mysql.
Darti
hmm to skorzystaj z CREATE TEMPORARY TABLE i jako jedną z kolumn zrób indeks_temp z auto_increment a drugą wynik Twojego zapytania, następnie wydaj zapytanie SELECT indeks_temp FROM tabela_temp where numer_osoby = 66
Pamiętać należy, że to wymaga persistent connection (mysql_pconnect).
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.