Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP+MySQL] Numer klienta/zamówienia
Forum PHP.pl > Forum > PHP
Red22
Witam. Mam pewien problem: piszę na zaliczenie przedmiotu stronę w PHP korzystającą z baz danych. Strona jest dosyć prosta i jedyny problem jaki mam jest następujący - klient loguje się, wchodzi i chce kupić coś. Tranzakcja jest zapisywana w tabeli. Tabele ułożyłem następująco:

Users (id, nazwa, haslo)
Ksiazki (id,autor,tytul)
Zamowienia(id,idksiazki,iduser)

I problem jest następujący: nie wiem jak z zapytania np.

$query = "SELECT Id FROM users WHERE Nazwa='$user' ";
$query .= "AND Haslo='$pass'";

wyciągnąć to Id użytkownika, by później móc wpisać je do tabeli ZAMOWIENIA. Id książki już zrobiłem i działa. Ale by wszystko działało i pokazywało jaki klient co zamówił, potrzebny mi sposób zapisywania ID zalogowanej osoby do innej tabeli w bazie... I na tym utknąłem. Wszelkie pomysły (nawet innego rozwiązania tego ) mile widziane. Pozdrawiam.
anonim1133
powiem szczerze... nierozumiem o co chodzi, ale spróbuję Ci pomóc haha.gif
wyciągnąć to Id użytkownika,
  1. <?php
  2. $query = "SELECT Id FROM users WHERE Nazwa='$user' ";
  3. $query .= "AND Haslo='$pass'";
  4. $query = mysql_query($query);
  5. print_r($query) // - wyświetli Ci tablicę z wynikiem/ami :)
  6. ?>


a id użytkownika po zalogowaniu pewnie przetrzymujesz w sesjach? smile.gif jeśli nie to możesz sobie tam je "ulokować" ?
ps. kod php podawaj w znacznikach
  1. <?php
  2. kod
  3. ?>
Red22
Kod
$userid = $row[0];        
   $_SESSION['Id'] = $userid;

Takie coś mam do sesji. 1 wiersz no to Id i i tak nie reaguje :/.

Ale to też nie tak: JAK z sesji zalogowanego użytkownika wyciągnąć jego ID ( odpowiadające jego ID w tabeli Users ) bym mógł potem tego ID użyć w zamówieniach?
anonim1133
znalazłem błąd w swoim poście ;P powinno być
  1. <?php
  2. $query = mysql_fetch_array($query);
  3. ?>

Cytat
1 wiersz no to Id i i tak nie reaguje :/.


dalej nie rozumiem co mówisz tongue.gif
chodzi Ci może o to że nic sie nie zapisuje w sesji ? tak ?
jeżeli tak to po 'poprawce' powinno być ok, jeżeli nie to może spróbuj to może jakoś inaczej opisać? tongue.gif
Red22
By wyświelić kto co zamówił potrzebne są 2 rzeczy: ID KLIENTA i ID KSIĄŻKI. ID KSIĄŻKI mam już zrobione. Nie wiem skąd pobierać do jakiejś zmiennej (i jak ) ID KLIENTA.
anonim1133
może spróbujmy inaczej tongue.gif
w tej chwili w tym swoim skrypcie chcesz zalogowanemu userowi pokazać co zamówił? czy w panelu admina wyświetlić co i kto zamówił ?

jeżeli to 1 to:
-pobierasz jego id z sesji do zmiennej $id_usera
-zapytanie mysql SELECT * FROM `zamowienia` WHERE `ID_KLIENTA` = '$id_usera';
- i wyświetlasz?
jeżeli dalej nie trafiłem to się poddaję haha.gif
Red22
Właśnie jak pobrać to ID do zmiannej ? Bo to powyżej nie działa (zmienna jest pusta).
anonim1133
może jakiś błąd w składni czy coś? smile.gifP
  1. <?php
  2. zamiast
  3. $query = mysql_query($query);
  4. daj
  5. $query = mysql_query($query) or die(mysql_error());
  6. ?>


