Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Nie moge znaleść błędu
Forum PHP.pl > Forum > Przedszkole
rossco
Witam
Napisała kod który dodaje, edytuje, kasuje rekordy w bazie. Wszystko działa po za edycją. Nie wyskakuje żaden błąd ale kiedy wciska popraw nie poprawia w bazie rekordu. Przeanalizowała cały kod i nie mogę zanieść błędu. Po niżej fragment kodu odpowiadający za edycję:


  1. } elseif ($_GET['co'] == 'popraw') { //poprawianie rekordu
  2. if ($_POST['stanowisko'] && $_POST['nazwa_firmy'] && $_PoST['miejscowosc_zatrudnienia']) {
  3. $query = "UPDATE ogloszenia SET stanowisko='".$_POST['stanowisko']."', nazwa_firmy=";
  4. $query .= "'".$_POST['nazwa_firmy']."', miejscowosc_zatrudnienia='".$_POST['miejscowosc_zatrudnienia']."'
  5. WHERE nr='".$_POST['id']."';";
  6. $wynik = mysql_query ($query);
  7.  
  8. }
  9. } elseif ($_GET['co'] == 'edytuj') { //Przygotowanie do poprawek
  10. $query = "SELECT * FROM ogloszenia where nr='".$_GET['id']."';";
  11. $wynik = mysql_query ($query);
  12. $rekord = mysql_fetch_assoc ($wynik);
  13. $nr = $rekord['nr'];
  14. $stanowisko = $rekord['stanowisko'];
  15. $nazwa_firmy = $rekord['nazwa_firmy'];
  16. $miejscowosc_zatrudnienia = $rekord['miejscowosc_zatrudnienia'];
  17. print '<FORM METHOD="POST" >Poprawa rekordu:';
  18. print '<INPUT TYPE="hidden" NAME="co" VALUE="popraw">';
  19. print '<INPUT TYPE="hidden" NAME="id" VALUE="'.$nr.'"><TABLE>';
  20. print '<TR><TD>Stanowisko:</TD><TD><INPUT TYPE="text" NAME="stanowisko" VALUE="'.$stanowisko.'"></TD></TR>';
  21. print '<TR><TD>Nazwa firmy:</TD><TD><INPUT TYPE="text" NAME="nazwa_firmy" VALUE="'.$nazwa_firmy.'"></TD></TR>';
  22. print '<TR><TD>Miejscowosc zatrudnienia:</TD><TD>';
  23. print '<INPUT TYPE="text" NAME="miejscowosc_zatrudnienia" VALUE="'.$miejscowosc_zatrudnienia.'"></TD></TR>';
  24. print '</TABLE><INPUT TYPE="submit" VALUE="Popraw"></FORM>';
  25.  
  26. }
MateuszS
  1. print '<FORM METHOD="POST" action="index.php?co=popraw" >Poprawa rekordu:'; //zamiast index.php daj nazwe swojego pliku.


