Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Edycja rekordów przez formularz PHP
czarekfcb
post 25.11.2015, 20:49:29
Post #1





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 9.08.2008

Ostrzeżenie: (0%)
-----


Witam,
jestem baaaardzo początkujący w PHP. Chcę poprzez formularz na stronie móc edytować rekordy w danej tabeli.

I teraz tak, mam taki kod w config.php

  1. function get_samochod_data($samochody_id = -1) {
  2.  
  3. if($samochody_id == -1) {
  4. $samochody_id = (int)$_GET['id'];
  5. }
  6. $result = mysql_query("SELECT * FROM `samochody` WHERE `samochody_id` = '{$samochody_id}'");
  7. if(mysql_num_rows($result) == 0) {
  8. return false;
  9. }
  10. return mysql_fetch_assoc($result);
  11. }



i taki kod w edytuj_samochod.php


  1. include 'config.php';
  2.  
  3. $samochod_data = get_samochod_data();
  4.  
  5.  
  6.  
  7. if(isset($_POST['edytuj'])) {
  8. // filtrujemy dane
  9. $_POST['model'] = ($_POST['model']);
  10. $_POST['cena'] = ($_POST['cena']);
  11. $_POST['kaucja'] = ($_POST['kaucja']);
  12.  
  13. // zmienne tymczasowe na treść błędu
  14. $err = '';
  15. // i zapytanie sql
  16. $up2 = '';
  17.  
  18. if(!empty($err)) {
  19. echo $err;
  20. } else {
  21.  
  22. mysql_query("SET NAMES utf8");
  23.  
  24. $result = mysql_query("UPDATE `samochody` SET `samochody_model` = '{$_POST['model']}', `samochody_cena` = '{$_POST['cena']}', `samochody_kaucja` = '{$_POST['kaucja']}' WHERE `samochody_id` = '{$samochod_data['$samochody_id']}'");
  25. if($result) {
  26. // jeśli zapytanie się wykonało to wyświetlamy komunikat...
  27. echo '<p>Twój samochod został poprawnie zaktualizowany.</p>';
  28.  
  29. $samochod_data = get_samochod_data();
  30. } else {
  31. // jeśli zapytanie będzie błędne to wyświetlamy treść errora
  32. echo '<p>Niestety wystąpił błąd:<br>'.mysql_error().'</p>';
  33. }
  34. }
  35. }
  36.  
  37. echo '<form method="post" action="edytuj_samochod.php">
  38. <p>
  39. Model:<br>
  40. <input type="text" value="'.$samochod_data['samochody_model'].'" name="model">
  41. </p>
  42. <p>
  43. Cena:<br>
  44. <input type="number" value="'.$samochod_data['samochody_cena'].'" name="cena">
  45. </p>
  46. <p>
  47. Kaucja:<br>
  48. <input type="number" value="'.$samochod_data['samochody_kaucja'].'" name="kaucja">
  49. </p>
  50.  
  51. <p>
  52. <input type="submit" name="edytuj" value="Edytuj">
  53. </p>
  54. </form>';



Wyświetlanie danych z tabeli mam zrobione i działa, obok każdej pozycji jest przycisk "EDYTUJ" , który przenosi mnie do formularza z danymi z rekordu o podanym ID. Ale gdy chce edytować to wyświetla mi niby komunikat że "Twój samochod został poprawnie zaktualizowany." ale tak się nie dzieje. Zapytanie UPDATE jest poprawne bo sprawdzałem w phpmyadminie.
Przy chęci aktualizacji danych wyświetla mi takie też ostrzeżenie:
  1. Notice: Undefined index: id in ..\config.php on line 69


Co źle zrobiłem?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
Tomplus
post 26.11.2015, 08:24:59
Post #2





Grupa: Zarejestrowani
Postów: 1 879
Pomógł: 230
Dołączył: 20.03.2005
Skąd: Będzin

Ostrzeżenie: (0%)
-----


Notice się pojawia jak nie masz zadeklarowanej zmiennej.
w tym wypadku $id w linii 69.


Wydrukuj sobie "UPDATE `samochody` SET `samochody_model` = '{$_POST['model']}', `samochody_cena` = '{$_POST['cena']}', `samochody_kaucja` = '{$_POST['kaucja']}' WHERE `samochody_id` = '{$samochod_data['$samochody_id']}'" gdy pojawia się prawidłowy komunikat, albo jej części składowe i sprawdź dopiero czy wszystkie wartości dobrze pasują, bo być może cos robisz źle.

Nie musisz w tablicy gdy używasz zmiennej, używać apostrofów: zamiast $samochod_data['$samochody_id'] użyj $samochod_data[$samochody_id] - może to powoduje błąd, bo traktujesz $samochody_id jako tekst.
Go to the top of the page
+Quote Post
czarekfcb
post 26.11.2015, 14:36:52
Post #3





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 9.08.2008

Ostrzeżenie: (0%)
-----


Bez apostrofa wywaliło mi w Undefined variable.

Tzn zapytanie UPDATE sprawdzałem w phpmyadminie i się wykonało elegancko.

Co do tej deklaracji zmiennej $id to gdzie mam ją w takim razie zadeklarować i po co ?

W skrypcie do usuwania rekordów robiłem podobnie i się ładnie usuwa, a tutaj coś nie trybi.
Go to the top of the page
+Quote Post
Tomplus
post 26.11.2015, 16:30:03
Post #4





Grupa: Zarejestrowani
Postów: 1 879
Pomógł: 230
Dołączył: 20.03.2005
Skąd: Będzin

Ostrzeżenie: (0%)
-----


Undefined variable? To tylko Notice. Więc pewnie było ok.

Sprawdź w ogóle co ci wypluwa funkcja przez var_dump
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 08:11