Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> dodawanie i usuwanie rekordu z tabeli w bazie
mąki
post 12.05.2005, 12:22:42
Post #1





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 12.05.2005

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


Mam problem, a że jestem bardzo początkujący, to nie wiem jak sobie z tym poradzić.
Odpala się tabela, przy każdych danych jest skasuj, na dole formularz dodawania danych, ale jak coś dodaje czy kasuje to nie wprowadza żadnych zmian. Kod zrobiłem na podstawie gotowca. Proszę o pomoc.

  1. <HTML>
  2. <HEAD>
  3. <META HTTP-EQUIV=\"Content-Type\" CONTENT=\"text/html; charset=iso-8859-2\">
  4. <TITLE>Czytanie z bazy danych, kasowanie i dodawanie rekordów</TITLE>
  5. </HEAD>
  6. <BODY>
  7. <? // Dodawanie rekordu zrealizowano za pomocą zapytania INSERT.
  8.  // Dane są wczytywane w przygotowanym formularzu.
  9.  
  10. mysql_connect (&#092;"localhost\", \"root\", \"abc123\") or 
  11. die (&#092;"Nie można połączyć się z MySQL\");
  12. mysql_select_db (&#092;"biblioteka\") or 
  13. die (&#092;"Nie można połączyć się z bazą cwphp4\");
  14.  
  15. if ($co == 'dodaj') { // dodawanie rekordu
  16. if ($tytul && $autor && $slowa_kluczowe){ 
  17. $query = &#092;"INSERT INTO ksiazki ( id, tytul, autor, slowa_kluczowe , typ) VALUES ('', '$tytul', '$autor', '$slowo_kluczowe', '$typ');\";
  18. $wynik = mysql_query ($query);
  19. }
  20. } elseif ($co == 'skasuj') { // kasowanie
  21. $wynik = mysql_query 
  22.  (&#092;"DELETE FROM ksiazki WHERE nr = '$id';\");
  23. }
  24.  
  25. $wynik = mysql_query (&#092;"SELECT * FROM ksiazki;\") or 
  26. die (&#092;"błąd w pytaniu\");
  27.  
  28. print &#092;"<TABLE CELLPADDING=5 BORDER=2>\";
  29. print &#092;"<TR><TD><B>Id</B><TD><B>Tytul</B></TD><TD><B>autor</B></TD>\";
  30. print &#092;"<TD><B>slowa_kluczowe</B></TD><TD><B>typ</B></TD><TD><B>kasowanie</B></TD></TR>n\";
  31.  
  32. while ($rekord = mysql_fetch_array ($wynik)) {
  33. $id = $rekord[0];
  34. $tytul = $rekord[1];
  35. $autor = $rekord[2];
  36. $slowa_kluczowe = $rekord[3];
  37. $typ = $rekord[4];
  38.  
  39. print &#092;"<TR><TD>$id</TD><TD>$tytul</TD><TD>$autor</TD><TD>$slowa_kluczowe</TD><TD>$typ</TD><TD>\";
  40. print &#092;"<A HREF=\"index.php?co=skasuj&id=$id\">skasuj</A></TD></TR>n\";
  41. }
  42. print &#092;"</TABLE>\";
  43. print '<FORM METHOD=\"POST\">Nowy rekord:';
  44. print '<INPUT TYPE=\"hidden\" NAME=\"co\" VALUE=\"dodaj\"><TABLE>';
  45. print '<TR><TD>Tytul:</TD><TD><INPUT TYPE=\"text\" ';
  46. print 'NAME=\"tytul\"></TD></TR><TR><TD>Autor:</TD><TD><INPUT ';
  47. print 'TYPE=\"text\" NAME=\"autor\"></TD></TR><TR><TD>Slowa_kluczowe:</TD>';
  48. print '<TD><INPUT TYPE=\"text\" NAME=\"slowa_kluczowe\"></TD></TR>';
  49. print '<TD>TYP:</TD><TD><INPUT TYPE=\"text\" NAME=\"typ\"></TD></TR>';
  50. print '</TABLE><INPUT TYPE=\"submit\" VALUE=\"Dodaj\"></FORM>';
  51. ?>
  52.  
  53. </BODY>
  54. </HTML>


--

aleksander


Ten post edytował aleksander 13.05.2005, 11:44:11
Go to the top of the page
+Quote Post
nospor
post 12.05.2005, 12:32:19
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




zobacz w php.ini czy masz ustawioną wartość register_globals


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
switch
post 12.05.2005, 12:34:57
Post #3





Grupa: Zarejestrowani
Postów: 55
Pomógł: 0
Dołączył: 19.08.2003

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


A przypadkiem nie jest to klasyczny problem żle przekazanych wartośći?
Może nie wpisałeś:
  1. <?php
  2. $co = $_POST['dodaj'];
  3. $kasuj = $_POST['skasuj'];
  4.  
  5. ?>
Go to the top of the page
+Quote Post
nospor
post 12.05.2005, 12:40:28
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




u kolegi skasuj przekazywane jest przez url, więc jeżeli już coś to tak:
  1. <?php
  2.  
  3. $co=null;
  4. if (isset($_POST['co']))
  5.     $co=$_POST['co'];
  6. elseif (isset($_GET['co']) && isset($_GET['id']))
  7. {
  8.    $co=$_GET['co'];
  9.  $id=$_GET['id'];
  10. }
  11.  
  12. ?>


Ten post edytował nospor 12.05.2005, 12:41:34


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
mąki
post 12.05.2005, 21:23:24
Post #5





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 12.05.2005

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


Nic mi nie działa, albo poprostu źle wpisałem.
Jak bym mógł otrzymać ten kod z odpowiednimi poprawkami tam gdzie mają być, to bym spróbował.
Pliku php.ini bez żadnego dopisku nie znalazłem, mam tylko takie:
php.ini-dist
php.ini-recommended
poprawiłem w obu na on.
Używam phpMyAdmin 2.6.1-pl3.
Go to the top of the page
+Quote Post
nospor
post 13.05.2005, 07:26:32
Post #6





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Bodajze coś takiego
  1. ?>
  2. <HTML>
  3. <HEAD>
  4. <META HTTP-EQUIV=\"Content-Type\" CONTENT=\"text/html; charset=iso-8859-2\">
  5. <TITLE>Czytanie z bazy danych, kasowanie i dodawanie rekordów</TITLE>
  6. </HEAD>
  7. <BODY>
  8. <? // Dodawanie rekordu zrealizowano za pomocą zapytania INSERT.
  9. // Dane są wczytywane w przygotowanym formularzu.
  10.  
  11. mysql_connect (&#092;"localhost\", \"root\", \"abc123\") or 
  12. die (&#092;"Nie można połączyć się z MySQL\");
  13. mysql_select_db (&#092;"biblioteka\") or 
  14. die (&#092;"Nie można połączyć się z bazą cwphp4\");
  15. $co=null;
  16. if (isset($_POST['co']))
  17. {
  18.     $co=$_POST['co'];
  19.     $tytul=$_POST['tytul']; 
  20.     $autor=$_POST['autor']; 
  21.     $slowa_kluczowe=$_POST['slowa_kluczowe'];
  22.     $typ=$_POST['typ']; 
  23. }
  24. elseif (isset($_GET['co']) && isset($_GET['id']))
  25. {
  26.    $co=$_GET['co'];
  27.    $id=$_GET['id'];
  28. }
  29. if ($co == 'dodaj') { // dodawanie rekordu
  30. if ($tytul && $autor && $slowa_kluczowe){ 
  31. $query = &#092;"INSERT INTO ksiazki ( id, tytul, autor, slowa_kluczowe , typ) VALUES ('', '$tytul', '$autor', '$slowo_kluczowe', '$typ');\";
  32. $wynik = mysql_query ($query);
  33. }
  34. } elseif ($co == 'skasuj') { // kasowanie
  35. $wynik = mysql_query 
  36. (&#092;"DELETE FROM ksiazki WHERE nr = '$id';\");
  37. }
  38.  
  39. $wynik = mysql_query (&#092;"SELECT * FROM ksiazki;\") or 
  40. die (&#092;"błąd w pytaniu\");
  41.  
  42. print &#092;"<TABLE CELLPADDING=5 BORDER=2>\";
  43. print &#092;"<TR><TD><B>Id</B><TD><B>Tytul</B></TD><TD><B>autor</B></TD>\";
  44. print &#092;"<TD><B>slowa_kluczowe</B></TD><TD><B>typ</B></TD><TD><B>kasowanie</B></TD></TR>n\";
  45.  
  46. while ($rekord = mysql_fetch_array ($wynik)) {
  47. $id = $rekord[0];
  48. $tytul = $rekord[1];
  49. $autor = $rekord[2];
  50. $slowa_kluczowe = $rekord[3];
  51. $typ = $rekord[4];
  52.  
  53. print &#092;"<TR><TD>$id</TD><TD>$tytul</TD><TD>$autor</TD><TD>$slowa_kluczowe</TD><TD>$typ</TD><TD>\";
  54. print &#092;"<A HREF=\"index.php?co=skasuj&id=$id\">skasuj</A></TD></TR>n\";
  55. }
  56. print &#092;"</TABLE>\";
  57. print '<FORM METHOD=\"POST\">Nowy rekord:';
  58. print '<INPUT TYPE=\"hidden\" NAME=\"co\" VALUE=\"dodaj\"><TABLE>';
  59. print '<TR><TD>Tytul:</TD><TD><INPUT TYPE=\"text\" ';
  60. print 'NAME=\"tytul\"></TD></TR><TR><TD>Autor:</TD><TD><INPUT ';
  61. print 'TYPE=\"text\" NAME=\"autor\"></TD></TR><TR><TD>Slowa_kluczowe:</TD>';
  62. print '<TD><INPUT TYPE=\"text\" NAME=\"slowa_kluczowe\"></TD></TR>';
  63. print '<TD>TYP:</TD><TD><INPUT TYPE=\"text\" NAME=\"typ\"></TD></TR>';
  64. print '</TABLE><INPUT TYPE=\"submit\" VALUE=\"Dodaj\"></FORM>';
  65. ?>
  66.  
  67. </BODY>
  68. </HTML>
  69. <?
  70.  
  71. ?>


lub tak jak miales, tylko w php.ini ustaw register_globals=on

Ten post edytował nospor 13.05.2005, 07:29:57


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
mąki
post 13.05.2005, 09:54:49
Post #7





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 12.05.2005

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


Dzięki jest postęp smile.gif
Już dodaje dane do bazy, ale z indeksem 0, przez co nie mogę wprowadzić więcej niż jednego wpisu. Jak zrobić, aby dodawał wpis z kolejnym indeksem np. 5. Dalej nie chce usuwać, co poradzić? Z góry dziękuję za pomoc.
Go to the top of the page
+Quote Post
-zwiteq-
post 13.05.2005, 10:35:02
Post #8





Goście







Czesc
A masz ustawione pole tabeli sql z indeksem na auto inkrementacje?
pozdrawiam
witek
Go to the top of the page
+Quote Post
nospor
post 13.05.2005, 10:36:14
Post #9





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




odnośnie wstawiania:
Daj pole id typu autoincrement a sql ma tak wygladać:
$query = "INSERT INTO ksiazki ( id, tytul, autor, slowa_kluczowe , typ) VALUES (null, '$tytul', '$autor', '$slowo_kluczowe', '$typ');";

odnosie kasowania:
w tabeli ksiązki masz pole id, a przy kasowaniu używasz pola nr. Co to za pole?
POwinno chyba być:
$wynik = mysql_query
("DELETE FROM ksiazki WHERE id = '$id';");

Ten post edytował nospor 13.05.2005, 10:38:49


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
mąki
post 13.05.2005, 13:05:39
Post #10





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 12.05.2005

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


Wielkie dzięki, już wszystko działa.
Go to the top of the page
+Quote Post
-Gość_Damian-
post 18.05.2005, 19:39:53
Post #11





Goście







Witam, skorzystałem z powyższego przykładu - działa świetnie. Też jestem początkujący i chciałbym zapytać jak dodatkowo zrobić przycisk edycji rekordu?

Aby obok likny skasuj, pojawił się link edytuj -> odwołujący się do innej strony np. edycja.php i tam była wyświetlona zawartość konkretnego rekordu.

Wiem że to musi być proste, jak sam coś wydłubię to wrzucę. Z góry jednak dziękuję za Waszą nieocenioną pomoc

Pozdrowienia

Damian
Go to the top of the page
+Quote Post
nospor
post 19.05.2005, 07:36:56
Post #12





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




to trochę inna bajka. podam ci przepis slowny, bo na kod nie mam akurat czasu.
Obok linka kasuj robisz linka edytuj do najlepiej (moim zdaniem) innej strony aby już nie mieszać w tym index.php:
print "<A HREF=\"edit.php?id=$id\">edytuj</A>\n";

w edit.php pobierasz z URL id produktu,patrzysz czy nie bylo submit i jak nie bylo pobierasz z bazy niezbędne ci dane i wpisujesz je do formualrza. W formularzu robisz submit do tej samej strony. Patrzysz czy byl submit, jak tak to poprawiasz rekord o otrzymane dane.

Ten post edytował nospor 19.05.2005, 07:37:34


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
-Guest-
post 20.05.2005, 18:26:16
Post #13





Goście







Witam,

dzieki za pomoc i wskazowki. Napisalem co nieco ale nie wszystko dziala: Tzn. Dane sa wyswietlane w boksach i mozna je edytowac, natomiast po zapisaniu updatowi podlega tylko rekord z kluczem 0.

Moja tabela sklada sie z kolumn (IDC, Firma, Name, Dane, Email)

  1. <?php
  2. $co=null;
  3. if (isset($_POST['co']))
  4. {
  5. $co=$_POST['co'];
  6. $IDC=$_POST['IDC'];
  7. }
  8. elseif (isset($_GET['co']) && isset($_GET['IDC']))
  9. {
  10.  $co=$_GET['co'];
  11.  $IDC=$_GET['IDC'];
  12. }
  13. if ($co == 'popraw') { // dodawanie rekordu
  14. if ($Firma){
  15. $query = &#092;"UPDATE kontakty SET Firma='\".$Firma.\"' WHERE IDC='\".$IDC.\"';\";
  16. $wynik = mysql_query ($query);
  17. }
  18. if ($Name){
  19. $query = &#092;"UPDATE kontakty SET Name='\".$Name.\"' WHERE IDC='\".$IDC.\"';\";
  20. $wynik = mysql_query ($query);
  21. }
  22. if ($Dane){
  23. $query = &#092;"UPDATE kontakty SET Dane='\".$Dane.\"' WHERE IDC='\".$IDC.\"';\";
  24. $wynik = mysql_query ($query);
  25. }
  26. if ($Email){
  27. $query = &#092;"UPDATE kontakty SET Email='\".$Email.\"' WHERE IDC='\".$IDC.\"';\";
  28. $wynik = mysql_query ($query);
  29. }
  30. }
  31. $wynik = mysql_query (&#092;"SELECT * FROM kontakty WHERE IDC='\".$IDC.\"';\") or
  32. die (&#092;"bład w pytaniu\");
  33.  
  34. print '<FORM METHOD=\"POST\">Nowy rekord:';
  35. print '<INPUT TYPE=\"hidden\" NAME=\"co\" VALUE=\"popraw\"><TABLE>';
  36.  
  37. while ($rekord = mysql_fetch_array ($wynik)) {
  38. $Firma = $rekord[1];
  39. $Name = $rekord[2];
  40. $Dane = $rekord[3];
  41. $Email = $rekord[4];
  42.  echo &#092;"<tr><td><b>ID</b></td><td><TEXTAREA NAME=\"Firma\">$Firma</TEXTAREA></td></tr>\";
  43.  echo &#092;"<tr><td colspan=\"2\"><TEXTAREA NAME=\"Name\" COLS=50>$Name</TEXTAREA></td></tr>\";
  44.  echo &#092;"<tr><td colspan=\"2\"><TEXTAREA NAME=\"Dane\" ROWS=10 COLS=50>$Dane</TEXTAREA></td></tr>\";
  45.  echo &#092;"<tr><td colspan=\"2\"><TEXTAREA NAME=\"Email\" COLS=50>$Email</TEXTAREA></td></tr>\";  
  46. }
  47. print &#092;"</TABLE><input type=\"button\" value=\"Powrót\" onClick=\"parent.location.href='see.kontakt.php?IDC=$IDC'\">\";
  48. print '<INPUT TYPE=\"submit\" VALUE=\"Popraw\"></FORM>';
  49. ?>


Bede bardzo wdzieczny za pomoc w rozwiazaniu klopotu. Jak dojde do tego sam wczesniej to natychmiast dodam posta. Pozdrawiam Damian
Go to the top of the page
+Quote Post
nospor
post 21.05.2005, 07:10:55
Post #14





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Po pierwsze: nie ma sensu robić kilka update na jednym wierszu. Wystarczy jeden:
przyklad: update tabela set columna1=war1,columna2=war2 where id=jakiesid
rozumiesz?Jak tak to popraw u siebie

Po drugie:skoro update'a robi na kluczu 0,znaczy że do IDC zapisujesz 0 lub bodajze nic.Najwyraźniej gdzieś źle robisz linka z IDC. Daj echo $_GET['IDC'] i zobacz czy ci dobrze je wyswietla.
POzatym widzę że robisz $_POST['IDC']. Do czego to ma byc? Przecież w tym kodzie nigdzie w formularzu nie dales pola o name=IDC. Tam zawsze bedzie nic.

troche zagmatwany ten kod, albo ja nie kumam twqego toku rozumowania
Pozdro,


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
-Gość_Damian-
post 21.05.2005, 17:31:25
Post #15





Goście







Witam ponownie! Wszystko już działa. Przeczytałem Twoje rady i teraz działa wyśmienicie. Mój kod był niekumaty bo jestem początkujący ;-). Najważniejszy chyba błąd to było umieszczenie w kodzie u góry:
  1. <?php
  2.  
  3. $co=null;
  4.  
  5. ?>

Ale pozostałe rzeczy też pozmieniałem. Poniżej gotowy skrypcik do edycji zawartości - może przyda sie takim jak ja ;-)
  1. <?php
  2.  
  3. if (isset($_GET['bo']) && isset($_GET['IDC']))
  4. {
  5.  $bo=$_GET['bo'];
  6.  $IDC=$_GET['IDC'];
  7. }
  8. if ($bo == 'popraw') { // dodawanie rekordu
  9. if ($Firma){
  10. $query = &#092;"UPDATE kontakty SET Firma='$Firma', Name='$Name', Dane='$Dane', Email='$Email' WHERE IDC='$IDC'\";
  11. $wyniki = mysql_query ($query);
  12. }
  13. }
  14. $wynik = mysql_query (&#092;"SELECT * FROM kontakty WHERE IDC='$IDC';\") or
  15. die (&#092;"bład w pytaniu\");
  16.  
  17. print '<FORM METHOD=\"POST\">Nowy rekord:';
  18. print '<INPUT TYPE=\"hidden\" NAME=\"bo\" VALUE=\"popraw\"><TABLE>';
  19.  
  20. while ($rekord = mysql_fetch_array ($wynik)) {
  21. $Firma = $rekord[1];
  22. $Name = $rekord[2];
  23. $Dane = $rekord[3];
  24. $Email = $rekord[4];
  25.  echo &#092;"<tr><td><b>ID</b></td><td><TEXTAREA NAME=\"Firma\">$Firma</TEXTAREA></td></tr>\";
  26.  echo &#092;"<tr><td colspan=\"2\"><TEXTAREA NAME=\"Name\" COLS=50>$Name</TEXTAREA></td></tr>\";
  27.  echo &#092;"<tr><td colspan=\"2\"><TEXTAREA NAME=\"Dane\" ROWS=10 COLS=50>$Dane</TEXTAREA></td></tr>\";
  28.  echo &#092;"<tr><td colspan=\"2\"><TEXTAREA NAME=\"Email\" COLS=50>$Email</TEXTAREA></td></tr>\";  
  29. }
  30. print '</TABLE><INPUT TYPE=\"submit\" VALUE=\"Popraw\"></FORM>';
  31. print &#092;"<input type=\"button\" value=\"Powrót\" onClick=\"parent.location.href='see.kontakt.php?IDC=$IDC'\">\";
  32.  
  33. echo $_GET['IDC'];
  34. ?>

Pozdrawiam Damian
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: 31.07.2025 - 07:52