Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: tablice array(); a LIMIT
Forum PHP.pl > Forum > PHP
SN@JPER^
Witam,

mam pewien kod:

  1. <?php
  2. $sql = "SELECT * FROM clubs WHERE premiership='1'";
  3. $query = @mysql_query($sql);
  4. $rows = @mysql_num_rows($query);
  5.  
  6. unset($team);
  7. $team = array();
  8.  
  9.  
  10. while($fetch = @mysql_fetch_array($query))
  11. {    
  12.    $id = htmlspecialchars(stripslashes($fetch['id']));
  13.    $club = htmlspecialchars(stripslashes($fetch['nazwa']));
  14.    $team[$club] = array('name'=>$club, 'm'=>0, 'w'=>0, 'r'=>0, 'p'=>0, 'br_p'=>0, 'br_m'=>0, 'stosunek'=>0, 'pkt'=>0);
  15. }
  16.    $ile_meczy = sql_rows("SELECT * FROM terminarz");
  17.    
  18.    $sql_match = "SELECT * FROM terminarz WHERE wynik <>':'";
  19.    $query_match = @mysql_query($sql_match);
  20. while($fetch_match = @mysql_fetch_array($query_match))
  21. {    
  22.    $id_gospodarz = htmlspecialchars(stripslashes($fetch_match['id_gospodarz']));
  23.    $id_gosc = htmlspecialchars(stripslashes($fetch_match['id_gosc']));
  24.    $wynik = htmlspecialchars(stripslashes($fetch_match['wynik']));
  25.    
  26.    $sql_nazwa_gospodarz = "SELECT nazwa FROM clubs WHERE id='".$id_gospodarz."'";
  27.    $query_nazwa_gospodarz = @mysql_query($sql_nazwa_gospodarz);
  28.    $fetch_nazwa_gospodarz = @mysql_fetch_array($query_nazwa_gospodarz);
  29.    $gospodarz = htmlspecialchars(stripslashes($fetch_nazwa_gospodarz['nazwa']));
  30.    
  31.    $sql_nazwa_gosc = "SELECT nazwa FROM clubs WHERE id='".$id_gosc."'";
  32.    $query_nazwa_gosc = @mysql_query($sql_nazwa_gosc);
  33.    $fetch_nazwa_gosc = @mysql_fetch_array($query_nazwa_gosc);
  34.    $gosc = htmlspecialchars(stripslashes($fetch_nazwa_gosc['nazwa']));
  35.    
  36.    $ex = explode(":", $wynik);
  37.    
  38.        if($ex[0]>$ex[1])
  39.        {
  40.                    
  41.                    $team[$gospodarz]['m']++;
  42.                    $team[$gospodarz]['w']++;
  43.                    $team[$gospodarz]['br_p'] += $ex[0];
  44.                    $team[$gospodarz]['br_m'] += $ex[1];
  45.                    $team[$gospodarz]['stosunek'] += ($ex[0] - $ex[1]);
  46.                    $team[$gospodarz]['pkt'] += 3;
  47.                    
  48.                    $team[$gosc]['m']++;
  49.                    $team[$gosc]['p']++;
  50.                    $team[$gosc]['br_p'] += $ex[1];
  51.                    $team[$gosc]['br_m'] += $ex[0];
  52.                    $team[$gosc]['stosunek'] += ($ex[1] - $ex[0]);
  53.        }
  54.        
  55.        elseif($ex[0]==$ex[1])
  56.        {
  57.                    $team[$gospodarz]['m']++;
  58.                    $team[$gospodarz]['r']++;
  59.                    $team[$gospodarz]['br_p'] += $ex[0];
  60.                    $team[$gospodarz]['br_m'] += $ex[1];
  61.                    $team[$gospodarz]['stosunek'] += ($ex[0] - $ex[1]);
  62.                    $team[$gospodarz]['pkt']++;
  63.  
  64.                    $team[$gosc]['m']++;
  65.                    $team[$gosc]['r']++;
  66.                    $team[$gosc]['br_p'] += $ex[1];
  67.                    $team[$gosc]['br_m'] += $ex[0];
  68.                    $team[$gosc]['stosunek'] += ($ex[0] - $ex[1]);
  69.                    $team[$gosc]['pkt']++;
  70.        }
  71.        
  72.        else
  73.        {
  74.                    
  75.                    $team[$gospodarz]['m']++;
  76.                    $team[$gospodarz]['p']++;
  77.                    $team[$gospodarz]['br_p'] += $ex[0];
  78.                    $team[$gospodarz]['br_m'] += $ex[1];
  79.                    $team[$gospodarz]['stosunek'] += ($ex[0] - $ex[1]);
  80.                    
  81.                    
  82.                    $team[$gosc]['m']++;
  83.                    $team[$gosc]['w']++;
  84.                    $team[$gosc]['br_p'] += $ex[1];
  85.                    $team[$gosc]['br_m'] += $ex[0];
  86.                    $team[$gosc]['stosunek'] += ($ex[1] - $ex[0]);
  87.                    $team[$gosc]['pkt'] += 3;
  88.        }
  89.    
  90.    
  91.  
  92. }
  93.  
  94.  
  95. $pkt = array();
  96. $stosunek = array();
  97. $name = array();
  98.  
  99. foreach($team as $value)
  100. {
  101.  $pkt[]=$value['pkt'];
  102.  $stosunek[]=$value['stosunek'];
  103.  $name[]=$value['name'];
  104. }
  105.  
  106. array_multisort($pkt, SORT_DESC, $stosunek, SORT_DESC, $name, SORT_ASC, $team);
  107.  
  108. ?>
  109.  
  110.  
  111.  
  112. <div class="mini_table">
  113.  <div class="mini_table_p">.p</div>
  114.  <div class="mini_table_druzyna">Drużyna</div>
  115.  <div class="mini_table_pkt">Pkt</div>
  116. </div>
  117.  
  118. <?php
  119.  
  120. $i;
  121. foreach($team as $value)
  122. {
  123. $i++;
  124.  
  125. if($i == "6")
  126. {
  127.  break;
  128. }
  129.  
  130.        if($i%2)
  131.        {
  132.          $styl="_01";
  133.        }
  134.        
  135.        else
  136.        {
  137.          $styl="_02";
  138.        }
  139.        
  140.        $sql_club = "SELECT nazwa FROM clubs WHERE id='".$id_club."'";
  141.        $query_club = @mysql_query($sql_club);
  142.        $fetch_club = @mysql_fetch_array($query_club);
  143.        
  144.        $club = htmlspecialchars(stripslashes($fetch_club['nazwa']));  
  145.        
  146.      
  147.        
  148. ?>
  149.  
  150.  
  151. <div class="mini_table_01">
  152.  <div class="mini_table_p"><?=$i?>.</div>
  153.  <div class="mini_table_druzyna"><?=$value['name']?></div>
  154.  <div class="mini_table_pkt"><?=$value['pkt']?></div>
  155. </div>
  156.  
  157. <?php
  158. }
  159.  
  160. ?>



