Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP] Pobieranie kilku rekordów bez pętli
Forum PHP.pl > Forum > Przedszkole
troian
Witam, mam w bazie danych tabelkę oto jak wygląda ona:

| ID | ID_KONTA | OSIAGNIECIE |

rekordy w bazie wyglądają następująco:

| 1 | 25 | czas_1 |
| 1 | 25 | czas_2 |
| 1 | 25 | czas_3 |
| 1 | 25 | czas_4 |

Jak widać do jednego konta mamy przypisane kilka rekordów, potrzebuje wyciągnąć wszystkie rekordy z mysql'a jednak nie mogę do tego wykorzystać pętli while
I tutaj jest moje pytanko jak mam przerobić tak to zapytanie aby samo pobrało wszystkie rekordy z bazy danych:
  1. $zap_osiagniecia = "SELECT * FROM ".BAZA.".osiagniecia WHERE id_konta = '".$_SESSION['id']."'";
slash^
Pokaż jak chciałbyś otrzymać te dane (w jakiej formie danych) w php
mmmmmmm
GROUP_CONCAT
nospor
Cytat
jednak nie mogę do tego wykorzystać pętli while
Nauczyciel zabronił? Bo jeśli nie, to bez żadnego problemu możesz uzyc pętle WHILE
troian
Cytat(nospor @ 20.11.2014, 07:48:15 ) *
Nauczyciel zabronił? Bo jeśli nie, to bez żadnego problemu możesz uzyc pętle WHILE


mam poprostu coś takiego

wynik z mysql'a

if($echo['osiagniecie'] == 'czas_1')
{
echo 'Spędzony czas na serwerze 1 Godzina Zdobyto Osiągnięcie';
}else{
echo 'Spędzony czas na serwerze 1 Godzina Nie zdobyto osiągnięcia';
}

i mam tak z 50 osiągnięć wypisanych więc jak to do pętli włożyć? będzie mi generować tych 50 wpisów 50 razy...
nospor
A kto ci broni pobrac w petli WHILE wszystkie rekordy, wynik dopisywac do jednej zmiennej a dopiero potem IF zrobic na tej jednej zmiennej? Bez sensu jest dawac ten IF w petli
troian
Cytat(nospor @ 20.11.2014, 11:38:01 ) *
A kto ci broni pobrac w petli WHILE wszystkie rekordy, wynik dopisywac do jednej zmiennej a dopiero potem IF zrobic na tej jednej zmiennej? Bez sensu jest dawac ten IF w petli


nie rozumiem, mam w pętlę dać mysql_query?
nospor
Jakie mysql_queryw srodku while....
Umiesz pobrac rekordy z bazy przy pomocy WHILE? Jak umiesz, to widziales tam gdzies w srodku mysql_query? Jak nie umiesz, to sie naucz, w manualu masz przyklady przy mysql_fetch_array
troian
Cytat(nospor @ 20.11.2014, 11:47:43 ) *
Jakie mysql_queryw srodku while....
Umiesz pobrac rekordy z bazy przy pomocy WHILE? Jak umiesz, to widziales tam gdzies w srodku mysql_query? Jak nie umiesz, to sie naucz, w manualu masz przyklady przy mysql_fetch_array


No ja pętlę pisze w taki sposób:

$zapytanie = mysql_query("SELECT * FROM ...");
while($echo = mysql_fetch_assoc($zapytanie))
{
$echo['osiagniecia'];
}
nospor
No brawo. I tak ma byc.
No i teraz w tej petli masz zapisywac to co chcesz do zmiennej albo tablicy

  1. $zapytanie = mysql_query("SELECT * FROM ...");
  2. $tab = array()
  3. while($echo = mysql_fetch_assoc($zapytanie))
  4. {
  5. $echo['osiagniecia'];
  6. $tab[$echo['osiagniecia']] = 1;
  7. }

Teraz w tablicy $tab masz unikalne osiagniecia. Mozesz sobie teraz z tym zrobic co chcesz
troian
Cytat(nospor @ 20.11.2014, 11:52:14 ) *
No brawo. I tak ma byc.
No i teraz w tej petli masz zapisywac to co chcesz do zmiennej albo tablicy

  1. $zapytanie = mysql_query("SELECT * FROM ...");
  2. $tab = array()
  3. while($echo = mysql_fetch_assoc($zapytanie))
  4. {
  5. $echo['osiagniecia'];
  6. $tab[$echo['osiagniecia']] = 1;
  7. }

Teraz w tablicy $tab masz unikalne osiagniecia. Mozesz sobie teraz z tym zrobic co chcesz


ale jak do tej tablicy mam dodać że jeżeli znajdzie czas_1 to pokaże że zdobyło a jak nie znalazł to wykona else?

'czas_1' => 'Zdobyto Osiągnięcie ', a gdzie else do każdego osiągnięcia?
nospor
Prosty IF i operacja na tablicy...

  1. if(isset($tab['czas_1']))
  2. {
  3. echo 'Spędzony czas na serwerze 1 Godzina Zdobyto Osiągnięcie';
  4. }else{
  5. echo 'Spędzony czas na serwerze 1 Godzina Nie zdobyto osiągnięcia';
  6. }

