Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Wprowadzenie danych użytkownika do bazy
Forum PHP.pl > Forum > Przedszkole
Ekstazzy
Witam mam stronke ktora jest na etapie tworzenia ,nastepujaca rzecza jak chcialbym zrobic to podstrona "Twoje dane" juz pisze co tam sie bedzie zawierac.
Po zarejestrowaniu sie (podczas rejestracji podaje sie tylko haslo i login - dane wpisywane sa do tabeli USER w bazie danych). Teraz chcialbym by przy zalogowaniu kazdy uzytkownik wchodzil wlasnie na podstrone Twoje dane tam wpisywal swoje imie nazwisko email i wybieral stanowisko (manager itp itd) oczywiscie wszystko w formie formularza, dane te beda zapisywane w tabeli STANOWISKO. Tabele USER i STANOWISKO polaczone sa one to one polem ID_STANOWISKA. To co tu napisalem nei stanowi zadnego problemu.

Lecz moj problem pojawia sie w momencie dodawania do bazy. Otoz chcualbym by jeden USER do tabeli STANOWISKO mogl tylko raz wprowadzic dane (wiadomo - chodzi o swoje) oczywiscie bedzie mozliwosc edycji wprowadzonych danych. I nie mam pojecia jak sie zabrac za to by tylko raz mogl wprowadzic te dane. Pytalem wujka GOOGLE ale nei za bardzo mi dzis pomogl, wiec teraz zwracam sie z tym problemem do Was.

Z góry dzieki za pomoc
Evinek
Dwa sposoby przychodzą mi na myśl.
Przy zakładaniu konta tworzysz rekord (STANOWISKO), a przy stanowisku (edycji danych) tylko update bazy.

Drugi (chyba gorszy dla bazy danych)
Przy edycji danych sprawdzasz czy rekord istnieje w tabeli STANOWISKO, jeśli istnieje to update, jeśli nie to tworzysz go.

Tak jak wyżej pisałem, pierwszy jest raczej lepszy.

Jeśli coś źle zrozumiałem to napisz poprawniej. ;]
Ekstazzy
Cytat(Evinek @ 22.07.2012, 18:43:02 ) *
Dwa sposoby przychodzą mi na myśl.
Przy zakładaniu konta tworzysz rekord (STANOWISKO), a przy stanowisku (edycji danych) tylko update bazy.


W tym przypadku chodzi Ci o to, zeby juz przy zakladaniu konta bylo nie tylko login i haslo(ktore jest wprowadza do tabeli USER) ale rowniez takie rzeczy jak imie nazwisko i reszte (ktore sa wprowadzane do tabeli STANOWISKO) a pozniej tylko je wyswietlac na tej mojej podstronie z mozliwoscia edycji, tak ? Od razu zapytam czy takie dodawanie do dwoch tabel jakos skomplikuje mi sprawe czy to nie stanowi problemow natury technicznej ?
Evinek
Żadnych problemów nie powinno być, ale mi bardziej chodziło o to, że po prostu tworzysz rekord z pustymi polami (prócz ID). Później po prostu będziesz edytował te dane.
Czyli dokładniej:
Tworzenie konta - tworzy konto + rekord do tabeli STANOWISKO gdzie uzupełnisz tylko ID (użytkownika). Reszta pól (Imię, Nazwisko) mają być puste.
Gdy dana osoba będzie chciała podać dane to wejdzie na stronę i kliknie po prostu: Edytuj dane. Potem wystarczy do bazy UPDATE.

Ekstazzy
Cytat(Evinek @ 22.07.2012, 18:58:54 ) *
Żadnych problemów nie powinno być, ale mi bardziej chodziło o to, że po prostu tworzysz rekord z pustymi polami (prócz ID). Później po prostu będziesz edytował te dane.
Czyli dokładniej:
Tworzenie konta - tworzy konto + rekord do tabeli STANOWISKO gdzie uzupełnisz tylko ID (użytkownika). Reszta pól (Imię, Nazwisko) mają być puste.
Gdy dana osoba będzie chciała podać dane to wejdzie na stronę i kliknie po prostu: Edytuj dane. Potem wystarczy do bazy UPDATE.