to wyżej, jeżeli myślę o dobrym kawałku kodu tongue.gif to w następnym bodaj poście, poprawiłem go:P jeżeli dalej nie zadziała pokaż ewentualny kod błędu?

// ale se postów nabiłem haha.gif
Red22
Cytat
-pobierasz jego id z sesji do zmiennej $id_usera


to jak zrobić
Błędu nie ma - po prostu tą metodą co napisałem to zmienna userid jest pusta.
jang
  1. <?php
  2. mysql_connect('localhost','root','');
  3.  
  4. $result = mysql_query("select * from users where login = '$login' limit 1");
  5. while ($row = mysql_fetch_array($result, MYSQL_ASSOC))
  6. {
  7. echo $row["id"].'<br />';
  8. echo $row["login"];
  9. }
  10. ?>
anonim1133
dałeś session_start() ?
sprawdź czy $row[0] ma jakąś wartość(najlepiej tą odpowiednią)
  1. <?php
  2. echo $row[0];
  3. ?>


ps. tyle postów nastukałem bezsensu, ale jakoś nie mogłem zrozumieć o co Ci chodzi tongue.gif
parasite
Jeżeli dałeś
  1. <?php
  2. ?>


to ok, jeżeli nie - to zrób tak, potem tylko
  1. <?php
  2. { 
  3. $userid = $_SESSION['id'];
  4. }
  5. ?>


Chyba, że coś źle zrozumiałem. Wypisz najpierw $row (patrz post wyżej). Jeżeli nie da Ci to żadnej wartości,
to może zapomniałeś o session_start()?
Red22
W pliku do logowania nie było session start. Dałem i coś ruszyło ale dalej nie przekazuje mi do funkcji tego :/. Oto funkcja:

Kod
function zamowienie($id)
   {
       if (!$db_lnk = mysql_connect("localhost", "st073", "Qg3t5f9N")){
       //echo('Bł±d z poł±czeniem');
       return SERVER_ERROR;
     }
  
     if(!mysql_select_db('st073')){
       //echo('Bł±d bazy danych');
       @mysql_close();
       return SERVER_ERROR;
     }
   if(!session_is_registered("id"))
   {
   $userid = $_SESSION['id'];
   }
     $query = "INSERT INTO zamowienia (ksiazkaid,userid)VALUES('$id','$userid')";
  
     if(!$result = mysql_query($query)){
       //echo("Odrzucone zapytanie: $query");
       return false;
     }
  
   }

z tym, że $id jest przekazywane z innej funkcji (w tym pliku) i jest to ID książki - to działa poprawnie.

W pliku głównym wywołanie to

Kod
            if($_GET['action'] == 'zamowienie'){
          if(isSet($_GET['id']) && isSet($_SESSION['Id'])){
            include "funkcje.php";
            zamowienie($_GET['id'] && isSet($_SESSION['Id']));
  
  
          }

I tu w ogóle nawet nie dodaje nic do bazy. Bez SESSION dodaje ale bez userid :/. Tzn inaczej: on DODAJE ale wartość 0. Czyli tak jakby źle czytał ID użytkownika z tabeli. Ale logowanie jest w porządku.

On wciąż nie przekazuje numer ID z bazy logującego się użytkownika do zmiennej. Dlatego ta zmienna jest ciągle pusta.
jang
Po pierwsze, w jednym miejscu dajesz :
  1. <?php
  2. $userid = $_SESSION['id'];
  3. ?>
a w drugim
  1. <?php
  2. isSet($_SESSION['Id'])
  3. ?>
a id i Id to nie to samo exclamation.gif!
Sprawdzałeś to co Ci napisałem w moim poprzednim poście ?
Oczywiście zamiast while i echo dajesz :
  1. <?php
  2. $_SESSION['id'] = $row['id'];
  3. echo $_SESSION['id'];
  4. ?>
echo oczywiście tylko dla sprawdzenia.
Red22
Tak wiem - ale u mnie małe id odpowiada za IDKSIĄŻKI natomiast duże Id odpowiada za IDUSER.
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.