2 zmienne z różnych miejsc do jednego zapytania sql

0

Witajcie,
Potrzebuję do zapytania sql (where id = ...) uzyskać to id z 2 różnych miejsc.
1 miejsce: użytkownik w navbar ma dostęp do podglądu swojego profilu przy pomocy odnośnika(zwykła strona(profil.php) aby pokazać imie, nazwisko, zdjęcie ...). Tam id uzyskuję od $_SESSION[id] podczas logowania.

2 miejsce: pracodawca ma odnośnik do profilu i tam id jest przekazywane przez _GET (<a href="profil.php?id='.$offerRow["id"].'">Imię usera</a>)

Nie chcę tworzyć 2 plików z taką samą zawartością do wyświetlenia, problem mam z pochodzeniem zmiennej id z 2 różnych miejsc.

z 2 miejsca uzyskuję id tak: ( $id = mysqli_real_escape_string($connect, $_GET['id']); )
z 1 miejsca ($id= $_SESSION['id_usera']);

a zapytanie mam w postaci SELECT * from uzytkownicy WHERE id = $id;

podpowiecie coś? :)

2

$id = isset($_GET['id']) ? $_GET['id'] : isset($_SESSION['id_usera']) ? $_SESSION['id_usera'] : 'undefined';

Choć prościej stworzyć funckję

function getUserData($id){
   //zapytanie
   //return value
}

i po prostu przekazywać id jako parametr? Wtedy nie ważne czy wywołasz
getUserData($_GET['id'])
czy
getUserData($_SESSION['id_usera'])

0

@NewUser2k13:
W taki sposób? Przepraszam ale nie ogarniam za bardzo tego

 function getUserData($id){
   $id = mysqli_real_escape_string($connect, $_GET['id']);
   $id= $_SESSION['id_uzytkownika'];
   return $id;
   
}

Ta linijka:

$id = isset($_GET['id']) ? $_GET['id'] : isset($_SESSION['id_uzytkownika']) ? $_SESSION['id_uzytkownika'] : 'undefined';

Działa jedynie przy sesji, w przypadku $_GET w pasku adresu mam profil.php?id=33 jednak nie uzyskuje żadnych dancyh

1

Masz plik profil.php i teraz
a) Jeśli użytkownik jest zalogowany to do tego pliku nie przekazujesz żadnego parametru id i zalogowany użytkownik widzi swój profil
b) Jeśli pracodawca jest zalogowany to do tego pliku przekazujesz id usera którego dane mają być wyświetlone? (jeśli nie przekażesz parametru to widzi swój profil?)

Dobrze to zrozumiałem?
Jeśli tak, to w pliku profil.php
wklej sobie gdzieś na początku taki fragment kodu (w celu weryfikacji)

print_r($_GET);  // jeśli jest przekazywane id, to tutaj coś powinno być ; jeśli nie jest przekazywane to ma być pusta ta tablica
$id = isset($_GET['id']) ? $_GET['id'] : isset($_SESSION['id_uzytkownika']) ? $_SESSION['id_uzytkownika'] : 'undefined';
echo 'ID '.$id;

I sprawdź w obu przypadkach co tam się pokazuje.

0

@NewUser2k13:
mam 2 "aktorów":

  1. użytkownik -> chcę mu dać możliwość podglądu profilu (coś jak klikniecie w zdjęcie na facebooku) i tam wyświetlić informacje przy $_SESSION['id_uzytkownika'] które jest uzupełniane przy logowaniu
    2.pracodawca -> ma listę ofert, do każdej oferty przypisani są użytkownicy i tam przy pomocy $GET pobieram to id (fajnie by bylo ogarnąć to w $POST ale to innym razem) i wyświetlam profil.

po wyświetleniu print_r($_GET); i echo 'ID '.$id; teraz mam:

  1. użytkownik (tam gdzie sesja): pokazują się rekordy. informacje jakie uzyskałem to
Array ( ) ID 33

2.pracodawca:

Array ( [id] => 33 ) ID 34

Dlaczego id 34?
w pasku adresu mam /profil.php?id=33
tutaj nie pokazują mi się rekordy

