Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP]Nie moge znaleść błędu, Ćwiczenia z PHP
rossco
post
Post #1





Grupa: Zarejestrowani
Postów: 72
Pomógł: 0
Dołączył: 17.02.2007

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


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. }
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
mortus
post
Post #2





Grupa: Zarejestrowani
Postów: 2 178
Pomógł: 596
Dołączył: 25.09.2009
Skąd: Piwniczna-Zdrój

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


@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.

Ten post edytował mortus 27.03.2010, 20:02:22
Go to the top of the page
+Quote Post

Posty w temacie
- rossco   [MySQL][PHP]Nie moge znaleść błędu   27.03.2010, 14:29:02
- - MateuszScirka   [PHP] pobierz, plaintext print '<FORM METHOD=...   27.03.2010, 14:32:01
- - rossco   nie pomogło, ale tu chyba nie potrzeba action? Moż...   27.03.2010, 14:49:59
- - MateuszScirka   Potrzeba action ale ja bym to inaczej zrobił, coś ...   27.03.2010, 14:57:57
- - rossco   Zmieniłam na isset, dodałam NAME="wyslij...   27.03.2010, 15:12:15
- - mortus   [PHP] pobierz, plaintext $wynik = mysql_query...   27.03.2010, 16:41:41
- - rossco   Mortus nie wyświetla żadnego błędu. Kurcze już nie...   27.03.2010, 16:48:28
- - mortus   To jeszcze przed $wynik = mysql_query($q...   27.03.2010, 16:52:32
- - rossco   nie wyświetla błędu:( jesli nie wyświetla błędu t...   27.03.2010, 17:00:18
- - mortus   Nie powinno wyświetlać błędu, ale treść zapytania ...   27.03.2010, 17:04:54
- - rossco   Wkleiłam to w ten sposób ale nadal nic nie wyświet...   27.03.2010, 17:12:58
- - mortus   Dlatego, że w tablicy $_GET nie ma pod indeks...   27.03.2010, 17:16:35
- - minolone   Popraw literówke w kodzie [PHP] pobierz, plaintext...   27.03.2010, 17:16:40
- - rossco   dzięki Minolone poprawione, ale nadal nie poprawia   27.03.2010, 17:20:03
- - minolone   Caly twoj kod i dziala w 100% [PHP] pobierz, plain...   27.03.2010, 17:20:56
|- - mortus   Cytat(minolone @ 27.03.2010, 17:20:56...   27.03.2010, 17:41:18
- - rossco   Dzięki minolone działa:) Czy na prawdę nie można b...   27.03.2010, 17:28:23
- - minolone   mortus - czego ma się tyczyć twoja wypowiedź? bo j...   27.03.2010, 18:31:59
- - mortus   @minolone Chodzi o to, że w Twoim "całym kodz...   27.03.2010, 19:23:21
- - minolone   Faktycznie mój błąd musiałem przez przypadek zmien...   27.03.2010, 21:20:55


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 Aktualny czas: 7.10.2025 - 13:36