Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: dodawanie i usuwanie rekordu z tabeli w bazie
Forum PHP.pl > Forum > Przedszkole
mąki
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
nospor
zobacz w php.ini czy masz ustawioną wartość register_globals
switch
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. ?>
nospor
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. ?>
mąki
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.
nospor
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
mąki
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.
zwiteq
Czesc
A masz ustawione pole tabeli sql z indeksem na auto inkrementacje?
pozdrawiam
witek
nospor
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';");
mąki
Wielkie dzięki, już wszystko działa.
Gość_Damian
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
nospor
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.
Guest
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
nospor
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,
Gość_Damian
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
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.