Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Edycja rekordów przez formularz PHP
Forum PHP.pl > Forum > PHP
czarekfcb
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?
Tomplus
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.
czarekfcb
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.
Tomplus
Undefined variable? To tylko Notice. Więc pewnie było ok.

Sprawdź w ogóle co ci wypluwa funkcja przez var_dump
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.