aby wyświetlić tylko 5 wartości z tablicy posłużyłem się w foreach:

  1. <?php
  2. if($i == "6")
  3. {
  4.  break;
  5. }
  6. ?>


Teraz np. potrzebuje wyświetlić także wartość o numerze $i == 11, czyli poza limitem 5. W jaki sposób to osiągnąć, aby wyświetlić na samym końcu wartość o $i == 11, przy limicie 5?

1. Wartosc 1
2. Wartosc 2
3. Wartosc 3
4. Wartosc 4
5. Wartosc 5
----------
11. Wartosc 11
maniekl2
array_keys()

Przykładowo:
  1. <?php
  2. $tablica = array();
  3. $tablica['pierwszy'] = 'pierwszy';
  4. $tablica['drugi'] = 'drugi';
  5. $nowa = array_keys($tablica);
  6. echo $nowa['1']; // w twoim wypadku będzie 11
  7. ?>
SN@JPER^
Ubogo sprecyzowałem swój post. Nie zawsze będzie to np. 11 - wylicza to skrypt. Może to być i numer 14. Wszystko zależy od warunku:

  1. <?php
  2. //[...]
  3. $i;
  4. foreach($team as $value)
  5. {
  6. $i++;
  7.  
  8. if($id_klub == "2") // W TYM MIEJSCU JAKBY POSZUKUJEMY TEGO NUMERU
  9. {
  10.  $search = $i;  //ZAPISUJE DO ZMIENNEJ $search LICZBĘ, KTÓRĄ SZUKAM
  11. }
  12.  
  13.  
  14.  
  15. if($i == "6")
  16. {
  17. break;
  18. }
  19. //[...]
  20. ?>

Jest jeden problem, ponieważ zrobiłem bardzo potrzebny mi limit

  1. <?php
  2. if($i == "6")
  3. {
  4. break;
  5. }
  6. ?>


Da się uzyskać zamierzany efekt?
maniekl2
Jeżeli kod odpowiedzialny za szukanie tego id będzie w pętli foreach() to niestety nie uda ci się wywołać elementu który jest dalej niż 6.
1.Wytłumacz po co dokładnie ten limit to może inaczej to wszytko skonstruujemy.
2. Pomyśl czy ten kod odpowiedzialny za szukanie musi być w tej pętli.

A jeżeli chodzi o ten array_keys to:

  1. <?php
  2. array_keys($team);
  3. ?>

przypisuje po kolei klucze tabeli $team.
Kluczem pierwszego elementu będzie 0, drugiego 1 itd.
Czyli jeżeli chcesz wyświetlić 11 element tablicy team wykonujesz ten kod:

  1. <?php
  2. $nowe=array_keys($team);
  3. $nowe['10']; //pokaże 11 element
  4. ?>
SN@JPER^
Cytat
Jeżeli kod odpowiedzialny za szukanie tego id będzie w pętli foreach() to niestety nie uda ci się wywołać elementu który jest dalej niż 6.
1.Wytłumacz po co dokładnie ten limit to może inaczej to wszytko skonstruujemy.
2. Pomyśl czy ten kod odpowiedzialny za szukanie musi być w tej pętli.


Po prostu mam tabele piłkarską, gdzie jest 20 drużyn, ten kod co wkleiłem w poprzednich postach jest odpowiedzialny, za mini tabelę, czyli np. 5 pierwszych drużyn. Jednakże oprócz tych 6 drużyn chciałbym również pokazać na jakim miejscu jest np. drużyna Manchester City, która zajmuje miejsce dalsze, aniżeli 6.

Tabela wyglądała by mniej więcej tak;

1. D
2. D
3. D
4. D
5. D
6. D
----------------
15. D(macnhester City - np.)

Pozdrawiam.
maniekl2
To ja bym nie używał do tego w ogóle array();
Wstawiłbym:
  1. <?php
  2. $sql = "SELECT * FROM clubs WHERE premiership='1' ORDER BY punkty DESC LIMIT 6; ";//dałem przykładowo punkty, bo domyślam się że chcesz od  najlepszego do najgorszego
  3. //[...]
  4. while($fetch = @mysql_fetch_array($query))
  5. {    
  6. // tutaj wyświetlanie odpowiednich danych np. w tabelce
  7. }
  8. if(isSet($_GET['klub'])) {
  9. $sql = "SELECT * FROM clubs WHERE premiership='1' AND nazwa= '".$_GET['klub']."' ";
  10. //[...]
  11. //dodatkowo wyświetl to  
  12. }
  13. ?>

Pola nazwa i punkty napisałem dla przykładu.

Tutaj zastosowałem GET żeby użytkownik mógł wybrać sobie co chce wyświetlić.
A jeżeli chodzi o wyświetlenie miejsca to poczytaj sobie ten temat:
Klik
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.