Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [SQL] Zapytanie z dynamicznym ID
AddoN
post
Post #1





Grupa: Zarejestrowani
Postów: 59
Pomógł: 0
Dołączył: 9.07.2010

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


Witajcie,

mam mały problem ze skonstruowaniem zapytania do bazy.

  1. <?
  2. $go= mysql_query('select * from serwis_users');
  3. while($rekord = mysql_fetch_assoc($go))
  4. {
  5. echo $rekord['UserTresc'];
  6. }
  7.  
  8. ?>


Przy konstrukcji tabel

serwis_users

  • Id
  • (...)
  • UserTresc


Zapytanie generalnie działa prawidłowo, ale przy takiej konstrukcji pokazuje mi zawartość wszystkich tabel UserTresc, a jest to wartość zastrzeżona tylko dla jednego użytkownika (zalogowanego).

Nie wiem jak zapisać zapytanie, żeby wyświetlała się tylko tabela UserTresc zależna od Id

Pomoże ktoś?

Ten post edytował AddoN 4.11.2012, 22:33:13
Go to the top of the page
+Quote Post
Ulysess
post
Post #2





Grupa: Zarejestrowani
Postów: 695
Pomógł: 65
Dołączył: 27.07.2009
Skąd: Y

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


Twoje zapytanie pobiera wszystkie pola z tabeli serwis_user a nastepnie w petli wyswietla UserTresc. Nie wiem czy dobrze zrozumiałem ale chcesz wyświetlać dane tylko te które spełniają odpowiedni warunek z polem ID ? jeśli tak to w zapytaniu dodaj na końcu where id = 1 , wtedy pobierze rekordy które w polu ID mają wartość 1 , oczywiście przerób to na własne potrzeby.
Go to the top of the page
+Quote Post
tab
post
Post #3





Grupa: Zarejestrowani
Postów: 75
Pomógł: 20
Dołączył: 8.10.2012

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


dokładnie tak jak napisał kolega powyzej. od siebie dodam tylko zebys nie uzywał '*' tylko napisał wszystkie tabele recznie. zyskasz wtedy na wydajnosci bo mysql szybciej przetwarza takie zapytanie wink.gif
Go to the top of the page
+Quote Post
AddoN
post
Post #4





Grupa: Zarejestrowani
Postów: 59
Pomógł: 0
Dołączył: 9.07.2010

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


Tak, zależy mi żeby pobierało UserTresc w zależności od Id.

Id oznacza numer zarejestrowanego użytkownika. Więc jeżeli zalogowany jest user z Id = 5 to żeby wyświetlała się wartość UserTresc przypisana dla usera o tym Id (indywidualne strony użytkowników).

Dlatego nie mogę tam zapisać konkretnego numeru, bo zapytanie musi być "dynamiczne"

Nie wiem czy piszę logicznie, jestem grafikiem wink.gif
Go to the top of the page
+Quote Post
tab
post
Post #5





Grupa: Zarejestrowani
Postów: 75
Pomógł: 20
Dołączył: 8.10.2012

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


czyli zalozmy ze id przechowywane jest w sesji (a jakze inaczej)

to robisz takie cos:

  1. $id = $_SESSION['id'];
  2. mysql_query("SELECT login,msg,czy,co,tam,ci,potrzeba FROM uzytkownicy WHERE id='$id'");
  3. // i juz ;))
Go to the top of the page
+Quote Post
AddoN
post
Post #6





Grupa: Zarejestrowani
Postów: 59
Pomógł: 0
Dołączył: 9.07.2010

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


Męcze się cały czas, ale w żaden sposób nie idzie

  1. <?
  2. $id = $_SESSION['Id'];
  3. $go = mysql_query("SELECT UserTresc FROM serwis__users WHERE Id = '$Id'");
  4. $row = mysql_fetch_array($go);
  5. echo $row['UserTresc'];
  6. ?>


Go to the top of the page
+Quote Post
abort
post
Post #7





