Poziomy kont użytkowników i połączenie różnych opcji w bazie danych

0

Stworzyłem sobie prosty system kont użytkowników na stronie www. Można się rejestrować, logować, edytować profil itd.

Teraz chcę zrobić rzecz następującą. Chcę aby każdy zawodnik mógł utworzyć na swoim koncie marki aut. Chodzi mi o to, że mam zakładkę moje samochody i tam chcę dać opcję 'dodaj markę' - która będzie dodawać markę do bazy danych oraz następnie mieć możliwość dodawania modeli aut do każdej marki. Oczywiście chcę aby każdy użytkownik mógł dodać jakie marki i modele chce i aby inni nie widzieli tego co dodaje.

Prosze tutaj o pomoc, jak to ogarnąć czyli jak połączyć te wszystkie opcje w bazie danych. Skąd przy odczytywaniu danych z bazy mam wiedzieć, że dana marka została dodana przez danego użytkownika, jak również jakie modele są w danej marce, danego użytkownika.

Pozdrawiam

0

Jeżeli chcesz tak: jeden użytkownik -> wiele samochodów to musisz w tabeli z samochodami zrobić kolumnę z id użytkownika. Np. tabela użytkownicy może wyglądać tak:

ID NICK EMAIL
1 Mikel4 [email protected]
Tabela samochody, mniej więcej tak:
ID MARKA OWNER_ID
1 AUDI 1
Jeżeli chcesz aby każda marka mogła mieć więcej niż jednego właściciela musisz już zrobić tabele która połączy id marki z id usera. Np.
ID USER_ID MARK_ID
0

OK dzięki, to mam z głowy, mogę już dodawać do bazy wszystko co chcę, tylko teraz mam mały problem z odczytem. Chcę aby użytkownik widział tylko swoje grupy aut i daję takie zapytanie do bazy :

$result = mysql_query("SELECT * FROM `grupa` ORDER BY `user_id` ASC LIMIT WHERE `user_id`=".$_SESSION['user_id']""); 

Niestety dostaję błąd. W jaki sposób mogę przefiltrować tabelę aby zwracane były tylko te pola które odpowiadają id obecnie zalogowanego użytkownika ?

0

Jaki błąd dostajesz? W ogóle po co masz tam ORDER BY ?

#edit

LIMIT 1 powinno być, a nie samo LIMIT

0

Wykasowałem ORDER BY i zmieniłem LIMIT na LIMIT 1 i mam taki błąd:

Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING in...

Teraz mój kod to:

 $result = mysql_query("SELECT * FROM `grupa`  ASC LIMIT 1 WHERE `user_id`=".$_SESSION['user_id']"");
0

najpierw where, potem order by

0
$result= mysql_query("SELECT * FROM `grupa` WHERE `user_id`=".$_SESSION['user_id']""); 

Cały czas ten sam błąd

Zmieniłem na :

 $result2 = mysql_query("SELECT * FROM `grupa` WHERE `user_id`=`{$_SESSION['user_id']}` ");
	while($row2 = mysql_fetch_assoc($result2)) {
		echo '<tr>
			<td><a href="profile.php?id='.$row2['name'].'">'.$row2['name'].'</a></td>
			<td>'.$row2['group_id'].'</td>
			
		</tr>';
	                                           }

Już nie mam tego błędu, ale za to mam inny :

Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given

Co mogę na to poradzić ?

0

Przekazujesz do mysql_fetch_assoc() prawdopodobnie false, a dlaczego to możesz dowiedzieć się tutaj:
http://pl1.php.net/mysql_query.

Wykonaj najlepiej to zapytanie z poziomu phpmyadmina i zobacz co zwraca:
SELECT * FROMgrupaWHEREuser_id=id tutaj

0

Dziękuję w końcu zrozumiałem o co tutaj chodzi.

Problem rozwiązałem tak :

 $temp=$_SESSION['user_id'];
echo $temp; 

	$result = mysql_query("SELECT * FROM `grupa` WHERE `user_id`='$temp' ");
0

Poważnie? Nikt jeszcze nie napisał że funkcje mysql_query są od dawien dawna deprecated... ?

0

Hmm,

mam teraz taki problem :

Stworzyłem pole formularze select w którym odczytuję dane z odpowiedniej tabeli. Są to dane odnośnie tego jakie marki aut zostały dodane.

To pole jest w formularzu w którym wpisuję dane auta, a na końcu właśnie w tym polu select wybieram dodaną już wcześniej markę i to całe zapytanie chcę przesłać do bazy danych aby je zapisać. Niestety zapisują mi się wszystkie dane oprócz marki z tego pola select.

Tak próbuję to zrobić :

while($wybor = mysql_fetch_array($result)) {
  
  echo'<option value="'.$_POST['grupa'].'">'.$wybor['name'].'</option>';
} 

Jak zrobić to poprawnie ?

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