Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> tablice array(); a LIMIT
SN@JPER^
post 29.03.2009, 17:58:36
Post #1





Grupa: Zarejestrowani
Postów: 266
Pomógł: 0
Dołączył: 4.01.2007
Skąd: Szczecin

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


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
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 5)
maniekl2
post 29.03.2009, 18:38:43
Post #2





Grupa: Zarejestrowani
Postów: 162
Pomógł: 29
Dołączył: 6.04.2008

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


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. ?>


Ten post edytował maniekl2 29.03.2009, 18:39:22
Go to the top of the page
+Quote Post
SN@JPER^
post 29.03.2009, 19:21:18
Post #3





Grupa: Zarejestrowani
Postów: 266
Pomógł: 0
Dołączył: 4.01.2007
Skąd: Szczecin

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


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?

Ten post edytował SN@JPER^ 29.03.2009, 19:23:04
Go to the top of the page
+Quote Post
maniekl2
post 29.03.2009, 19:44:39
Post #4





Grupa: Zarejestrowani
Postów: 162
Pomógł: 29
Dołączył: 6.04.2008

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


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. ?>
Go to the top of the page
+Quote Post
SN@JPER^
post 29.03.2009, 19:55:10
Post #5





Grupa: Zarejestrowani
Postów: 266
Pomógł: 0
Dołączył: 4.01.2007
Skąd: Szczecin

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


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.
Go to the top of the page
+Quote Post
maniekl2
post 29.03.2009, 20:14:52
Post #6





Grupa: Zarejestrowani
Postów: 162
Pomógł: 29
Dołączył: 6.04.2008

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


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

Ten post edytował maniekl2 29.03.2009, 20:16:56
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 Wersja Lo-Fi Aktualny czas: 14.08.2025 - 10:16