rossco
nie pomogło, ale tu chyba nie potrzeba action?
Może cały kod:
  1. <HTML>
  2. <HEAD>
  3. <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
  4. <TITLE>System Ogłoszeń</TITLE>
  5. </HEAD>
  6. <BODY>
  7. <H2>Ogłoszenia</H2>
  8.  
  9. <?
  10.  
  11. include ("config.php");
  12.  
  13. //Aplikacja daje na możliwość odczytu, usuwania, dodawania
  14. //i poprawy w bazie
  15.  
  16. if ($_POST['co'] == 'dodaj') { //dodawanie rekordu
  17. if ($_POST['stanowisko'] && $_POST['nazwa_firmy'] && $_POST['miejscowosc_zatrudnienia'] ) {
  18. $query = "INSERT INTO ogloszenia (stanowisko, nazwa_firmy, miejscowosc_zatrudnienia)
  19. VALUES ('".$_POST['stanowisko']."', '".$_POST['nazwa_firmy']."', '".$_POST['miejscowosc_zatrudnienia']."');";
  20. $wynik = mysql_query ($query);
  21.  
  22. }
  23. } elseif ($_GET['co'] == 'popraw') { //poprawianie rekordu
  24. if ($_POST['stanowisko'] && $_POST['nazwa_firmy'] && $_PoST['miejscowosc_zatrudnienia']) {
  25. $query = "UPDATE ogloszenia SET stanowisko='".$_POST['stanowisko']."', nazwa_firmy=";
  26. $query .= "'".$_POST['nazwa_firmy']."', miejscowosc_zatrudnienia='".$_POST['miejscowosc_zatrudnienia']."'
  27. WHERE nr='".$_POST['id']."';";
  28. $wynik = mysql_query ($query);
  29.  
  30. }
  31. } elseif ($_GET['co'] == 'edytuj') { //Przygotowanie do poprawek
  32. $query = "SELECT * FROM ogloszenia where nr='".$_GET['id']."';";
  33. $wynik = mysql_query ($query);
  34. $rekord = mysql_fetch_assoc ($wynik);
  35. $nr = $rekord['nr'];
  36. $stanowisko = $rekord['stanowisko'];
  37. $nazwa_firmy = $rekord['nazwa_firmy'];
  38. $miejscowosc_zatrudnienia = $rekord['miejscowosc_zatrudnienia'];
  39. print '<FORM METHOD="POST">Poprawa rekordu:';
  40. print '<INPUT TYPE="hidden" NAME="co" VALUE="popraw">';
  41. print '<INPUT TYPE="hidden" NAME="id" VALUE="'.$nr.'"><TABLE>';
  42. print '<TR><TD>Stanowisko:</TD><TD><INPUT TYPE="text" NAME="stanowisko" VALUE="'.$stanowisko.'"></TD></TR>';
  43. print '<TR><TD>Nazwa firmy:</TD><TD><INPUT TYPE="text" NAME="nazwa_firmy" VALUE="'.$nazwa_firmy.'"></TD></TR>';
  44. print '<TR><TD>Miejscowosc zatrudnienia:</TD><TD>';
  45. print '<INPUT TYPE="text" NAME="miejscowosc_zatrudnienia" VALUE="'.$miejscowosc_zatrudnienia.'"></TD></TR>';
  46. print '</TABLE><INPUT TYPE="submit" VALUE="Popraw"></FORM>';
  47.  
  48. } elseif ($_GET['co'] =='skasuj') { //usuwanie
  49. $wynik = mysql_query
  50. ("DELETE FROM ogloszenia WHERE nr = '".$_GET['id']."';");
  51. }
  52.  
  53. $wynik = mysql_query ("SELECT * FROM ogloszenia;");
  54. print "<TABLE CELLPADDING=5 BORDER=1>";
  55. print "<TR><TD><B>Stanowisko</B></TD><TD><B>Nazwa firmy</B></TD><TD><B>Miejscowosc zatrudnienia</B></TD></TR>\n";
  56.  
  57. while ($rekord = mysql_fetch_assoc ($wynik)) {
  58. $nr = $rekord['nr'];
  59. $stanowisko = $rekord['stanowisko'];
  60. $nazwa_firmy = $rekord['nazwa_firmy'];
  61. $miejscowosc_zatrudnienia = $rekord['miejscowosc_zatrudnienia'];
  62.  
  63. print "<TR><TD>$stanowisko</TD><TD>$nazwa_firmy</TD><TD>$miejscowosc_zatrudnienia</TD><TD>";
  64. print "<A HREF=\"edytuj.php?co=edytuj&id=$nr\">edytuj</A></TD><TD>";
  65. print "<A HREF=\"edytuj.php?co=skasuj&id=$nr\">skasuj</A></TD></TR>\n";
  66.  
  67. }
  68. print "</TABLE>";
  69. print '<FORM METHOD="POST">Nowy rekord:';
  70. print '<INPUT TYPE="hidden" NAME="co" VALUE="dodaj"><TABLE>';
  71. print '<TR><TD>Stanowisko:</TD><TD><INPUT TYPE="text" NAME="stanowisko"></TD></TR>';
  72. print '<TR><TD>Nazwa firmy:</TD><TD><INPUT TYPE="text" NAME="nazwa_firmy"></TD></TR>';
  73. print '<TR><TD>Miejscowosc zatrudnienia:</TD><TD><INPUT TYPE="text" NAME="miejscowosc_zatrudnienia"></TD></TR>';
  74. print '</TABLE>';
  75. print '<INPUT TYPE="submit" VALUE="Dodaj"></FORM>';
  76.  
  77. ?>
  78.  
  79. </BODY>
  80. </HTML>