1

Czyli pierwszy scenariusz jest ok (ten użytkownika)
Teraz spróbujmy z tym drugim
Pokaż co dostajesz

print_r($_GET); 
if(isset($_GET['id'])){
   echo ' GET ID: '.$_GET['id']; 
}else if(isset($_SESSION['id_uzytkownika'])){
   echo ' SESSION ID: '.$_SESSION['id_uzytkownika']; 
}else{
  echo 'BRAK ID';
}

@edited
Teraz powinno śmigać - brakowało nawiasów
$id = isset($_GET['id']) ? $_GET['id'] : (isset($_SESSION['id_uzytkownika']) ? $_SESSION['id_uzytkownika'] : 'undefined');

@edited2
Albo krócej jeśli zawsze jest GET albo SESJA (id)
$id = isset($_GET['id']) ? $_GET['id'] : $_SESSION['id_uzytkownika'];

0

@NewUser2k13: zadziałało :) ale nie przemyślałem wszystkiego :(

z jednej strony gdy zaloguje się jako pracodawca mogę zobaczyć profile użytkowników, użytkownik może też zobaczyć swój profil i to spełnia zadanie

druga strona: gdy zaloguję się jako pracodawca mogę zobaczyć swój profil, użytkownik gdy chce zobaczyć pracodawcę nie zobaczy go, ponieważ w zmiennej sesyjnej istenieje ID użytkownika
tak jak jest teraz:
Array ( [id] => 34 ) ID 36

36 to id usera
34-to id pracodawcy.

nie zobaczę żadnych wyników.
chyba że źle myślę.

w profilu pracodawcy do zmiennej GET wysyłam zmienną "pracodawca" (tak mam ustawione w bazie że id w ofercie mam nazwane pracodawca). zmieniłem to na :

$id = isset($_GET['pracodawca']) ? $_GET['id'] : $_SESSION['id_uzytkownika'];

i stoję w miejscu

0

Dobrze piszesz, ma to sens :) Jednak u mnie nie wiem dlaczego nie działa.
Zalogowany jestem na użytkowniku, wyświetliłem

 $id = isset($_GET['pracodawca']) ? $_GET['pracodawca'] : $_SESSION['id_uzytkownika'];

  print_r($_GET);
  echo 'ID '.$id;

  $query = " SELECT * FROM logowanie  WHERE id = $id";


  $rezultat = mysqli_query($connect, $query);
  $profil = mysqli_fetch_all($rezultat, MYSQLI_ASSOC);
 print_r($profil);

no i mam wynik:

Array ( [id] => 34 ) ID 36Array ( [0] => Array ( [id] => 36 [login] => usr1 [haslo] => usr1 [email] =>  ) )

(dane usera, tutaj nie potrzebne bo to profil pracodawcy)

Zaloguję się na pracodawcy (tym o id=34)

Array ( [id] => 34 ) ID 34Array ( [0] => Array ( [id] => 34 [login] => legion [haslo] => Test123 [email] => [email protected]  ) )
1

Myślę, że troszkę się z tym wszystkim zamotałeś.
Przytoczony powyżej przykład działa tak jak działać powinien.

Bazując na Twoim outpucie

Array ( [id] => 34 ) ID 36Array ( [0] => Array ( [id] => 36 [login] => usr1 [haslo] => usr1 [email] =>  ) )

Czyli
W tablicy $_GET masz jeden element pod kluczem id

Wróćmy do warunku:
$id = isset($_GET['pracodawca']) ? $_GET['pracodawca'] : $_SESSION['id_uzytkownika'];
Jeśli jest ustawiona zmienna $_GET['pracodawca'] to przypisz do zmiennej $id jej wartość - w przeciwnym wypadku przypisz do $id wartość zmiennej przechowywanej w $_SESSION['id_uzytkownika'];

I tutaj ten warunek NIE JEST spełniony. Ty masz w $_GET['id'] , a nie $_GET['pracodawca']
Dlatego też do $id przypisywane jest to co aktualnie jest w $_SESSION['id_uzytkownika'];

1 użytkowników online, w tym zalogowanych: 0, gości: 1