Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MySQL] Zapis danych - fromularz
Forum PHP.pl > Forum > PHP
Crovean
Mam problem z zapisem danych do bazy oto mój plik php, który loguje danego usera ale jak już chcę aby na tym danym loginie można było by wpisać dane np. nazwefirmy czy nip odrazu wylogowuje mnie.
Wyskakują mi również komunikaty takie jak "Undefined index: nazwafirmy , czy Undefined index: NIP "
Również prosił bym o pomoc przy odpowiednim zakomentowaniu zapytania:

$queryA = "UPDATE uzytkownicy SET nazwafirmy='".$nazwafirmy."' and NIP='".$NIP."' where login=questionmark.gifquestionmark.gif";

I już ostatnie pytanie. Co wpisywać na kolejnych plikach php aby uzytkownicy tylko zalogowani mogli je odczytywać...

ps. W miejscach gdzie wyskakuje mi błąd zakomentowałem i opisałem błąd na kodzie po niżej...

Dziękuję z góry za wszelką pomoc... wstydnis.gif

  1.  
  2. <?php
  3. header('Content-type: text/html; charset=UTF-8');
  4.  
  5.  
  6. $action = isset($_GET['action']) ? $_GET['action'] : null;
  7. switch($action)
  8. {
  9. case 'error':
  10. echo 'Wystąpił błąd';
  11. break;
  12. case 'logout':
  13. echo 'Wylogowano';
  14. break;
  15. default:
  16. }
  17.  
  18.  
  19. $salt = '1234';
  20. $_SESSION['login'] = $_POST['login'];
  21. $_SESSION['haslo'] = $_POST['haslo'];
  22.  
  23.  
  24. $nazwafirmy=$_POST['nazwafirmy']; // tutaj wyswietla mi bląd Undefined index: nazwafirmy
  25. $NIP=$_POST['NIP']; // tutaj wyswietla mi bląd Undefined index: NIP
  26.  
  27. $haslo = hash('sha1', $_SESSION['haslo'].$salt);
  28.  
  29. mysql_connect('localhost', 'uzytkosta', 'haslo'); // logowanie
  30. mysql_select_db('uzytkownik');
  31.  
  32. $query = mysql_query("SELECT login, haslo, nazwafirmy, NIP FROM uzytkownicy WHERE login = '" . mysql_escape_string($_SESSION['login']) . "' AND haslo = '". mysql_escape_string($_SESSION['haslo']) . "'");
  33.  
  34. if (mysql_num_rows($query) == 1) {
  35. echo 'Witaj ' . $_SESSION['login'] . '!<br>';
  36. echo '<a href="zalogowany.php?action=logout">Wyloguj się</a>';
  37.  
  38.  
  39. $queryA = "UPDATE uzytkownicy SET nazwafirmy='".$nazwafirmy."' and NIP='".$NIP."' where login=? ? ? ?"; // prosze o pomoc w okresleniu where tak aby mozna bylo zmienic dane zalogowanego uzytkownika
  40. $result = @mysql_query($queryA);
  41.  
  42.  
  43. echo '<div><form action="" method="post">';
  44. echo 'Nazwa Firmy : <input name='.$nazwafirmy.' type="text"/>';
  45. echo '<br />';
  46. echo 'NIP : <input name='.$NIP.' type="text"/>';
  47. echo '<br />';
  48. echo ' <input type="submit" value="Zmień"/>'; // Klikajac wylogowuje mnie a nie zmienia... jak to rozgraniczyc
  49. echo '</form></div>';
  50.  
  51.  
  52. } else {
  53.  
  54. header('Location: logowanie.php');
  55. echo 'Błedny login lub hasło.';
  56. }
  57. ?>
piotr94
do logowania użytkowników źle używasz sesji, powinno być to tak:
  1. if(isset($_POST['login'])&&isset($_POST['haslo'])){
  2. $_SESSION['login'] = $_POST['login'];
  3. $_SESSION['haslo'] = $_POST['haslo'];
  4. }

i potem tak samo co do nazwafirmy:
  1. if(isset($_POST['nazwafirmy'])) $nazwafirmy=$_POST['nazwafirmy'];
  2. if(isset($_POST['NIP'])) $NIP=$_POST['NIP'];