MateuszS
Potrzeba action ale ja bym to inaczej zrobił, coś w ten deseń

  1. } elseif ($_GET['co'] == 'edytuj') { //Przygotowanie do poprawek
  2. $query = "SELECT * FROM ogloszenia where nr='".$_GET['id']."';";
  3. $wynik = mysql_query ($query);
  4. $rekord = mysql_fetch_assoc ($wynik);
  5. $nr = $rekord['nr'];
  6. $stanowisko = $rekord['stanowisko'];
  7. $nazwa_firmy = $rekord['nazwa_firmy'];
  8. $miejscowosc_zatrudnienia = $rekord['miejscowosc_zatrudnienia'];
  9. print '<FORM METHOD="POST">Poprawa rekordu:';
  10. print '<INPUT TYPE="hidden" NAME="co" VALUE="popraw">';
  11. print '<INPUT TYPE="hidden" NAME="id" VALUE="'.$nr.'"><TABLE>';
  12. print '<TR><TD>Stanowisko:</TD><TD><INPUT TYPE="text" NAME="stanowisko" VALUE="'.$stanowisko.'"></TD></TR>';
  13. print '<TR><TD>Nazwa firmy:</TD><TD><INPUT TYPE="text" NAME="nazwa_firmy" VALUE="'.$nazwa_firmy.'"></TD></TR>';
  14. print '<TR><TD>Miejscowosc zatrudnienia:</TD><TD>';
  15. print '<INPUT TYPE="text" NAME="miejscowosc_zatrudnienia" VALUE="'.$miejscowosc_zatrudnienia.'"></TD></TR>';
  16. print '</TABLE><INPUT TYPE="submit" name="wyslij" VALUE="Popraw"></FORM>';
  17.  
  18. if(isset($_POST["wyslij"])) {
  19. if ($_POST['stanowisko'] && $_POST['nazwa_firmy'] && $_PoST['miejscowosc_zatrudnienia']) {
  20. $query = "UPDATE ogloszenia SET stanowisko='".$_POST['stanowisko']."', nazwa_firmy=";
  21. $query .= "'".$_POST['nazwa_firmy']."', miejscowosc_zatrudnienia='".$_POST['miejscowosc_zatrudnienia']."'
  22. WHERE nr='".$_POST['id']."';";
  23. $wynik = mysql_query ($query) or die(mysql_error());
  24.  
  25. }
  26.  
  27. }


Poza tym możesz mieć coś źle w konstrukcji zapytania.
rossco
Zmieniłam na isset, dodałam NAME="wyslij", ale nie pomogło. wydaje mi się że coś w zapytania jest nie tak. A może są jakieś komendy które pomagają wychwycić błąd?
mortus
  1. $wynik = mysql_query($zapytanie) or die(mysql_error());
rossco
Mortus nie wyświetla żadnego błędu. Kurcze już nie mam siły wszystko działa tylko te popraw i do tego nie wyświetla żadnego błędu.
mortus
To jeszcze przed $wynik = mysql_query($query) or die(mysql_error()); dajmy
  1. echo $query . '<br>';
  2. echo '<pre>'; print_r($_POST); echo '</pre>';
rossco
nie wyświetla błędu:(

jesli nie wyświetla błędu to w zapytaniu nie ma co szukać?
mortus
Nie powinno wyświetlać błędu, ale treść zapytania i zawartość tablicy $_POST. I jeszcze dodatkowo daj echo '<pre>'; print_r($_GET); echo '</pre>'; przed $wynik = ... i wklej tutaj wszystko co wyświetli.
rossco
Wkleiłam to w ten sposób ale nadal nic nie wyświetla

  1. elseif ($_GET['co'] == 'popraw') { //poprawianie rekordu
  2. if ($_POST['stanowisko'] && $_POST['nazwa_firmy'] && $_POST['miejscowosc_zatrudnienia']) {
  3. $query = "UPDATE ogloszenia SET stanowisko='".$_POST['stanowisko']."', nazwa_firmy=";
  4. $query .= "'".$_POST['nazwa_firmy']."', miejscowosc_zatrudnienia='".$_POST['miejscowosc_zatrudnienia']."' WHERE nr='".$_POST['id']."';";
  5. echo $query . '<br>';
  6. echo '<pre>'; print_r($_POST); echo '</pre>';
  7. echo '<pre>'; print_r($_GET); echo '</pre>';
  8. $wynik = mysql_query ($query) or die(mysql_error());
  9.  
  10. }


mortus
Dlatego, że w tablicy $_GET nie ma pod indeksem 'co' wartości 'popraw', czyli nie wchodzimy do bloku z tym warunkiem:
  1. elseif($_GET['co'] == 'popraw')
Mateusz już wspomniał, że formularz, który przekazuje nam dane powinien mieć akcję odpowiednio ustawioną
  1. <form action="nazwa_pliku.php?co=popraw" method="post">
minolone
Popraw literówke w kodzie
  1. elseif ($_GET['co'] == 'popraw') { //poprawianie rekordu
  2. if ($_POST['stanowisko'] && $_POST['nazwa_firmy'] && $_PoST['miejscowosc_zatrudnienia']) { //<----- tutaj $_PoST['miejscowosc_zatrudnienia'] dokladniej "$_POST"
  3. $query = "UPDATE ogloszenia SET stanowisko='".$_POST['stanowisko']."', nazwa_firmy=";
  4. $query .= "'".$_POST['nazwa_firmy']."', miejscowosc_zatrudnienia='".$_POST['miejscowosc_zatrudnienia']."'
  5. WHERE nr='".$_POST['id']."';";
  6. $wynik = mysql_query ($query);
  7.  
  8. }

i to co koledzy mowia
  1. print '<FORM METHOD="POST" action="?co=popraw">Poprawa rekordu:';
rossco
dzięki Minolone poprawione, ale nadal nie poprawia
minolone
Caly twoj kod i dziala w 100%
  1. <HTML>
  2. <HEAD>
  3. <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
  4. <TITLE>System Ogłoszeń</TITLE>
  5. </HEAD>
  6. <BODY>
  7. <H2>Ogłoszenia</H2>
  8.  
  9. <?php
  10.  
  11. include ("config.php");
  12.  
  13. //Aplikacja daje na możliwość odczytu, usuwania, dodawania
  14. //i poprawy w bazie
  15.  
  16. if ($_POST['co'] == 'dodaj') { //dodawanie rekordu
  17. if ($_POST['stanowisko'] && $_POST['nazwa_firmy'] && $_POST['miejscowosc_zatrudnienia'] ) {
  18. $query = "INSERT INTO ogloszenia (stanowisko, nazwa_firmy, miejscowosc_zatrudnienia)
  19. VALUES ('".$_POST['stanowisko']."', '".$_POST['nazwa_firmy']."', '".$_POST['miejscowosc_zatrudnienia']."');";
  20. $wynik = mysql_query ($query);
  21.  
  22. }
  23. } elseif ($_POST['co'] == 'popraw') { //poprawianie rekordu
  24. if ($_POST['stanowisko'] && $_POST['nazwa_firmy'] && $_POST['miejscowosc_zatrudnienia']) {
  25. $query = "UPDATE ogloszenia SET stanowisko='".$_POST['stanowisko']."', nazwa_firmy=";
  26. $query .= "'".$_POST['nazwa_firmy']."', miejscowosc_zatrudnienia='".$_POST['miejscowosc_zatrudnienia']."'
  27. WHERE nr='".$_POST['id']."';";
  28. $wynik = mysql_query($query) or die(mysql_error());
  29.  
  30.  
  31. }
  32. } elseif ($_GET['co'] == 'edytuj') { //Przygotowanie do poprawek
  33. $query = "SELECT * FROM ogloszenia where nr='".$_GET['id']."';";
  34. $wynik = mysql_query ($query);
  35. $rekord = mysql_fetch_assoc ($wynik);
  36. $nr = $rekord['nr'];
  37. $stanowisko = $rekord['stanowisko'];
  38. $nazwa_firmy = $rekord['nazwa_firmy'];
  39. $miejscowosc_zatrudnienia = $rekord['miejscowosc_zatrudnienia'];
  40. print '<FORM METHOD="POST" action="?co=popraw">Poprawa rekordu:';
  41. print '<INPUT TYPE="hidden" NAME="co" VALUE="popraw">';
  42. print '<INPUT TYPE="hidden" NAME="id" VALUE="'.$nr.'"><TABLE>';
  43. print '<TR><TD>Stanowisko:</TD><TD><INPUT TYPE="text" NAME="stanowisko" VALUE="'.$stanowisko.'"></TD></TR>';
  44. print '<TR><TD>Nazwa firmy:</TD><TD><INPUT TYPE="text" NAME="nazwa_firmy" VALUE="'.$nazwa_firmy.'"></TD></TR>';
  45. print '<TR><TD>Miejscowosc zatrudnienia:</TD><TD>';
  46. print '<INPUT TYPE="text" NAME="miejscowosc_zatrudnienia" VALUE="'.$miejscowosc_zatrudnienia.'"></TD></TR>';
  47. print '</TABLE><INPUT TYPE="submit" VALUE="Popraw"></FORM>';
  48.  
  49. } elseif ($_GET['co'] =='skasuj') { //usuwanie
  50. $wynik = mysql_query
  51. ("DELETE FROM ogloszenia WHERE nr = '".$_GET['id']."';");
  52. }
  53.  
  54. $wynik = mysql_query ("SELECT * FROM ogloszenia;");
  55. print "<TABLE CELLPADDING=5 BORDER=1>";
  56. print "<TR><TD><B>Stanowisko</B></TD><TD><B>Nazwa firmy</B></TD><TD><B>Miejscowosc zatrudnienia</B></TD></TR>\n";
  57.  
  58. while ($rekord = mysql_fetch_assoc ($wynik)) {
  59. $nr = $rekord['nr'];
  60. $stanowisko = $rekord['stanowisko'];
  61. $nazwa_firmy = $rekord['nazwa_firmy'];
  62. $miejscowosc_zatrudnienia = $rekord['miejscowosc_zatrudnienia'];
  63.  
  64. print "<TR><TD>$stanowisko</TD><TD>$nazwa_firmy</TD><TD>$miejscowosc_zatrudnienia</TD><TD>";
  65. print "<A HREF=\"?co=edytuj&id=$nr\">edytuj</A></TD><TD>";
  66. print "<A HREF=\"?co=skasuj&id=$nr\">skasuj</A></TD></TR>\n";
  67.  
  68. }
  69. print "</TABLE>";
  70. print '<FORM METHOD="POST">Nowy rekord:';
  71. print '<INPUT TYPE="hidden" NAME="co" VALUE="dodaj"><TABLE>';
  72. print '<TR><TD>Stanowisko:</TD><TD><INPUT TYPE="text" NAME="stanowisko"></TD></TR>';
  73. print '<TR><TD>Nazwa firmy:</TD><TD><INPUT TYPE="text" NAME="nazwa_firmy"></TD></TR>';
  74. print '<TR><TD>Miejscowosc zatrudnienia:</TD><TD><INPUT TYPE="text" NAME="miejscowosc_zatrudnienia"></TD></TR>';
  75. print '</TABLE>';
  76. print '<INPUT TYPE="submit" VALUE="Dodaj"></FORM>';
  77.  
  78. ?>
  79.  
  80. </BODY>
  81. </HTML>


to co ja zmieniłem
  1. elseif ($_GET['co'] == 'popraw') { //poprawianie rekordu
  2. if ($_POST['stanowisko'] && $_POST['nazwa_firmy'] && $_PoST['miejscowosc_zatrudnienia']) { //<--- literówka
  3. $query = "UPDATE ogloszenia SET stanowisko='".$_POST['stanowisko']."', nazwa_firmy=";
  4. $query .= "'".$_POST['nazwa_firmy']."', miejscowosc_zatrudnienia='".$_POST['miejscowosc_zatrudnienia']."'
  5. WHERE nr='".$_POST['id']."';";
  6. $wynik = mysql_query ($query);
  7.  
  8. }

na to
  1. elseif ($_GET['co'] == 'popraw') { //poprawianie rekordu
  2. if ($_POST['stanowisko'] && $_POST['nazwa_firmy'] && $_POST['miejscowosc_zatrudnienia']) {
  3. $query = "UPDATE ogloszenia SET stanowisko='".$_POST['stanowisko']."', nazwa_firmy=";
  4. $query .= "'".$_POST['nazwa_firmy']."', miejscowosc_zatrudnienia='".$_POST['miejscowosc_zatrudnienia']."'
  5. WHERE nr='".$_POST['id']."';";
  6. $wynik = mysql_query ($query);
  7.  
  8. }

nastepnie
  1. print '<FORM METHOD="POST">Poprawa rekordu:';

na to
  1. print '<FORM METHOD="POST" action="?co=popraw">Poprawa rekordu:';

i to
  1. print "<A HREF=\"edytuj.php?co=edytuj&id=$nr\">edytuj</A></TD><TD>";
  2. print "<A HREF=\"edytuj.php?co=skasuj&id=$nr\">skasuj</A></TD></TR>\n";

na to zeby miec w pliki index.php
  1. print "<A HREF=\"?co=edytuj&id=$nr\">edytuj</A></TD><TD>";
  2. print "<A HREF=\"?co=skasuj&id=$nr\">skasuj</A></TD></TR>\n";

i dziala w 100%
rossco
Dzięki minolone działa:)
Czy na prawdę nie można było to zrobić bez określania action?
Dodawanie rekordu nie ma przypisanego action i działa.
mortus
Cytat(minolone @ 27.03.2010, 17:20:56 ) *
to co ja zmieniłem
  1. elseif ($_GET['co'] == 'popraw') { //poprawianie rekordu
  2. if ($_POST['stanowisko'] && $_POST['nazwa_firmy'] && $_PoST['miejscowosc_zatrudnienia']) { //<--- literówka
  3. $query = "UPDATE ogloszenia SET stanowisko='".$_POST['stanowisko']."', nazwa_firmy=";
  4. $query .= "'".$_POST['nazwa_firmy']."', miejscowosc_zatrudnienia='".$_POST['miejscowosc_zatrudnienia']."'
  5. WHERE nr='".$_POST['id']."';";
  6. $wynik = mysql_query ($query);
  7.  
  8. }

na to
  1. elseif ($_GET['co'] == 'popraw') { //poprawianie rekordu
  2. if ($_POST['stanowisko'] && $_POST['nazwa_firmy'] && $_POST['miejscowosc_zatrudnienia']) {
  3. $query = "UPDATE ogloszenia SET stanowisko='".$_POST['stanowisko']."', nazwa_firmy=";
  4. $query .= "'".$_POST['nazwa_firmy']."', miejscowosc_zatrudnienia='".$_POST['miejscowosc_zatrudnienia']."'
  5. WHERE nr='".$_POST['id']."';";
  6. $wynik = mysql_query ($query);
  7.  
  8. }
A w kodzie masz
Cytat
  1. } elseif ($_POST['co'] == 'popraw') { //poprawianie rekordu
  2. if ($_POST['stanowisko'] && $_POST['nazwa_firmy'] && $_POST['miejscowosc_zatrudnienia']) {
  3. $query = "UPDATE ogloszenia SET stanowisko='".$_POST['stanowisko']."', nazwa_firmy=";
  4. $query .= "'".$_POST['nazwa_firmy']."', miejscowosc_zatrudnienia='".$_POST['miejscowosc_zatrudnienia']."'
  5. WHERE nr='".$_POST['id']."';";
  6. $wynik = mysql_query($query) or die(mysql_error());
  7. }

Później wrócę do tematu, na razie nie mam czasu.
minolone
mortus - czego ma się tyczyć twoja wypowiedź? bo jakoś nie mogę jej zrozumieć, to że dodałeś

przeczytaj dokładnie co ja zmieniłem a będziesz wiedział,
a pozatym kod już został poprawiony i koleżance działa, pozdrawiam minolone
mortus
@minolone
Chodzi o to, że w Twoim "całym kodzie" korzystasz z tablicy $_POST
  1. elseif($_POST['co'] == 'popraw')
a z drugiej strony piszesz, że zmieniłeś obsługę tablicy $_GET
  1. elseif($GET['co'] == 'popraw') { // cała reszta
Tablic $_GET i $_POST nie używa się zamiennie. To Ty się uważnie przypatrz co piszesz w kolejnych listingach z godziny 17:20.
EDIT:
Może i kod został poprawiony, ale Twoje tłumaczenie nijak się ma do rzeczywistości. Nie mów, że robisz a, jak robisz b.


@roscco
Dlaczego przy opcji dodaj, nie trzeba używać action="?co=dodaj"?
Odpowiem na podstawie przykładów.
Przykład 1
  1. <?php
  2. if($_POST['action'] == 'dodaj' ) {
  3. // dodajemy
  4. }
  5. ?>
  6. <form action="" method="post">
  7. <input type="hidden" name="action" value="dodaj" />
  8. <!-- inne pola -->
  9. <input type="submit" name="submit" value="Dodaj" />
  10. </form>
Przykład 2
  1. <?php
  2. if($_GET['action'] == 'dodaj') {
  3. // dodajemy
  4. }
  5. ?>
  6. <form action="?action=dodaj" method="post">
  7. <!-- tylko inne pola, brak pola ukrytego -->
  8. <input type="submit" name="submit" value="Dodaj" />
  9. </form>
A teraz słowo komentarza. Jeżeli korzystasz z tablicy $_GET to obsługujesz ją poprzez adres w przeglądarce. To co jest po znaku zapytania w adresie index.php?action=edytuj&id=13 będzie się znajdować w tablicy $_GET, a dokładniej w $_GET['action'] i $_GET['id']. Ilustruje to drugi przykład. Jeżeli chcesz wykorzystywać tablicę $_POST, to zawsze w Twoim formularzu musi istnieć ukryte pole, które będzie przekazywać np. nazwę akcji (jak w przykładzie 1). Problem w tym, że nie zawsze możemy przekazać dane, za pomocą formularza (a co za tym idzie, za pomocą metody post), bo np. takiego formularza na stronie nie mamy. Wtedy musimy użyć adresu w postaci index.php?action=edytuj&id=13, a dane pobierać poprzez superglobalną tablicę $_GET. Oba powyższe przykłady są równoważne, przy czym pierwszy nie zawsze zadziała. Poza tym formularz możemy również przekazywać metodą get, ale wtedy adres w przeglądarce jest odpowiednio uzupełniany, a dane znajdują się w tablicy $_GET. Radzę poszukać i poczytać co nieco na temat różnic w przekazywaniu za pomocą metody get i metody post. Różnice są znaczące.
minolone
Faktycznie mój błąd musiałem przez przypadek zmienic i tam z $_GET na $_POST, ale zrobic celowo tego nie chciałem, sorki
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.