Ok mam pierwsze pytanie

  1. require('conn.php');
  2.  
  3. if (isset($_POST['login']) and isset($_POST['password']) and isset($_POST['password2']))
  4.  
  5. {
  6.  
  7. if ($_POST['password']==$_POST['password2'])
  8.  
  9. {
  10.  
  11. $login = mysql_real_escape_string (trim($_POST['login']));
  12.  
  13. $password = sha1(mysql_real_escape_string (trim($_POST['password'])));
  14.  
  15. if ($login!="" and $password!="")
  16.  
  17. {
  18.  
  19. $ile =mysql_query("SELECT * FROM `user` WHERE login = '$login'");
  20.  
  21. $ile = mysql_num_rows($ile);
  22.  
  23. if ($ile==0) {
  24.  
  25. $dane="INSERT INTO stanowisko (ID_STANOWISKO,ID,ID_KLUB,NAZWA_STANOWISKA,IMIE,NAZWISKO,MIEJSCOWSC,MAIL)
  26. VALUES(NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL)";
  27. $iddane="SELECT ID_STANOWISKO FROM STANOWISKO";
  28. $zapytanie="INSERT INTO user (ID_STANOWISKO,login,password) VALUES('$iddane','$login','$password')";


tutaj jest czesc mojej rejestracji i :
1. $dane sie nei wykonuja, tzn nic nie dodaje do rabeli STANOWISKO
2. nastepnie by jakos wpisac ID_STANOWISKO do tabeli USER zrobilem taki myk, ale tez nie dziala

Pierwszy insert gdy go wpisuje do SQL w PHPMYADMIN wykonuje sie normalnie, daltego nie wiem dlaczego nie wykonuje sie tutaj i w jaki sposob powiazac ID_STANOWISKO w obu tabelach, bo o ile w pierwszej tabeli jest AUTO INCREMENT to do USERA musze ja jakos wrzucic.
Ekstazzy
Cytat(Ekstazzy @ 22.07.2012, 19:30:30 ) *
1. $dane sie nei wykonuja, tzn nic nie dodaje do rabeli STANOWISKO


Ok juz naprawilem i dodaje mi do obu tabel dane (logi pass do jednej) i same puste pola do drugiej. Ale nadal nie moge polaczyc ID_STANOWISKA...
Evinek
Trochę pomieszane to.
Zrób tak:
-sprawdzanie danych z POST itp.
-gdy wszystko poprawnie stwórz konto (id automatyczne, login, hasło)
-i teraz tworzysz tylko rekord do stanowisko.

Rady:

  1. INSERT INTO stanowisko (ID_STANOWISKO,ID,ID_KLUB,NAZWA_STANOWISKA,IMIE,NAZWISKO,MIEJSCOWSC,MAIL)
  2. VALUES(NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL)

Po co tyle NULL?
  1. INSERT INTO stanowisko (ID)
  2. VALUES($id)


http://php.net/manual/en/function.mysql-insert-id.php
Tym pobierzesz ID użytkownika po czym dodasz do tabeli stanowisko(zmienna u mnie $id).

Musisz pomyśleć trochę bo Ci nie dam gotowego kodu. smile.gif

@EDIT:
ID w tabeli stanowisko to jeśli się nie mylę to ID konta, tak? Bo ID trzeba dodać - reszta pól ma być pusta.
Gość
Cytat(Evinek @ 22.07.2012, 19:51:47 ) *
Trochę pomieszane to.
Zrób tak:
-sprawdzanie danych z POST itp.
-gdy wszystko poprawnie stwórz konto (id automatyczne, login, hasło)
-i teraz tworzysz tylko rekord do stanowisko.

Rady:

  1. INSERT INTO stanowisko (ID_STANOWISKO,ID,ID_KLUB,NAZWA_STANOWISKA,IMIE,NAZWISKO,MIEJSCOWSC,MAIL)
  2. VALUES(NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL)

Po co tyle NULL?
  1. INSERT INTO stanowisko (ID)
  2. VALUES($id)


http://php.net/manual/en/function.mysql-insert-id.php
Tym pobierzesz ID użytkownika po czym dodasz do tabeli stanowisko(zmienna u mnie $id).

Musisz pomyśleć trochę bo Ci nie dam gotowego kodu. smile.gif

@EDIT:
ID w tabeli stanowisko to jeśli się nie mylę to ID konta, tak? Bo ID trzeba dodać - reszta pól ma być pusta.


Zrobione, ale teraz jak zrobic by mi wyswietlalo dane z tabeli STANOWISKO (do uzupelniania) TYLKO te od osoby zalogowanej ?
Ekstazzy
Cytat(Gość @ 22.07.2012, 20:41:05 ) *
Zrobione, ale teraz jak zrobic by mi wyswietlalo dane z tabeli STANOWISKO (do uzupelniania) TYLKO te od osoby zalogowanej ?


Dobrze kombinuje, ze np wyswietlac tylko ten ktory zmienna $_SESSION['login'] rowna sie login z tabeli USER ? Ciezko cos takiego zrobic ? Czy w zla strone ide ?
Ekstazzy
Cytat(Ekstazzy @ 22.07.2012, 20:52:00 ) *
Dobrze kombinuje, ze np wyswietlac tylko ten ktory zmienna $_SESSION['login'] rowna sie login z tabeli USER ? Ciezko cos takiego zrobic ? Czy w zla strone ide ?


No jednak cos tam w tej glowie jest u mnie smile.gif dobry pomysl, ale cos nie dziala ;/ (zapytanie w SQL'u dziala i wyswietla dane tylko zalogowanego ziomka
  1. <?php
  2. $a=$_SESSION['login'];
  3. var_dump($a);
  4. if(!$rs = mysql_query("SELECT s. * , n. * from STANOWISKO s LEFT JOIN USER n ON S.ID_STANOWISKO=n.ID_STANOWISKO
  5. WHERE n.login='$a'")) {
  6. echo "Cannot parse query";
  7. }
  8. elseif(mysql_num_rows($rs) == 0) {
  9. echo "No records found";
  10. }
  11. else {
  12. echo "<table class=\"bordered\" cellspacing=\"2\" border=\"1\">\n";
  13. echo "<td>";
  14. echo "<tr><p> IMIE </p></tr>";
  15. echo "<tr><p>NAZWISKO</p></tr>";
  16. echo "<tr><p>MIEJSCOWOSC</p></tr>";
  17. echo "<tr><p>MAIL</p></tr>";
  18. echo "<tr<p>STANOWISKO</p></tr>";
  19. echo "<tr><p>KLUB<p></tr>";
  20. echo "</td>\n";
  21. while($row = mysql_fetch_array($rs)) {
  22. echo "<td><tr>$row[4]</tr><tr>$row[5]</tr><tr>$row[6]</tr><tr>$row[7]</tr>
  23. <tr>$row[3]</tr><tr>$row[2]</tr><</td>\n";
  24. }
  25. echo "</table><br />\n";
  26. }
  27. ?>


var_dump wyswietla mi ladnie login ale podczas wyswietlanai wyrzuca mi
"Cannot parse query Imie Nazwisko Miejscowosc Mail Stanowisko Klub "
i nic sie laduje ;/
To wyswietlanie tabeli tez nie wiem czy nie pokrecilem czegos bo zawsze wyswietlalem kolejne dane w kolejnych wierszach, a teraz chce by mi nowe dane wyswietlilo w kolumnie.

Widzie ktos gdzie popelnilem blad ?
Evinek
mysql_query("ZAPYTANIE") or die(mysql_error());
Sprawdź czy takie zapytanie zadziała w phpMyAdmin (oczywiście login wpisz ręcznie do zapytania).

Tabele(HTML) pokręciłeś.
http://www.w3schools.com/html/html_tables.asp
Ekstazzy
Cytat(Evinek @ 23.07.2012, 11:23:54 ) *
mysql_query("ZAPYTANIE") or die(mysql_error());
Sprawdź czy takie zapytanie zadziała w phpMyAdmin (oczywiście login wpisz ręcznie do zapytania).


Nie za bardzo rozumiem co napisales w tej pierwszej linijce ?
Juz wczesniej to sprawdzilem i pisalem tez o tym wink.gif tak ten moj select dziala w PHPMyAdmin wink.gif
Ekstazzy
Cytat(Evinek @ 23.07.2012, 11:23:54 ) *
mysql_query("ZAPYTANIE") or die(mysql_error());
Sprawdź czy takie zapytanie zadziała w phpMyAdmin (oczywiście login wpisz ręcznie do zapytania).

Tabele(HTML) pokręciłeś.
http://www.w3schools.com/html/html_tables.asp


Ok tabela juz dziala, i mam caly czas blad zapytania ;/ probowalem juz dwoma sposobami i caly czas jest cos nie tak z tym zapytaniem, ale jak juz mowilem kezeli za $a podstawie konkretny login to zapytanie w SQL dziala bez zarzutow ;/
  1. <?php
  2. $a=$_SESSION['login'];
  3. var_dump($a);
  4. if(!$rs = mysql_query("SELECT s. * , n. * from STANOWISKO s LEFT JOIN USER n ON S.ID_STANOWISKO=n.ID_STANOWISKO
  5. WHERE n.login='$a'")) {
  6. echo "Cannot parse query";
  7. }
  8. elseif(mysql_num_rows($rs) == 0) {
  9. echo "No records found";
  10. }
  11. else {
  12. echo "<table class=\"bordered\" cellspacing=\"2\" border=\"1\">\n";
  13. echo"<tr>";
  14. echo"<td>IMIE</td>";
  15. echo"</tr>";
  16. echo"<tr>";
  17. echo"<td>NAZWISKO</td>";
  18. echo"</tr>";
  19. echo"<tr>";
  20. echo"<td>MIEJSCOWOSC</td>";
  21. echo"</tr>";
  22. echo"<tr>";
  23. echo"<td>MAIL</td>";
  24. echo"</tr>";
  25. echo"<tr>";
  26. echo"<td>STANOWISKO</td>";
  27. echo"</tr>";
  28. echo"<tr>";
  29. echo"<td>KLUB</td>";
  30. echo"</tr>";
  31. while($row = mysql_fetch_array($rs)) {
  32. echo "<tr><td>$row[4]</td></tr><tr><td>$row[5]</td></tr><tr><td>$row[6]</td></tr><tr><td>$row[7]</td></tr>
  33. <tr><td>$row[3]</td></tr><tr><td>$row[2]</td></tr>";
  34. }
  35. echo"</table><br/>\n ";
  36. }
  37. ?>
Ekstazzy
Cytat(Ekstazzy @ 23.07.2012, 19:56:57 ) *
Ok tabela juz dziala, i mam caly czas blad zapytania ;/ probowalem juz dwoma sposobami i caly czas jest cos nie tak z tym zapytaniem, ale jak juz mowilem kezeli za $a podstawie konkretny login to zapytanie w SQL dziala bez zarzutow ;/
  1. <?php
  2. $a=$_SESSION['login'];
  3. var_dump($a);
  4. if(!$rs = mysql_query("SELECT s. * , n. * from STANOWISKO s LEFT JOIN USER n ON S.ID_STANOWISKO=n.ID_STANOWISKO
  5. WHERE n.login='$a'")) {
  6. echo "Cannot parse query";
  7. }
  8. elseif(mysql_num_rows($rs) == 0) {
  9. echo "No records found";
  10. }
  11. else {
  12. echo "<table class=\"bordered\" cellspacing=\"2\" border=\"1\">\n";
  13. echo"<tr>";
  14. echo"<td>IMIE</td>";
  15. echo"</tr>";
  16. echo"<tr>";
  17. echo"<td>NAZWISKO</td>";
  18. echo"</tr>";
  19. echo"<tr>";
  20. echo"<td>MIEJSCOWOSC</td>";
  21. echo"</tr>";
  22. echo"<tr>";
  23. echo"<td>MAIL</td>";
  24. echo"</tr>";
  25. echo"<tr>";
  26. echo"<td>STANOWISKO</td>";
  27. echo"</tr>";
  28. echo"<tr>";
  29. echo"<td>KLUB</td>";
  30. echo"</tr>";
  31. while($row = mysql_fetch_array($rs)) {
  32. echo "<tr><td>$row[4]</td></tr><tr><td>$row[5]</td></tr><tr><td>$row[6]</td></tr><tr><td>$row[7]</td></tr>
  33. <tr><td>$row[3]</td></tr><tr><td>$row[2]</td></tr>";
  34. }
  35. echo"</table><br/>\n ";
  36. }
  37. ?>


czyli nikt nie ma pomyslu co mam zle ? Bo niestety nie moge znalezc bledu ;/
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.