Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [SQL] Zapytanie z dynamicznym ID
Forum PHP.pl > Forum > Przedszkole
AddoN
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ś?
Ulysess
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.
tab
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
AddoN
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
tab
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 ;))
AddoN
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. ?>


abort
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
tab
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
AddoN
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...
tab
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
Ulysess
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.
Ulysess
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.
viking
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.
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.