Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][PHP] Wysyłanie danych do bazy przez formularz w klasie
Kishin
post 25.05.2012, 12:08:21
Post #1





Grupa: Zarejestrowani
Postów: 148
Pomógł: 17
Dołączył: 20.12.2011

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


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>




Ten post edytował Kishin 26.05.2012, 09:58:31
Go to the top of the page
+Quote Post
-ZAKO-
post 25.05.2012, 12:24:31
Post #2





Goście







A podrzuć nam jeszcze strukturę bazy danych
Go to the top of the page
+Quote Post
Kishin
post 26.05.2012, 09:57:51
Post #3





Grupa: Zarejestrowani
Postów: 148
Pomógł: 17
Dołączył: 20.12.2011

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






pomoże ktoś?

Ten post edytował Kishin 25.05.2012, 16:59:59
Go to the top of the page
+Quote Post
k_@_m_i_l
post 26.05.2012, 10:08:32
Post #4





Grupa: Zarejestrowani
Postów: 349
Pomógł: 72
Dołączył: 22.01.2008
Skąd: Wadowice/Oświęcim

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


  1. $query = 'UPDATE pizze SET .... WHERE id=XX';


Gdzie:
.... - to dane do zaktualizowania,
xx - to id rekordu.


--------------------
"PHP to człowiek. MySQL to również człowiek."
Go to the top of the page
+Quote Post
piotrala
post 26.05.2012, 10:52:48
Post #5





Grupa: Zarejestrowani
Postów: 15
Pomógł: 4
Dołączył: 20.05.2007
Skąd: Kutno

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


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

Ten post edytował piotrala 26.05.2012, 10:48:32
Go to the top of the page
+Quote Post
Kishin
post 26.05.2012, 12:15:45
Post #6





Grupa: Zarejestrowani
Postów: 148
Pomógł: 17
Dołączył: 20.12.2011

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


Działa smile.gif
dziękuje bardzo za pomoc
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: 19.07.2025 - 11:42