Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP][MYSQL] Krzaczenie sie kod highscore
Caus
post
Post #1





Grupa: Zarejestrowani
Postów: 23
Pomógł: 3
Dołączył: 5.02.2009

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


  1. <?php
  2. $zapytanie="SELECT punk FROM skills ORDER BY punk DESC LIMIT 10 ";
  3.   $zapytanie=mysql_query($zapytanie) or die(mysql_error());
  4.  
  5.   $arr = mysql_fetch_array($zapytanie);
  6.  
  7. echo ($arr[0].'<br><BR>');
  8. ?>


Wywala pierwszy wynik dobry

jak daje $arr[1] nie pokazuje już nic, a pozostałych 9 wyników które miał wyciągnąć z mysql nie ma.

jak w phpmyadmin wywołuje "SELECT punk FROM skills ORDER BY punk DESC LIMIT 10" to mam wszystkie 10

Przypomnę, że chodzi o to żeby pobrało 10 wyników i utworzyło z nich tablice $arr[0]. $arr[1] itd z kolejnymi wynikami (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Zmiana pytania, bo bez sensu zakładać nowy temat tyczący się tego samego.
@pitrooo89: dostaniesz plusa tak czy tak, tylko chce żeby nie zmieniało koloru tematu na razie (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Ave

Ten post edytował Caus 8.02.2009, 13:44:03
Powód edycji: [erix] stosuj odpowiednie bbcode
Go to the top of the page
+Quote Post
piotrooo89
post
Post #2


Newsman


Grupa: Moderatorzy
Postów: 4 005
Pomógł: 548
Dołączył: 7.04.2008
Skąd: Trzebinia/Kraków




Cytat(Caus @ 7.02.2009, 15:18:24 ) *
Kod
    while($a = mysql_fetch_array($zapytanie))
    {
    $arr[] = $a;
    }


wstawiasz tablice do tablicy...

Ten post edytował piotrooo89 7.02.2009, 15:24:51
Go to the top of the page
+Quote Post
Caus
post
Post #3





Grupa: Zarejestrowani
Postów: 23
Pomógł: 3
Dołączył: 5.02.2009

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


  1. <?
  2.  
  3. require('conn.php');
  4.   $zapytanie="SELECT punk FROM skills ORDER BY punk DESC LIMIT 10 ";
  5.   $zapytanie=mysql_query($zapytanie) or die(mysql_error());
  6.  
  7.   $arr[] = mysql_fetch_array($zapytanie);
  8.   sort($arr);
  9.  
  10.      $i=1;
  11.      while($i<11)
  12.      {
  13.      $zapytanie="SELECT id FROM skills WHERE punk='$arr[$i]'";
  14.      $temp=mysql_query($zapytanie) or die(mysql_error());
  15.      $temp=mysql_fetch_array($temp);
  16.      $id[$i]=$temp['id'];
  17.      $i++;
  18.       }
  19.         $i=1;
  20.         while($i<11)
  21.         {
  22.         $zapytanie="SELECT login FROM gracz WHERE id='$id[$i]'";
  23.         $temp=mysql_query($zapytanie) or die(mysql_error());
  24.         $temp=mysql_fetch_array($temp);
  25.         $login[$i]=$temp['login'];
  26.         $i++;
  27.         }
  28.        
  29.      $i=1;
  30.      while($i<11)
  31.      {
  32.      echo($i." ".$login[$i].' skill: '.$arr[$i].'<br>');
  33.      $i++;
  34.      }
  35.      
  36. ?>


Poprawiłem to tak - ale dalej coś jest źle, bo login[$i] jest zawsze równy 1, a arr[$i] null (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Ave

Ten post edytował erix 7.02.2009, 16:20:02
Powód edycji: [erix] jw
Go to the top of the page
+Quote Post
piotrooo89
post
Post #4


Newsman


Grupa: Moderatorzy
Postów: 4 005
Pomógł: 548
Dołączył: 7.04.2008
Skąd: Trzebinia/Kraków




mysql_fetch_array to jest już tablica.

jak zrobisz tak:
  1. <?php
  2. $arr[] = mysql_fetch_array($zapytanie);
  3. ?>

to będzie błąd.

zrób tak:
  1. <?php
  2. $arr = mysql_fetch_array($zapytanie);
  3. ?>


i teraz w zmiennej $arr masz tablice danych z bazy.
Go to the top of the page
+Quote Post
Caus
post
Post #5





Grupa: Zarejestrowani
Postów: 23
Pomógł: 3
Dołączył: 5.02.2009

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


Dobra poprawiłem pierwszego posta, żeby od razu było wiadomo o co chodzi (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Ave
Go to the top of the page
+Quote Post
Crozin
post
Post #6





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


Indeksy w tablicy zaczynają się od zera nie jedynki. Jeżeli nie ma jakiegoś konkretnego i sensownego powodu dla korzystania z numerycznych używaj tekstowych indeksów.
Mysql_fetch_array() zwraca jeden rekord i przeskakuje na następny - tak więc musisz to wywoływać w pętli.
Staraj się unikać wywoływania zapytań w pętlach

  1. <?php
  2. $result = array();
  3. $sql = "SELECT punk, id, login FROM skills ORDER BY punk DESC LIMIT 10";
  4. $query = mysql_query($sql);
  5. while($row = mysql_fetch_assoc($query)){
  6.  $result[] = $row;
  7. }
  8.  
  9. echo '<pre>' . print_r($result, true) . '</pre>';
  10. ?>
Go to the top of the page
+Quote Post
Caus
post
Post #7





Grupa: Zarejestrowani
Postów: 23
Pomógł: 3
Dołączył: 5.02.2009

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


Ok doszedłem sam - dzięki (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Ave

Ten post edytował Caus 8.02.2009, 15:30:44
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 24.08.2025 - 21:37