co do błędów z linijek 25 26 - przez $_POST nie jest najwidoczniej przesyłana zmienna NIP i nazwafirmy, ponieważ masz błąd w linijkach 45 47, powinny one wyglądać tak:
  1. echo '<div><form action="nazwa_pliku.php" method="post">';
  2. echo 'Nazwa Firmy : <input name="nazwafirmy" value="'.$nazwafirmy.'" type="text"/>';
  3. echo '<br />';
  4. echo 'NIP : <input name="NIP" value="'.$NIP.'" type="text"/>';
  5. echo '<br />';
  6. echo ' <input type="submit" value="Zmień"/>'; // Klikajac wylogowuje mnie a nie zmienia... jak to rozgraniczyc
  7. echo '</form></div>';
  8.  

i jeszcze linijki 16 nn:
  1. switch($action)
  2. {
  3. case 'error':
  4. echo 'Wystąpił błąd';
  5. break;
  6. case 'logout':
  7. echo 'Wylogowano';
  8. break;
  9. default:
  10. break;
  11. }
  12.  

i życzę więcej uwagi w dalszej pracy
Crovean
O dzięki za pomoc... staram się na bierząco zmieniać i poprawiać...
Po modyfikacji wyświetla mi błędy przy:
1.
echo 'Nazwa Firmy : <input name="nazwafirmy" value="'.$nazwafirmy.'" type="text"/>'; // BŁAD: Undefined variable: nazwafirmy in
echo 'NIP : <input name="NIP" value="'.$NIP.'" type="text"/>'; // BŁAD: Undefined variable: NIP in

2.
$queryA = "UPDATE uzytkownicy SET nazwafirmy='".$nazwafirmy."' and NIP='".$NIP."' where login='". $_SESSION['login'] ."'";
// BŁAD: Undefined variable: nazwafirmy in
// BŁAD: Undefined variable: NIP in

3.
echo ' <input type="submit" value="Zmień"/>'; // Klikajac wylogowuje mnie, a powinno tylko zapisac dane do bazy i pozostac dalej zalogowanym

4.
echo '<a href="zalogowany.php?action=logout">Wyloguj się</a>'; // kilkając nie wylogowuje mnie do strony z logowanie...

  1. <?php
  2. header('Content-type: text/html; charset=UTF-8');
  3.  
  4. $action = isset($_GET['action']) ? $_GET['action'] : null;
  5. switch($action)
  6. {
  7. case 'error':
  8. echo 'Wyst&plusmn;pił bł&plusmn;d';
  9. break;
  10. case 'logout':
  11. echo 'Wylogowano';
  12. break;
  13. default:
  14. break;
  15. }
  16.  
  17.  
  18. $salt = '1234';
  19.  
  20. if(isset($_POST['login'])&&isset($_POST['haslo'])){
  21. $_SESSION['login'] = $_POST['login'];
  22. $_SESSION['haslo'] = $_POST['haslo'];
  23. }
  24.  
  25. if(isset($_POST['nazwafirmy'])) $nazwafirmy=$_POST['nazwafirmy'];
  26. if(isset($_POST['NIP'])) $NIP=$_POST['NIP'];
  27.  
  28.  
  29. $haslo = hash('sha1', $_SESSION['haslo'].$salt);
  30.  
  31. mysql_connect('localhost', 'uzyt_zak', 'haslo'); // logowanie
  32. mysql_select_db('uzytkownik');
  33.  
  34. $query = mysql_query("SELECT login, haslo, nazwafirmy, NIP FROM uzytkownicy WHERE login = '" . mysql_escape_string($_SESSION['login']) . "' AND haslo = '". mysql_escape_string($_SESSION['haslo']) . "'");
  35.  
  36. if (mysql_num_rows($query) == 1) {
  37. echo 'Witaj ' . $_SESSION['login'] . '!<br>';
  38. echo '<a href="zalogowany.php?action=logout">Wyloguj się</a>'; // kilkając nie wylogowuje mnie do strony z logowanie...
  39.  
  40.  
  41. $queryA = "UPDATE uzytkownicy SET nazwafirmy='".$nazwafirmy."' and NIP='".$NIP."' where login='". $_SESSION['login'] ."'"; // Błąd : Undefined variable: nazwafirmy in / oraz Undefined variable: NIP in
  42. $result = @mysql_query($queryA);
  43.  
  44. // tylko że to jest w tym samym pliku tzn. zalogowany.php
  45. echo '<div><form action="zalogowany.php" method="post">';
  46. echo 'Nazwa Firmy : <input name="nazwafirmy" value="'.$nazwafirmy.'" type="text"/>'; // BŁAD: Undefined variable: nazwafirmy in
  47. echo '<br />';
  48. echo 'NIP : <input name="NIP" value="'.$NIP.'" type="text"/>'; // BŁAD: Undefined variable: NIP in
  49. echo '<br />';
  50. echo ' <input type="submit" value="Zmień"/>'; // Klikajac wylogowuje mnie, a powinno tylko zapisac dane do bazy i pozostac dalej zalogowanym rozgraniczyc
  51. echo '</form></div>';
  52.  
  53.  
  54. } else {
  55.  
  56. header('Location: logowanie.php');
  57. echo 'Błedny login lub hasło.';
  58. }
  59. ?>