Grupa: Zarejestrowani
Postów: 590
Pomógł: 107
Dołączył: 25.10.2011

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


W sesji masz 'Id', w kodzie php masz $id, zapytanie do SQL konstruujesz na podstawie $Id....
No pooglądaj te literki, wszystkie... I dopasuj ich wielkości smile.gif
Go to the top of the page
+Quote Post
tab
post
Post #8





Grupa: Zarejestrowani
Postów: 75
Pomógł: 20
Dołączył: 8.10.2012

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


oj straszny bałagan w kodzie :/
pamietaj o dobrych praktykach:
1. pisz <?php zamiast <?, to drugie moze nie dzialac na niektorych serwerach
2. uzywaj jednego nazewnictwa dla wszystkich zmiennych czy rekordow, bo tak jak teraz, np masz ip, Ip to jak za jakis czas wrocisz do projektu to nie bedziesz wiedzial co w ogole zamierzales zrobic. albo jak bedziesz pisal wiekszy projekt to juz wgl chaos kompletny Ci sie porobi.

<?php
$id = $_SESSION['id'];
$go = mysql_query("SELECT UserTresc FROM serwis__users WHERE Id = '$id'");
$row = mysql_fetch_array($go);
echo $row['UserTresc'];
?>

i pamietaj o tym co napisalem
Go to the top of the page
+Quote Post
AddoN
post
Post #9





Grupa: Zarejestrowani
Postów: 59
Pomógł: 0
Dołączył: 9.07.2010

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


Dzięki wielkie za pomoc, ale to nadal nie działa. Wiem że wielkość liter ma znaczenie i pilnuje tego.

Może trzeba jakoś specjalnie wczytać dane z sesji?

Chociaż ogólnie jestem zalogowany i wyświetla się imię i nazwisko...
Go to the top of the page
+Quote Post
tab
post
Post #10





Grupa: Zarejestrowani
Postów: 75
Pomógł: 20
Dołączył: 8.10.2012

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


hm no wiesz nie wejde Ci na serwer i nie zobacze co tam masz napisane biggrin.gif jesli mam Ci pomoc (ja lub ktos inny) musisz wstawic skrypt w ktorym wystepuje blad
Go to the top of the page
+Quote Post
Ulysess
post
Post #11





Grupa: Zarejestrowani
Postów: 695
Pomógł: 65
Dołączył: 27.07.2009
Skąd: Y

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


użyj print_r($_SESSION)

powinno wydrukować całą tablice sesji wraz z wartoścami , jeżeli będzie sesja ID i dla niej wartośc następnie sprawdz w baza->tabela czy dla danego usera istnieje w ogole rekord spełniajacy warunek , przy okazji mozesz rowniez użyc mysql_error na koncu zapytania . jeśli rekord istnieje w bazie to ost deską pomocy jest wyświetlenie treści zapytania (czy jest poprawne) czyli w 3 linijce $go = mysql........ usuń i daj echo ..... a 4 usuń bądź wrzuć w komentarz.
Go to the top of the page
+Quote Post
Ulysess
post
Post #12





Grupa: Zarejestrowani
Postów: 695
Pomógł: 65
Dołączył: 27.07.2009
Skąd: Y

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


a na poczatku pliku masz start session ?
przy logowaniu powinieneś uzytkownikowi przydzielic ID tore powinno pochodzić z bazy , takie id najlepiej trzymać w sesji i poruszając się po stronie na podstawie tego id pobierać dane z bazy dla uzytkownika majacego dane id.
Go to the top of the page
+Quote Post
viking
post
Post #13





Grupa: Zarejestrowani
Postów: 6 380
Pomógł: 1116
Dołączył: 30.08.2006

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


Zabezpiecz to. Nigdy nie puszczaj do zapytania danych pobranych bezpośrednio od użytkownika. mysql_real_escape_sting().
2. Rozszerzenie mysql nie jest już rozwijane. Użyj mysqli albo PDO.


--------------------
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 Aktualny czas: 22.08.2025 - 10:25