Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Kwota wyswetlana z wszystkich kont.
Forum PHP.pl > Forum > PHP
Sign
Witam, zrobiłem w tabeli users pole kasa, aby pokazywalo ile pieniedzy ma dany uzytkownik.
do konta 1 dodalem 18 zl a do konta 2 dodalem 20 zl. Chcialem, zeby po prostu ta kasa wyswietlala sie inna u kazdego, a wyswietla mi sie wszystko na kazdym koncie czyli wychodzi z tego
1820 zł zamiast 18 zl na 1 koncie, a 20 zl na drugim koncie to to sie laczy i wyskakuje na kazdym koncie to samo..

http://www.csleague.xaa.pl/listaserwerow/index.php

kod

  1. <?
  2. require 'polacz.php';
  3.  
  4. $wynik = mysql_query("SELECT * FROM users order by kasa desc limit 0,2") or die('Błąd zapytania');
  5.  
  6. if(mysql_num_rows($wynik) > 0) {
  7.  
  8. while($kasa = mysql_fetch_assoc($wynik)) {
  9. echo '<b>'.$kasa['kasa'].'</b>';
  10. }
  11. echo '<a class="doladujtext" href="#">Doładuj konto</a>';
  12. }
  13.  
  14.  
  15.  
  16.  
  17. ?>
  18.  

prosze o pomoc

MESSIAH :)
Wywal pętle while bo ona się wykonuje dopóki znajduje kolumnę "kasa".
kapslokk
  1. SELECT * FROM users ORDER BY kasa DESC LIMIT 0,2

To zapytanie pobiera Ci wszystko z tabeli users, nie zależnie od tego jakiego użytkownika chcesz wyświetlić. Musisz dodać jakiegoś WHERE'a

@MESSIAH smile.gif
Pętla się wykonuje dopoki mysql_fetch_assoc($wynik) zwraca wiersz, a nie dopoki znajduje kolumne 'kasa'
Sign
Jak mam dodac tego where, i gdzie?
viking
Podstawa zawsze https://dev.mysql.com/doc/refman/5.7/en/select.html
MESSIAH :)
Cytat(kapslokk @ 17.08.2015, 11:39:44 ) *
@MESSIAH smile.gif
Pętla się wykonuje dopoki mysql_fetch_assoc($wynik) zwraca wiersz, a nie dopoki znajduje kolumne 'kasa'

Autor wyraźnie napisał że chce wyświetlić kwotę dla danego usera. Jeśli spojrzysz na jego kod to zauważysz że pętla będzie wyświetlać kolumnę klasa do póki są takie rekordy więc po kiego mu while?
kapslokk
Cytat(MESSIAH :) @ 17.08.2015, 17:30:00 ) *
Autor wyraźnie napisał że chce wyświetlić kwotę dla danego usera. Jeśli spojrzysz na jego kod to zauważysz że pętla będzie wyświetlać kolumnę klasa do póki są takie rekordy więc po kiego mu while?

A ja wyraźnie napisałem, że pętla się wykonuje dopoki mysql_fetch_assoc($wynik) zwraca wiersz, a nie dopoki znajduje kolumne 'kasa', ponieważ wg tego co napisałeś w momencie, kiedy kolumna kasa w którymś wierszu będzie pusta, pętla zostanie przerwana. Nigdzie nie wspomniałem, że pętla jest tam potrzebna lub nie.
Poza tym tak na upartego - jeżeli autor zbuduje poprawne zapytanie z WHERE to wybierze dokładnie jeden rekord, a wtedy nawet z tą pętlą wszystko zadziała ;)
nvb
Można na dwa sposoby.

Przekazać ID_USERA do zapytania i wyciągnąć tylko ten wiersz, który odpowiada kwocie danego użytkownika.

  1. $wynik = mysql_query("SELECT * FROM users where id_users = " . $id_usera) or die('Błąd zapytania');



Drugi sposób to w pętli while dodaj ifa w którym będziesz sprawdzał czy id usera jest równe id z pętli while i tylko tam daj echo dla kasy.



  1. <?
  2. require 'polacz.php';
  3.  
  4. $wynik = mysql_query("SELECT * FROM users order by kasa desc limit 0,2") or die('Błąd zapytania');
  5.  
  6. if(mysql_num_rows($wynik) > 0) {
  7.  
  8. while($kasa = mysql_fetch_assoc($wynik)) {
  9.  
  10. if($kasa['id_usera_czy_jak_masz_pole_w_bazie'] == $iduzytkownia_z_sesji_czy_skad_tam_je_trzymasz){
  11. echo '<b>'.$kasa['kasa'].'</b>';
  12. }
  13.  
  14. }
  15.  
  16. echo '<a class="doladujtext" href="#">Doładuj konto</a>';
  17. }
  18.  
  19.  
  20.  
  21.  
  22. ?>
  23.  




Pozdro:)
Sign
^ niestety ten kod wyzej nie pomogl

teraz wszystko mi znikko
a kod wyglada tak
  1. <?
  2. require 'polacz.php';
  3.  
  4. $wynik = mysql_query("SELECT * FROM users order by kasa desc limit 0,2") or die('Błąd zapytania');
  5.  
  6. if(mysql_num_rows($wynik) > 0) {
  7.  
  8. while($kasa = mysql_fetch_assoc($wynik)) {
  9.  
  10. if($kasa['id'] == $id){
  11. echo '<b>'.$kasa['kasa'].'</b>';
  12. }
  13.  
  14. }
  15.  
  16. echo '<a class="doladujtext" href="#">Doładuj konto</a>';
  17. }
  18.  
  19.  
  20.  
  21.  
  22. ?>