piotr94
  1. <?php
  2. header('Content-type: text/html; charset=UTF-8');
  3.  
  4. $action = isset($_GET['action']) ? $_GET['action'] : null;
  5. switch($action)
  6. {
  7. case 'error':
  8. echo 'Wystąpił błąd';
  9. break;
  10. case 'logout':
  11. $_SESSION['login']='';
  12. $_SESSION['haslo']='';
  13. unset($_SESSION['login']);
  14. unset($_SESSION['haslo']);
  15. echo 'Wylogowano';
  16. break;
  17. default:
  18. break;
  19. }
  20.  
  21.  
  22. $salt = '1234';
  23.  
  24. if(isset($_POST['login'])&&isset($_POST['haslo'])){
  25. $_SESSION['login'] = $_POST['login'];
  26. $_SESSION['haslo'] = $_POST['haslo'];
  27. }
  28.  
  29. if(isset($_POST['nazwafirmy'])){
  30. $nazwafirmy=$_POST['nazwafirmy'];
  31. }else{
  32. $nazwafirmy='';
  33. }
  34. if(isset($_POST['NIP'])){
  35. $NIP=$_POST['NIP'];
  36. }else{
  37. $NIP='';
  38. }
  39.  
  40.  
  41. $haslo = hash('sha1', $_SESSION['haslo'].$salt);
  42.  
  43. mysql_connect('localhost', 'uzyt_zak', 'haslo'); // logowanie
  44. mysql_select_db('uzytkownik');
  45.  
  46. $query = mysql_query("SELECT login, haslo, nazwafirmy, NIP FROM uzytkownicy WHERE login = '" . mysql_escape_string($_SESSION['login']) . "' AND haslo = '". mysql_escape_string($_SESSION['haslo']) . "'");
  47.  
  48. if (mysql_num_rows($query) == 1) {
  49. echo 'Witaj ' . $_SESSION['login'] . '!<br>';
  50. echo '<a href="zalogowany.php?action=logout">Wyloguj się</a>';
  51.  
  52. if($_POST['form_submited']==1){
  53. $queryA = "UPDATE uzytkownicy SET nazwafirmy='".$nazwafirmy."' and NIP='".$NIP."' where login='". $_SESSION['login'] ."'";
  54. $result = @mysql_query($queryA);
  55. }
  56.  
  57.  
  58. echo '<div><form action="zalogowany.php" method="post">
  59. <input type="hidden" name="form_submited" value="1"/>
  60. Nazwa Firmy : <input name="nazwafirmy" value="'.$nazwafirmy.'" type="text"/>
  61. <br />
  62. NIP : <input name="NIP" value="'.$NIP.'" type="text"/>
  63. <br />
  64. <input type="submit" value="Zmień"/>
  65. </form></div>';
  66.  
  67.  
  68. } else {
  69.  
  70. header('Location: logowanie.php');
  71. echo 'Błedny login lub hasło.';
  72. }
  73. ?>
  74.  

teraz powinno być ok ;-)
staraj się jednak na przyszłość zwracać uwagę na szczegóły.

PS, dziwne, mnie serwer nie wyrzuca błędu jak jakaś zmienna nie została wcześniej zadeklarowana i ma być użyta jako pusta...
Crovean
Wszystko super wielkie dzięki tylko coś mi niezapisuje do bazy... hmmm czy coś w tym zapytaniu jest nie tak ?
  1. $queryA = "UPDATE uzytkownicy SET nazwafirmy='".$nazwafirmy."' and NIP='".$NIP."' where login='". $_SESSION['login'] ."'";
Blame
Tu chyba wszystko jest ok ale wyechuj sobie $_SESSION['login'].
@\/ Słuszna uwaga, zauważyłem to na początku tematu a tu już nie sleep.gif
darko
Czy zamiast AND nie powinno być przecinka i spacji?
Crovean
Heh jesteś wielki smile.gif działa dobrze zapisuje do bazy

Teraz tylko mam bład w: ale już coś kąbinuje z tym...
Undefined index: form_submited

  1. if($_POST['form_submited']==1){ // BŁAD : Undefined index: form_submited
  2. $queryA = "UPDATE uzytkownicy SET nazwafirmy='".$nazwafirmy."', NIP='".$NIP."' where login='". $_SESSION['login'] ."'";
  3. $result = @mysql_query($queryA);
  4. }
  5.  
