Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Pętla, liczby co dwa.
Forum PHP.pl > Forum > Przedszkole
desavil
Witam.
Niestety to jest mój najsłabszy punkt w PHP - pętle.

W jaki sposób można zrobić, aby pętla wyświetlała dajny na to numery od 1000-2000 ale tylko parzyste, czyli: 1000, 1002, 1004, 1006 itp.
Dodatkowo każdy numer, aby był sprawdzany w bazie danych jeżeli jest w bazie danych to go nie wyświetla, jeżeli nie ma - wyświetla.

Pozdrawiam.
Ulysess
for($lp=2000;$lp<=4000;++$lp)
{

if($lp%2 == 0)
{
// tutaj dajesz zapytanie mysql w którym w where wstawiasz LP , astpnie używasz mysql_num_rows i robisz warunek if mysql_num_rows > 0) echo $lp;
}



}
desavil
Dzięki, działa smile.gif


PS. W zapytaniu SQL zamiast > 0 należy użyć <= 0
Ulysess
fakt sory,, moj oznaczał większe od 0 czyli istnieje a tutaj chodziło że nie istnieje wink.gif
thek
Taaa... I robisz kilka tysięcy zapytań do bazy niepotrzebnie. Wygeneruj sobie jedynie liczby parzyste od x do y i wyślij je w zapytaniu jako WHERE ... IN (...) lub pokombinuj po stronie bazy z zapytaniem używającym BETWEEN i MOD()
lobopol
Pomijam fakt, że w tym momencie siekniesz tylko 500 zapytań do bazy przy jednym wykonaniu skryptu. No i druga rzecz wykonasz o dwa razy za dużo przejść pętli:
  1. $i=1000;
  2. while($i<2000){
  3. echo $i;
  4. $i +=2;
  5. }

przy czymś takim pokusiłbym się o coś na zasadzie:
  1. $aId = range(1000,2000,2); //zapełnienie tablicy id parzystymi
  2. $sql = 'select id from users where id in('.implode(',',$aId).')'; //zapytanie wyciągające wszystkie id
  3. mysql_connect('localhost', 'root', '');
  4. mysql_select_db('nazwa_bazy');
  5. $result = mysql_query($sql);
  6.  
  7. while($row = mysql_fetch_assoc($result)) { //od 0 do 500 przejść zależnie od ilości w bazie
  8. if(in_array($row['id'], $aId)){
  9. unset($aId[(floor($row['id']-1000)/2)]); //tak wiem zarąbiste usuwanie klucza tongue.gif
  10. }
  11. }
  12. if(!empty($aId)){ //czy przypdakiem nie zostały wszystkie usunięte i nie ma nic do wyświetlenia
  13. foreach($aId as $value){ //od jednego do 500 przejść
  14. echo $value;
  15. }
  16. }
  17.  


To takie rozwiązanie na szybko, znacznie wydajniejsze
tehaha
wystarczy jedno proste zapytanie:
  1. SELECT id FROM tabela WHERE id> 1000 AND id < 1000 AND MOD(id,2) = 0
thek
Tehaha... Czyli dokładnie to co ja napisałem kilka postów wyżej słownie, tyle że zamiast dwóch warunków zasugerowałem BETWEEN wink.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.