wyswietla sie tylko
"doladuj konto"
bobek358
Cytat(nvb @ 17.08.2015, 21:45:45 ) *
Drugi sposób to w pętli while dodaj ifa w którym będziesz sprawdzał czy id usera jest równe id z pętli while i tylko tam daj echo dla kasy.


Tak się nie robi - bardzo nieoptymalne rozwiązanie.
Sign
To pomoglby mi ktos tak zrobic, aby mi dzialalo ;-)
Bardoz mi na tym zalezy,

dzieki ;-)
bobek358
Do zapytania musisz przekazać id użytkownika
Sign
  1. $wynik = mysql_query("SELECT * FROM users WHERE `id` by kasa desc limit 0,2") or die('Błąd zapytania');


Tak ?
Jezeli nie tak, to jak biggrin.gif?
CuteOne
Chociaż zajrzałeś do linku z manualem mysqla? Nikt tu za ciebie roboty nie zrobi..

1. Przekaż id użytkownika w urlu/ formularzem/ ciachem itp.
2. Tak jak ktoś już napisał
  1. $wynik = mysql_query("SELECT * FROM users where `id` = " . $id_usera) or die('Błąd zapytania');

gdzie $id_usera, to przekazany z pkt 1 parametr
3. W pętli tak jak do tej pory zrób sobie var_dump($kasa) aby dowiedzieć się co dokładnie zwróciło zapytanie
nvb
Cytat(bobek358 @ 17.08.2015, 22:32:57 ) *
Tak się nie robi - bardzo nieoptymalne rozwiązanie.


Zgadzam się, jest bardzo nieoptymalne, ale zadziała.
Fakt może nie powinienem podawać tego jako rozwiązanie smile.gif

Kolego poczytaj na starcie manuala do SQLa.
Zrób sobie troche przykładów.
Do czasu aż nie zrozumiesz jak to działa nic nie napiszesz sam...

Pozdro.
Sign
Dodalem tak:
$wynik = mysql_query("SELECT * FROM users where `id` = ". $kasa) or die('Błąd zapytania');


i wyskakuje, blad zapytania, w czym znow zrobilem blad ?
nvb
Jaki błąd?
Co przekazujesz pod zmienna $kasa questionmark.gif
Jeśli jest pusta to nie będzie działało bo jak może znaleźć id które przyrównujesz to niczego?
Sign
to co mam dac zmiast $kasa :-)?
Pyton_000
Weź się chłopie ogarnij i zacznij czytać kurs PHP bo to co tu wypisujesz to jest kpina w czystej postaci.
Liczysz na pomoc czy gotowca?
nvb
1. Włącz myślenie.

2.

select * from users - oznacza "pobierz wszystkie rekordy z tabeli o nazwie users:

where `id` = " .$kasa - oznacza "gdzie id któro jest w tabeli users jest równe id zawartemu w zmiennej którą nazwałeś kasa".

Prościej:

Masz w bazie id_user któro jako wartość ma 1 to ze strony w zmiennej musisz przekazać numer id który będzie taki jaki chcesz wyświetlić z bazy danych!

NP. id = 1
id = 2


Napisz sobie tak w zapytaniu i powiedz co Ci sie wyświetliło!
$wynik = mysql_query("SELECT * FROM users where `id` = 1") or die('Błąd zapytania');


Pózniej wstaw sobie zamiast jedynki tą zmienną "$kasa" bądź inna, tylko zadbaj o to żeby zawierała numer id który chcesz wyświetlić.

Prościej nie potrafię.
Sign
  1. $wynik = mysql_query("SELECT * FROM users where `id` = " . $kasa) or die('Błąd zapytania');
  2. if(mysql_num_rows($wynik) > 0) {
  3.  
  4. while($kasa = mysql_fetch_assoc($wynik)) {
  5. echo '<b>'.$kasa['kasa'].'</b>';
  6. }
  7. echo '<a class="doladujtext" href="#">Doładuj konto</a>';
  8. }
  9.  
  10.  
  11. }
  12.  
  13. else {
  14. // Widok dla użytkownika niezalogowanego
  15. echo '<a class="register" href="register.php">Stwórz konto</a>
  16. <a class="login" href="login.php">Zaloguj się</a>';
  17. }
  18.  
  19.  
  20. ?>
  21.  
  22.  
  23.  


Dalej z tym walcze. Mam pytanie. Co mam zrobic pod zmienną $kasa?

Dalem " gdzie id ma sie równac z $kasa, a kasa ma wyswietlac ilosc tej kasy z tabeli, wiec nadal nie wiem co ja zle robie. WYswietla blad zapytania.

Dobra juz doszedlem do tego ( chyba ) i jak dam tam id =3 to wyswietla sie usera 3.
Mam ostantie juz 4ever pytanie.
Jak mam zmienna
$twoje id to co w niej zrobic, aby pobierało id zalogowanego, czy jak by to inaczej zrobic, zeby np logujes sie i masz id 1 to ci wyswietla z id 1, logujesz sie z konta z id 2 i masz id2 i wyswietla id z 2. Pozdraiwam
bobek358
Musisz przy logowaniu napisać ID usera do sesji i użyć jej w zapytaniu.
  1. ("SELECT * FROM users where `id` = " . $_SESSION['idUser'])

i będzie ok
Sign
ta sesje mam napisac w login,php czy w tym pliku co wszystko robie?

O dziwo dziala, nie iwem jak, nie robilem nawet zadnej sesji tylko dodalem to
  1. '.$user['kasa'].'

powie ktos, jakim cudem to dziala O.o ?
bobek358
Bez kodu nikt Ci nie powie dlaczego to działa
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.