darko
pokaż kod formularza po modyfikacjach. Zamieniłbym:

  1. echo '<div><form action="zalogowany.php" method="post">
  2. <input type="hidden" name="form_submited" value="1"/>
  3. Nazwa Firmy : <input name="nazwafirmy" value="'.$nazwafirmy.'" type="text"/>
  4. <br />
  5. NIP : <input name="NIP" value="'.$NIP.'" type="text"/>
  6. <br />
  7. <input type="submit" value="Zmień"/>
  8. </form></div>';


na

  1. echo '<div><form action="zalogowany.php" method="post">
  2. Nazwa Firmy : <input name="nazwafirmy" value="'.$nazwafirmy.'" type="text" />
  3. <br />
  4. NIP : <input name="NIP" value="'.$NIP.'" type="text" />
  5. <input type="hidden" name="form_submited" value="1" />
  6. <br />
  7. <input type="submit" value="Zmień" />
  8. </form></div>';


w skrypcie docelowym dla formularza daj jeszcze
  1. print_r($_POST['form_submited']);
Crovean
Obecny kod to:

Teraz myślę nad tym aby odczytywało mi dane z bazy jeśli są...

Tzn. w polu nazwafirmy jak jest w bazie to wyswietla i jak klikam zmien to zmienia mi...

  1. <?php
  2. header('Content-type: text/html; charset=UTF-8');
  3.  
  4. $action = isset($_GET['action']) ? $_GET['action'] : null;
  5. switch($action)
  6. {
  7. case 'error':
  8. echo 'Wyst?pił bł?d';
  9. break;
  10. case 'logout':
  11. $_SESSION['login']='';
  12. $_SESSION['haslo']='';
  13. unset($_SESSION['login']);
  14. unset($_SESSION['haslo']);
  15. echo 'Wylogowano';
  16. break;
  17. default:
  18. break;
  19. }
  20.  
  21.  
  22. $salt = '1234';
  23.  
  24. if(isset($_POST['login'])&&isset($_POST['haslo'])){
  25. $_SESSION['login'] = $_POST['login'];
  26. $_SESSION['haslo'] = $_POST['haslo'];
  27. }
  28.  
  29. if(isset($_POST['nazwafirmy'])){
  30. //$nazwafirmy=addslashes($_POST['nazwafirmy']);
  31. $nazwafirmy=$_POST['nazwafirmy'];
  32. }else{
  33. $nazwafirmy='';
  34. }
  35. if(isset($_POST['NIP'])){
  36. $NIP=$_POST['NIP'];
  37. //$NIP=addslashes($_POST['NIP']);
  38. }else{
  39. $NIP='';
  40. }
  41.  
  42.  
  43. $haslo = hash('sha1', $_SESSION['haslo'].$salt);
  44.  
  45. mysql_connect('localhost', 'uzyt_zak', 'haslo'); // logowanie
  46. mysql_select_db('uzytkownik');
  47.  
  48. $query = mysql_query("SELECT login, haslo, nazwafirmy, NIP FROM uzytkownicy WHERE login = '" . mysql_escape_string($_SESSION['login']) . "' AND haslo = '". mysql_escape_string($_SESSION['haslo']) . "'");
  49.  
  50. if (mysql_num_rows($query) == 1) {
  51. echo 'Witaj ' . $_SESSION['login'] . '!<br>';
  52. echo '<a href="zalogowany.php?action=logout">Wyloguj się</a>';
  53.  
  54.  
  55. //if($_POST['form_submited']==1){
  56. $queryA = "UPDATE uzytkownicy SET nazwafirmy='".$nazwafirmy."', NIP='".$NIP."' where login='". $_SESSION['login'] ."'";
  57. $result = @mysql_query($queryA);
  58. //}
  59.  
  60. echo '<div><form action="zalogowany.php" method="post">
  61. <input type="hidden" name="form_submited" value="1"/>
  62. Nazwa Firmy : <input name="nazwafirmy" value="'.$nazwafirmy.'" type="text"/>
  63. <br />
  64. NIP : <input name="NIP" value="'.$NIP.'" type="text"/>
  65. <br />
  66. <input type="submit" value="Zmień"/>
  67. </form></div>';
  68.  
  69.  
  70. } else {
  71.  
  72. header('Location: logowanie.php');
  73. echo 'Błedny login lub hasło.';
  74. }
  75. ?>

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.