Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Najszybszy sposób na wyszukiwanie ilości rekordów
Forum PHP.pl > Forum > PHP
pasTerzu
Jest sobie baza danych. Do nie muszę zrobić wyszukiwarke - różne kryteria m.in - KRAJ - jednak szef nie chce całej listy krajów jakie są na świecie a jedynie taką liste na której będą kraje z których pochodzi co najmniej jeden rekord.

Każdy kraj ma swoje ID przypisane u mnie w bazie. Jak narazie zrobiłem coś takiego:

  1. <?php
  2. if (mysql_num_rows(mysql_query(SELECT id FROM basic_info WHERE (type = 20 or type = 21) AND country = 12)) > 0) echo '<option value=12>Argentina</option>';
  3. if (mysql_num_rows(mysql_query(SELECT id FROM basic_info WHERE (type = 20 or type = 21) AND country = 13)) > 0) echo '<option value=13>Armenia</option>';
  4. if (mysql_num_rows(mysql_query(SELECT id FROM basic_info WHERE (type = 20 or type = 21) AND country = 14)) > 0) echo '<option value=14>Aruba</option>';
  5. ?>


itp itd ...
ale jako że krajów jest ponad 200 to cholernie długo się tworzy taka lista ... czy ktoś może coś podpowiedzieć jak można by to deko usprawnić ? (o ile wogóle się da) thx
hwao
Nie wiem ale jest cos takiego jak pętla for winksmiley.jpg
Cysiaczek
Nom. Pętla (ale nie taka, żeby się powiesić) jescze jedno - to się da zrobić jednym zapytaniem, nie dwustoma biggrin.gif
1. Manual
2. Manual
3. Manual
Pozdrawiam
pasTerzu
no w sumie smile.gif - zobaczymy jaki bedzie efekt - dzieki
phpion
Oj panowie, a nie lepiej:
  1. SELECT DISTINCT country FROM basic_info WHERE (type = 20 OR type = 21);

zapytanie to zwroci ci liste wartosci z kolumny country ale taka liste, ze wartosci nie beda sie powtarzaly. Czyli otrzymasz po prostu liste country ktore zostaly uzyte w tabeli basic_info.
Potem mozesz stworzyc tablice (lub osobna tabele - nie wiem jak tam masz) w ktorej przypiszesz dla kazdego country odpowiednia nazwe:
  1. <?php
  2. </php
  3. $countries = Array(1=> 'Bangladesz', 'Tadzykistan', 12 => 'Argentina', 'Armenia', 'Aruba');
  4. ?>

i w petli mozesz wyswietlic tylko te indexy (a w zasadzie wartosci), ktore zwrocilo ci zapytanie SQL.
hwao
  1. SELECT DISTINCT country FROM basic_info WHERE `type` IN( 20,21 );

winksmiley.jpg
phpion
hehe

PS: sorry za lekki OT ale nie moglem sie powstrzymac biggrin.gif
pasTerzu
Cytat(Cysiaczek @ 14.08.2006, 19:20 ) *
Nom. Pętla (ale nie taka, żeby się powiesić) jescze jedno - to się da zrobić jednym zapytaniem, nie dwustoma biggrin.gif
1. Manual
2. Manual
3. Manual
Pozdrawiam

dzieki dopiero jak przeczytalem twoj post to mnie oswiecilo ze distinctem to przecie sie zrobi ladnie dzieki za oswiecenie smile.gif
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.