Tylko to ma byc poza petlą
troian
  1. $tablica = array();
  2. while($rangi = mysql_fetch_assoc($osiagniecia))
  3. {
  4. $rangi['osiagniecie'];
  5. $tablica[$echo['osiagniecia']] = 1;
  6. }
  7. if(isset($tablica['ranga_1']))
  8. {
  9. echo '<div align="center" class="os_on">'.$ranga_1.'Odblokowane!</div>';
  10. }else{
  11. echo '<div align="center" class="os_off">'.$ranga_1.'Zablokowane!</div>';
  12. }


Chyba coś źle zrozumiałem bo nie działa
nospor
facepalmxd.gif

Najpier wiersz zapisywales do $echo, teraz wiersz zapisujesz do $rangi.... Kurde, weź sie chlopie ogarnij i jak cos zmieniasz to zmieniaj wszedzie :/
troian
Cytat(nospor @ 20.11.2014, 12:02:15 ) *
facepalmxd.gif

Najpier wiersz zapisywales do $echo, teraz wiersz zapisujesz do $rangi.... Kurde, weź sie chlopie ogarnij i jak cos zmieniasz to zmieniaj wszedzie :/


Wcześniej pisałem query dlatego dawałem $echo teraz skopiowałem fragment kodu który zmodyfikowałem w pliku .php dlatego zamiast $echo jest $ranga.


a to $tablica[$echo['osiagniecia']] = 1; zedytowałem zaraz bo skopiowałem twój fragment tylko tutaj wgrałem przed poprawieniem na $ranga

Sory ^^
nospor
No dobra, ale tu:
$tablica[$echo['osiagniecia']] = 1;
nie zmieniles na ranga.. O to mi chodzi... POpraw i powiedz czy dziala czy nie i jak nei dziala to napisz laskawie czym sie objawia nie dzialanie...

I weź sie wkoncu zastosuj do tego tematu
Temat: Jak poprawnie zada pytanie
bo taka zabawa w kotka i myszke to nie zabawa...
troian
Tamto poprawiłem ale nie działa, oto cały fragment kodu php

  1. $ranga_1 ='<b>RANGA POZIOM 1</b><div style="margin-top:7px;"></div>Zdobądź 2000 PKT Rangi Dodatniej<br><br>';
  2. $ranga_2 ='<b>RANGA POZIOM 2</b><div style="margin-top:7px;"></div>Zdobądź 4000 PKT Rangi Dodatniej<br><br>';
  3. $ranga_3 ='<b>RANGA POZIOM 3</b><div style="margin-top:7px;"></div>Zdobądź 6000 PKT Rangi Dodatniej<br><br>';
  4. $ranga_4 ='<b>RANGA POZIOM 4</b><div style="margin-top:7px;"></div>Zdobądź 8000 PKT Rangi Dodatniej<br><br>';
  5. $ranga_5 ='<b>RANGA POZIOM 5</b><div style="margin-top:7px;"></div>Zdobądź 20000 PKT Rangi Dodatniej<br><br>';
  6. $zap_osiagniecia = "SELECT * FROM ".BAZA_PLAYER.".osiagniecia WHERE id_konta = '".$_SESSION['id']."'";
  7. $osiagniecia = mysql_query($zap_osiagniecia, $polaczenie);
  8. $tablica = array();
  9. while($rangi = mysql_fetch_assoc($osiagniecia))
  10. {
  11. $rangi['osiagniecie'];
  12. $tablica[$rangi['osiagniecia']] = 1;
  13. }
  14. if(isset($tablica['ranga_1']))
  15. {
  16. echo '<div align="center" class="os_on">'.$ranga_1.'Odblokowane!</div>';
  17. }else{
  18. echo '<div align="center" class="os_off">'.$ranga_1.'Zablokowane!</div>';
  19. }
  20. if(isset($tablica['ranga_5']))
  21. {
  22. echo '<div align="center" class="os_on">'.$ranga_5.'Odblokowane!</div>';
  23. }else{
  24. echo '<div align="center" class="os_off">'.$ranga_5.'Zablokowane!</div>';
  25. }


Mimo iż w bazie mysql mam zdobyte dla danego konta raga_5 to wyświetla się jako zablokowane.
nospor
Prosilem bys zastosowal sie do tematu, do ktorego dalem ci linka. Jesli tego nie zrobisz, zamkne temat.

Tymczasem znajdz 10 roznic
$rangi['osiagniecie'];
$rangi['osiagniecia'];
troian
Cytat(nospor @ 20.11.2014, 12:09:59 ) *
Prosilem bys zastosowal sie do tematu, do ktorego dalem ci linka. Jesli tego nie zrobisz, zamkne temat.

Tymczasem znajdz 10 roznic
$rangi['osiagniecie'];
$rangi['osiagniecia'];


Dobra, chyba czas zacząć wcześniej chodzić spać i pić rano kawę... Dość głupio taki prosty błąd no nic wielkie dzięki Mistrzu za pomoc ^.^
nospor
Jakbys zastosowal sie do tematu, do ktorego prosilem, to bys na ekranie zobaczyl bledy informujace o tym bledzie...
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.