Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: prosty formularz i mysql
Forum PHP.pl > Forum > Gotowe rozwiązania
artko
witam
potrzebuje prosty skrypt, który odczyta, doda, zmodyfikuje i usunie dane z tabeli, ważną rzeczą jest dla mnie aby jedno z pól rekordu zawierało datę i godzinę ostatniej modyfikacji, jeśli ktoś miałby podobny programik to byłbym wdzięczny
pozdrawiam i z góry dziękuję
SongoQ
Nie szukaj gotowcow, postaraj sam sobie go napisac.
artko
próbowałem zrobić to na przykładzie kodu z jednaj ze znanych pozycji literatury : )

  1. <html>
  2. <head>
  3. <title>Ceny warzyw</title>
  4. </head>
  5.  
  6. <body>
  7. <?
  8.  
  9. mysql_connect (&#092;"localhost\", \"root\", \"******\") or
  10. die (&#092;"nie można połączyć się z MySql\");
  11. mysql_select_db (&#092;"warzywa\") or
  12. die (&#092;"nie można połączyć się z bazą warzywa\");
  13.  
  14. if ($co == 'dodaj')  { //dodawanie rekordu
  15. if ($nazwa && $cena && $data)  {
  16. $query = &#092;"INSERT INTO ceny (nr, nazwa, cena, data) VALUES ('', '$nazwa', '$cena', '$data')\";
  17. $wynik = mysql_query ($query);
  18.  
  19. }
  20. } elseif ($co == 'skasuj')  {  //kasowanie
  21.  
  22. $wynik = mysql_query
  23. (&#092;"DELETE FROM ceny WHERE nr = '$id';\");
  24. }
  25.  
  26. $wynik = mysql_query (&#092;"SELECT * FROM ceny;\") or
  27. die (&#092;"błąd w pytaniu\");
  28.  
  29. print &#092;"<TABLE CELLPADDING=5 BORDER=1\";
  30. print &#092;"<TR><TD><B>Nazwa</B></TD><TD><B>Cena</B></TD>\";
  31. print &#092;"<TD><B>Data</B></TD><TD></TD></TR>n\";
  32.  
  33. while ($rekord = mysql_fetch_array ($wynik))  {
  34. $id = $rekord[0];
  35. $nazwa = $rekord[1];
  36. $cena = $rekord[2];
  37. $data = $rekord[3];
  38.  
  39. print &#092;"<TR><TD>$nazwa</TD><TD>$cena</TD><TD>$data</TD><TD>\";
  40. print &#092;"<A HREF=\"ceny.php?co=skasuj&id=$id\">skasuj</A></TD></TR>n\";
  41. }
  42.  
  43. print &#092;"<TABLE>\";
  44. print '<FORM METHOD=\"POST\">Nowy rekord:';
  45. print '<INPUT TYPE=\"hidden\" NAME=\"co\" VALUE=\"dodaj\"<TABLE>';
  46. print '<TR><TD>Nazwa:</TD<TD><INPUT TYPE=\"text\" ';
  47. print 'NAME=\"nazwa\"</TD></TR><TR><TD>Cena:</TD><TD><INPUT ';
  48. print 'TYPE=\"text\" NAME=\"cena\"></TD></TR><TR><TD>Data:</TD>';
  49. print '<TD><INPUT TYPE=\"text\" NAME=\"data\"></TD></TR>';
  50. print '</TABLE><INPUT TYPE=\"submit\" VALUE=\"dodaj\"></FORM>';
  51. ?>
  52.  
  53. </BODY>
  54. </HTML>



ale jest jakiś problem z przekazywaniem danych, nie mogę nic dodać ani usunąć

tu jest ten przykład
SongoQ
Zamiast $co daj $_GET['co']
nospor
Zapewne masz wyłączone register_globals

Na początku skryptu przed pierwszym użyciem $co, daj:
  1. <?php
  2.  
  3. $co = $_GET['co'];
  4.  
  5. ?>
artko
zgadza się, register_globals była wyłączona, już jest on, jednak nbie było żadnej reakcji po modyfikacji poza zniknięciem jednego notica, może diabeł tkwi gdzie indziej?
nospor
Podmien se ten kawalek i powiedz co wyswietla
  1. <?php
  2.  
  3. if ($co == 'dodaj')  { //dodawanie rekordu
  4.  if ($imie && $nazwisko && $telefon)  {
  5.  $query = &#092;"INSERT INTO ceny (nr, nazwa, cena, data) VALUES ('', '$nazwa', '$cena', '$data')\";
  6. $wynik = mysql_query ($query) or die(mysql_error());
  7.  
  8.  }
  9. } elseif ($co == 'skasuj')  {  //kasowanie
  10.  
  11. $wynik = mysql_query
  12.  (&#092;"DELETE FROM ceny WHERE nr = '$id'\") or die(mysql_error());
  13. }
  14.  
  15. ?>
artko
kompletnie nic , dziwne
http://212.244.84.44/ceny.php
nospor
ale te register_globals ustawiles?

  1. <?php
  2.  
  3. if ($co == 'dodaj')   {  //dodawanie rekordu
  4. if ($imie && $nazwisko && $telefon)   {
  5. $query = &#092;"INSERT INTO ceny (nr, nazwa, cena, data) VALUES ('', '$nazwa', '$cena', '$data')\";
  6.   $wynik = mysql_query ($query) or die(mysql_error());
  7. echo &#092;"dodawanka\";
  8. }
  9. } elseif ($co == 'skasuj')   {   //kasowanie
  10.  
  11. $wynik = mysql_query
  12. (&#092;"DELETE FROM ceny WHERE nr = '$id'\") or die(mysql_error());
  13. echo &#092;"kasowanko\";
  14. }
  15.  
  16. ?>

Jak dalej sie nic nie wyswietli to znaczy ze ni ustawiles smile.gif
artko
sory, mea coulpa, nie włączyłem, już jest dobrze, tylko przy starcie te nieszczęsne noticy się pojawiają, w każdym razie wielkie dzięki
nospor
Daj tak to nie będą się pojawiaŁy
  1. <?php
  2.  
  3. if (isset($co) && $co == 'dodaj')  { //dodawanie rekordu
  4. if ($imie && $nazwisko && $telefon)  {
  5. $query = &#092;"INSERT INTO ceny (nr, nazwa, cena, data) VALUES ('', '$nazwa', '$cena', '$data')\";
  6. $wynik = mysql_query ($query) or die(mysql_error());
  7. echo &#092;"dodawanka\";
  8. }
  9. } elseif (isset($co) && $co == 'skasuj')  {  //kasowanie
  10.  
  11. $wynik = mysql_query
  12. (&#092;"DELETE FROM ceny WHERE nr = '$id'\") or die(mysql_error());
  13. echo &#092;"kasowanko\";
  14. }
  15.  
  16. ?>
artko
bardzo ładnie, a dlaczego tak się dzieje?
SongoQ
Bo wtedy sprawdzasz czy sa zmienne ustawione, jesli tak to odwolujesz sie do niech.
nospor
gdyż przy starcie skryptu zmienna $co nie jest zainicjalizowana a ty siędo niej próbujesz odwołać. warunek isset($co) sprawdza czy jest zainicjalizowana.
zmienna $co pojawi się dopiero po wysłaniu formularza, czyli gdy w tablicy superglobalnej $_POST pojawi się index co.
Bardziej bezpieczne by było jabyś się odwoływał tak :$_POST['co'] anie $co, ale to już Twoja sprawa
artko
dziwi mnie tylko to że program działa tak czy siak i jest ok. Robię stronę na php-fusion ( www.ms.prv.pl ) i też są miejsca, w których pojawiają się noticy wszelakie, zaznaczam że wszystko chodzi ok. Może w php.ini jest coś co odpowiada za to, coś co można wyłączyć lub włączyć i zapomnieć. Czy trzeba we wszystkich tych miejscach wstawiać takie warunki. Troche to ryzykowne w moim przypadku przerabiać taki portal gdyż znam tylko podstawy php.
SongoQ
No to wylacz sobie jesli nie chesz przerabiac ale z 2 strony jak cos piszesz od podstaw to warto miec wlaczone.
artko
witam
wzbogaciłem skrypt o poprawianie rekordu

  1. <html>
  2. <head>
  3. <title>Ceny warzyw</title>
  4. </head>
  5.  
  6. <body>
  7. <?
  8. $today = date(&#092;"j-n-Y\");
  9. $godzina = date(&#092;"H:i:s\");
  10.  
  11.  
  12.  
  13. mysql_connect (&#092;"localhost\", \"root\", \"****\") or
  14. die (&#092;"nie można połączyć się z MySql\");
  15. mysql_select_db (&#092;"warzywa\") or
  16. die (&#092;"nie można połączyć się z bazą warzywa\");
  17.  
  18. if (isset($co) && $co == 'dodaj')  { //dodawanie rekordu
  19. if ($nazwa && $cena && $today && $godzina)  {
  20. $query = &#092;"INSERT INTO ceny (nr, nazwa, cena, data) VALUES ('', '$nazwa', '$cena', '$today, $godzina')\";
  21. $wynik = mysql_query ($query) or die(mysql_error());
  22.  
  23. }
  24. }  elseif (isset($co) && $co == 'popraw') { //poprawianie
  25. if ($nazwa && $cena && $today && $godzina)  {
  26. $query = &#092;"UPDATE ceny SET nazwa='$nazwa', cena='$cena', data='$today, $godzina';\";
  27. $wynik = mysql_query ($query);
  28. }
  29.  
  30. } elseif (isset($co) && $co == 'edytuj') { //przygotowanie poprawek
  31.  
  32. $query = &#092;"SELECT * FROM ceny where nr='$id' ORDER BY nazwa;\"; 
  33. $wynik = mysql_query ($query);
  34. $rekord = mysql_feth_array ($wynik);
  35. $id = $rekord[0]; $nazwa = $rekord[1]; $cena = $rekord[2]; $data = $rekord[3];
  36. print '<FORM METHOD=\"POST\">Poprawa rekordu:';
  37. print '<INPUT TYPE=\"hidden\" NAME=\"co\" VALUE=\"popraw\">';
  38. print '<INPUT TYPE=\"hidden\" NAME=\"id\" VALUE=\"'.$id.'\"><TABLE>';
  39. print '<TR><TD>Nazwa:</TD><TD>INPUT TYPE=\"text\" ';
  40. print 'NAME=\"nazwa\" VALUE=\"'.$nazwa.'\"></TD></TR><TR><TD>Cena:';
  41. print '</TD><TD><INPUT TYPE=\"text\" NAME=\"cena\"';
  42. print 'VALUE=\"'.$cena;
  43. print '\"></TD></TR><TR><TD>Data: </TD><TD><INPUT TYPE=\"text\"';
  44. print 'NAME=\"data\" VALUE=\"'.$data.'\"></TD></TR>';
  45. print '</TABLE><INPUT TYPE=\"submit\" VALUE=\"Popraw\"></FORM>';
  46. } 
  47.  
  48.  
  49.  
  50.  
  51.  elseif (isset($co) && $co == 'skasuj')  {  //kasowanie
  52.  
  53. $wynik = mysql_query
  54. (&#092;"DELETE FROM ceny WHERE nr = '$id'\") or die(mysql_error());
  55.  
  56. }
  57.  
  58. $wynik = mysql_query (&#092;"SELECT * FROM ceny ORDER BY nazwa;\") or
  59. die (&#092;"błąd w pytaniu\");
  60.  
  61. print &#092;"<TABLE CELLPADDING=5 BORDER=1\";
  62. print &#092;"<TR><TD><B>Nazwa</B></TD><TD><B>Cena</B></TD>\";
  63. print &#092;"<TD><B>Data</B></TD><TD></TD></TR>n\";
  64.  
  65. while ($rekord = mysql_fetch_array ($wynik))  {
  66. $id = $rekord[0];
  67. $nazwa = $rekord[1];
  68. $cena = $rekord[2];
  69. $data = $rekord[3];
  70.  
  71. print &#092;"<TR><TD>$nazwa</TD><TD>$cena</TD><TD>$data</TD><TD>\";
  72. print &#092;"<A HREF=\"ceny.php?co=skasuj&id=$id\">skasuj</A></TD><td>\";
  73. print &#092;"<A HREF=\"ceny.php?co=popraw&id=$id\">popraw</A></TD></TR>n\";
  74. }
  75.  
  76. print &#092;"<TABLE>\";
  77. print '<FORM METHOD=\"POST\">Nowy rekord:';
  78. print '<INPUT TYPE=\"hidden\" NAME=\"co\" VALUE=\"dodaj\"<TABLE>';
  79. print '<TR><TD>Nazwa:</TD<TD><INPUT TYPE=\"text\" ';
  80. print 'NAME=\"nazwa\"</TD></TR><TR><TD>Cena:</TD><TD><INPUT ';
  81. print 'TYPE=\"text\" NAME=\"cena\"></TD></TR>';
  82. print '</TABLE><INPUT TYPE=\"submit\" VALUE=\"dodaj\"></FORM><br>';
  83.  
  84.  
  85. ?>
  86.  
  87. </BODY>
  88. </HTML>



no i znów problem ze zmiennymi, dlaczego przy dodawaniu rekordu jest ok a przy poprawianiu tych zmiennych nie może rozpoznać?

ps, tak wiem, nie jest to w żaden sposób zabezpieczone i można program rozwalić
pozdrawiam
nospor
przy popraw sprawdzasz, czy jest $nazwa, $cena a w linku tego nie ma. przecież do popraw wchodzisz pprzez link.
pozatym w zapytaniu popraw poprawiasz wszystko jak leci, bez warunku
artko
więc trzeba to zupełnie inaczej zrobić? może wystarczy jakaś lekka modyfikacja?
nospor
jak checesz tylko lekką modyfikację to dodaj nazwę i cenę do linku.
artko
witam ponownie smile.gif
wystarczyło że znów chciałem coś dodać i znów jest problem. Otóż skrypt tylko udaje że poprawia dane, "popraw" jest dobrze wywoływane ale dane się nie zmieniają, hmmm..


  1. <? 
  2. $data = date(&#092;"j-n-Y, H:i:s\");
  3.  
  4.  
  5. mysql_connect (&#092;"localhost\", \"***\", \"***\") or 
  6. die (&#092;"Nie można połączyć się z MySQL\");
  7. mysql_select_db (&#092;"topaz_tools\") or 
  8. die (&#092;"Nie można połączyć się z bazą warzyw\");
  9.  
  10. if (isset($co) && $co == 'dodaj') { // dodawanie rekordu
  11. if ($nazwa && $cena && $uwagi && $data) { 
  12. $query = &#092;"INSERT INTO ceny_warzyw (id, nazwa, cena, \";
  13. $query .= &#092;"uwagi, data) VALUES ('', '$nazwa', '$cena', '$uwagi', '$data');\";
  14. $wynik = mysql_query ($query);
  15.  
  16. }
  17. } elseif (isset($co) && $co == 'popraw') { // poprawianie rekordu
  18. if ($nazwa && $cena && $uwagi && $data) { 
  19. $query = &#092;"UPDATE ceny SET nazwa='$nazwa', cena=\";
  20. $query .= &#092;"'$cena', uwagi='$uwagi', data='$data' WHERE id='$id';\";
  21. $wynik = mysql_query ($query);
  22.  
  23. }
  24. } elseif (isset($co) && $co == 'edytuj') { // przygotowanie do poprawek
  25.  $query = &#092;"SELECT * FROM ceny_warzyw where id='$id';\";
  26.  $wynik = mysql_query ($query);
  27.  $rekord = mysql_fetch_array ($wynik);
  28.  $id = $rekord[0]; $nazwa = $rekord[1]; $cena = $rekord[2]; $uwagi = $rekord[3]; $data = $rekord[4];
  29.  
  30.  print '<FORM METHOD=\"POST\">Podaj aktualne dane:';
  31.  print '<INPUT TYPE=\"hidden\" NAME=\"co\" VALUE=\"popraw\">';
  32.  print '<INPUT TYPE=\"hidden\" NAME=\"id\" VALUE=\"'.$id.'\"><TABLE>';
  33.  print '<TR><TD>Nazwa:</TD><TD><INPUT TYPE=\"text\" ';
  34.  print 'NAME=\"nazwa\" VALUE=\"'.$nazwa.'\"></TD></TR><TR><TD>Cena:';
  35.  print '</TD><TD><INPUT TYPE=\"text\" NAME=\"cena\"';
  36.  print 'VALUE=\"'.$cena;
  37.  print '\"></TD></TR><TR><td>Uwagi:</TD<TD><INPUT TYPE=\"text\" ';
  38.  print 'NAME=\"uwagi\" VALUE=\"'.$uwagi.'\"></TD></TR>';
  39.  print '</TABLE><INPUT TYPE=\"submit\" VALUE=\"popraw\"></FORM>';
  40.  
  41.  
  42.  
  43. } elseif (isset($co) && $co == 'skasuj') { // kasowanie
  44. $wynik = mysql_query 
  45.  (&#092;"DELETE FROM ceny_warzyw WHERE id = '$id';\");
  46. }
  47.  
  48. $wynik = mysql_query (&#092;"SELECT * FROM ceny_warzyw ORDER BY nazwa;\");
  49.  
  50. print &#092;"<TABLE CELLPADDING=5 BORDER=1>\";
  51. print &#092;"<TR BGCOLOR=#FF9966><TD><B><center>Nazwa</center></B></TD><TD><B><center>Cena</center></B></TD>\";
  52. print &#092;"<TD><B><center>Uwagi</center></B></TD><TD><B><center>Data</center></B></TD></TR>n\";
  53.  
  54. while ($rekord = mysql_fetch_array ($wynik)) {
  55. $id = $rekord[0];
  56. $nazwa = $rekord[1];
  57. $cena = $rekord[2];
  58. $uwagi = $rekord[3];
  59. $data = $rekord[4];
  60. print &#092;"<TR><TD>$nazwa</TD><TD><b>$cena</b></TD><TD>$uwagi</TD><TD>$data</TD><TD>\";
  61. print &#092;"<A HREF=\"**.php?co=skasuj&id=$id\">skasuj</A></TD><TD>\";
  62. print &#092;"<A HREF=\"**.php?co=edytuj&id=$id\"><b>edytuj</b></A></TD></TR>n\";
  63. }
  64. print &#092;"</TABLE>\";
  65. print '<FORM METHOD=\"POST\"><br>Dodaj nowa pozycję do listy:';
  66. print '<INPUT TYPE=\"hidden\" NAME=\"co\" VALUE=\"dodaj\"><TABLE>';
  67. print '<TR><TD>Nazwa:</TD><TD><INPUT TYPE=\"text\" ';
  68. print 'NAME=\"nazwa\"></TD></TR><TR><TD>Cena:</TD><TD><INPUT ';
  69. print 'TYPE=\"text\" NAME=\"cena\"></TD></TR>';
  70. print '<TR><TD>Uwagi:</TD><TD><INPUT ';
  71. print 'TYPE=\"text\" NAME=\"uwagi\"></TD></TR>';
  72. print '</TABLE><INPUT TYPE=\"submit\" VALUE=\"Dodaj\"></FORM>';
  73. ?>
nospor
daj tak:
  1. <?php
  2.  
  3. //....
  4. $query = &#092;"UPDATE ceny SET nazwa='$nazwa', cena=\";
  5. $query .= &#092;"'$cena', uwagi='$uwagi', data='$data' WHERE id='$id';\";
  6. $wynik = mysql_query ($query) or die(mysql_error());
  7. echo &#092;"<br />\".$query;
  8. //...
  9.  
  10. ?>
Jak nie wywali ci bledu to srpawdz czy w zapytaniu co echo dalem jest dobre id. Daj tez to zapytanie do bazy ręcznie (phpmyadmin lub cokolwiek innego) i zobacz czy sie dodaje
artko
jak człowiek ślepy to nie dziwne. sory ale dopiero w Twoim poście zauważyłem że tabelka nazywa się ceny_warzyw a nie ceny, wszystko gra, dzięki
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.