Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP] Wysyłanie danych do bazy przez formularz w klasie
Forum PHP.pl > Forum > Przedszkole
Kishin
Witam,

Próbuje zrobić formularz na którym będzie można wpisywać do bazy danych nowe dane, wszystko szło dobrze az do momentu gdy chciałem już wprowadzić konkretną kwote przypisaną do konkretnej klasy.
O co chodzi, przykładowo gdy chce zmienić cene pizzy nr 1 wprowadzam nową cene wciskam zamień i nie wiem jak zrobić tak aby zapisywało w bazie danych do własnie tej pizzy nr 1.
będe wdzięczny za jakąś podpowiedz.


kod klasy:

  1. <?php
  2. class pizze
  3. {
  4. public $value;
  5. public $currentcena;
  6. public $nazwa;
  7. public $pico;
  8. public $decy;
  9. public $hekto;
  10. public $mega;
  11. public $giga;
  12. public $opis;
  13.  
  14.  
  15. function __construct($value)
  16. {
  17.  
  18. $this->value=$value;
  19. $this->currentcena= $this->formularz();
  20.  
  21.  
  22. }
  23.  
  24.  
  25.  
  26. function formularz()
  27. {
  28.  
  29. $this->setvalue();
  30. echo "<form action='' method=".POST.">
  31. Nazwa: <input value='".$this->nazwa."' type=".text." name=".Duza.">
  32. Piko: <input value='".$this->pico."' type=".text." name=".Piko.">
  33. Decy: <input value='".$this->decy."' type=".text." name=".Decy.">
  34. Hekto: <input value='".$this->hekto."' type=".text." name=".Hekto.">
  35. Mega: <input value='".$this->mega."' type=".text." name=".Mega.">
  36. Giga: <input value='".$this->giga."' type=".text." name=".Giga.">
  37. Opis: <textarea type=".text." cols='61' rows='3' name='opis'>$this->opis
  38. </textarea>
  39.  
  40. <input type='submit' name='wysylanie' value='Zamień'></form>";
  41.  
  42. if(($_SERVER['REQUEST_METHOD'] == 'POST') && isset ($_POST['wysylanie']))
  43. {
  44. mysql_connect('localhost', 'root' , 'heyaho1');
  45. mysql_select_db("oferty");
  46. mysql_query("SET NAMES 'utf8'");
  47.  
  48. $query = mysql_query("UPDATE pizza SET WHERE ");
  49.  
  50. }
  51. }
  52. function setvalue()
  53. {
  54.  
  55. mysql_connect('localhost', 'root' , 'heyaho1');
  56. mysql_select_db("oferty");
  57. mysql_query("SET NAMES 'utf8'");
  58.  
  59. $query = mysql_query("select * from pizza where id=$this->value");
  60.  
  61. while($rekord = mysql_fetch_row($query))
  62. {
  63. $this->nazwa=$rekord[1];
  64. $this->pico=$rekord[2];
  65. $this->decy=$rekord[3];
  66. $this->hekto=$rekord[4];
  67. $this->mega=$rekord[5];
  68. $this->giga=$rekord[6];
  69. $this->opis=$rekord[7];
  70. }
  71.  
  72. }
  73.  
  74.  
  75.  
  76. }
  77.  
  78.  
  79. ?>



kod index:
  1. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
  2. <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
  3. <title>nauka</title>
  4.  
  5. </head>
  6.  
  7. <?php
  8.  
  9. include_once 'pizze.php';
  10. for($i = 1; $i < 34; $i++)
  11. {
  12.  
  13. $pizza[$i]= new pizze($i);
  14.  
  15. }
  16.  
  17.  
  18.  
  19.  
  20. ?>
  21.  
  22. </html>


ZAKO
A podrzuć nam jeszcze strukturę bazy danych
Kishin




pomoże ktoś?
k_@_m_i_l
  1. $query = 'UPDATE pizze SET .... WHERE id=XX';


Gdzie:
.... - to dane do zaktualizowania,
xx - to id rekordu.
piotrala
Cytat(Kishin @ 25.05.2012, 13:08:21 ) *
O co chodzi, przykładowo gdy chce zmienić cene pizzy nr 1 wprowadzam nową cene wciskam zamień i nie wiem jak zrobić tak aby zapisywało w bazie danych do własnie tej pizzy nr 1.
będe wdzięczny za jakąś podpowiedz.

Musisz zadbać o przekazywanie parametru ID między wywołaniami skryptu.

  1. echo '<form action="" method="POST">
  2. <input type="hidden" name="id" value="'.$this->value.'">
  3. Nazwa: <input value="'.$this->nazwa.'" type="text" name="Duza">

Dodajesz do formularza ukryte pole ID z kluczem odpowiadającym danej pizzy. Przy okazji, miałeś błąd ze zbędnymi kropkami przy niektórych cudzysłowach.

  1. if(($_SERVER['REQUEST_METHOD'] == 'POST') && isset ($_POST['wysylanie']) && is_numeric($_POST['id']))

Tutaj dodajesz sprawdzanie, czy w polu ID została podana liczba (bo sprytny włamywacz mógłby tam wpisać coś innego).

  1. $query = mysql_query("UPDATE pizza SET (....) WHERE id = {$this->value}");

No i tutaj podpinasz ten klucz pod zapytanie UPDATE.

Widzę, że w konstruktorze masz parametr $value, dlatego tworząc instancję klasy robisz tak:

  1. $pizze = new pizze($_POST['id']);


  1. echo '<form action="" method="POST">
  2. Nazwa: <input value="'.htmlspecialchars($this->nazwa).'" type="text" name="Duza">
  3. Piko: <input value="'.htmlspecialchars($this->pico)."' type="text" name="Piko">
  4. (....)
  5. ';

Tak powinno się osadzać wartości z bazy danych w HTML-u (funkcja htmlspecialchars()). Pozwala to uniknąć ataków XSS i innych nieprzyjemności smile.gif
Kishin
Działa smile.gif
dziękuje bardzo za pomoc
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.