![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 4 Pomógł: 0 Dołączył: 22.01.2014 Ostrzeżenie: (0%) ![]() ![]() |
Witam wszystkich. To moje pierwsze dni z mysql i php.
Na podstawie tego forum zrobiłem prosty formularz zgłoszeniowy - DZIAŁA! Wszystko zapisuje się w tabeli "formularz" w polach: imie, temat, lokalizacja, opis, data1. Tabela ma też pole id auto_increment primary key. Teraz robię mini panel do odpowiedzi na zgłoszenie. Ale zanim zrobię formularz z polem "odpowiedź" i zapisem do tej samej tabeli w pole "edycja" Chcę, aby nad formularzem edycji pojawiła się rozwijana lista z numerami zgłoszeń [id], a następnie po wybraniu zgłoszenia np. nr.2 dane z tabeli formularz z pól: imie, temat, lokalizacja, opis, data1 wyświetliły się w formularzu - takim samym jaki widziała osoba wysyłająca zgłoszenie. Zrobiłem już wyświetlanie numerów zgłoszeń. Numery zgłoszeń zasysane są z tabeli formularz z pola [id] poprawnie. Nie wiem teraz jak wyświetlić resztę danych w polach <input> - aby formularz uzupełnił się do podglądu. Pod nim dopiero wstawię kolejny, z jednym polem dla udzielenia odpowiedzi. Ale mogę mieć problem z dopisaniem odpowiedzi do tego konkretnego numeru zgłoszenia. Dlatego drugie pytanie: Czy może lepiej zrobić po prostu EDYCJĘ wpisu tabeli i dać tylko możliwość uzupełnienia jednego i tak pustego pola "edycja" w tabeli "formularz", które jest przygotowane dla odpowiedzi. Myślę że ta opcja jest lepszym rozwiązaniem. Ale wraz pozostaje mi problem z uzupełnieniem formularza danymi z wybranego numeru zgłoszenia. Myślę że temat nadaje się do tego działu. Trochę moich wypocin działa [logowanie do mini panelu] oraz wysyłanie formularza. Brakuje mi tylko tego jednego szczegółu aby osiągnąć pełnie funkcjonalności tego małego projektu. Bardzo proszę o pomoc. Pozdrawiam.
|
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 25 Pomógł: 0 Dołączył: 13.03.2008 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 4 Pomógł: 0 Dołączył: 22.01.2014 Ostrzeżenie: (0%) ![]() ![]() |
Dziękuję za naprowadzenie. Kod działa już prawidłowo.
Pojawiają się wszystkie rekordy z bazy. Obok Przed każdym wierszem mam "EDYTUJ". Po kliknięciu go pojawia się formularz, uzupełniam wpis o swój komentarz do zgłoszenia, wysyłam i pięknie się zapisuje w bazie. Teraz kolejne pytanie: Tabela w której trzymam zgłoszenia jak już pisałem wcześniej ma pierwsze pole ID INT Auto_Inc Primary_Key. Na stronie gdzie wypełniany jest formularz zgłoszeniowy wyświetla się numer zgłoszenia. I tu pojawia się problem. Oto kod, który pobiera numer wiersza jako numer zgłoszenia: Pierwsze zgłoszenie w formularzu przy jego uzupełnianiu wyświetla się jako numer "zero" z racji, że kolumna ID jest pusta - a to z niej pobiera numer. Formularz zostaje wysłany i zapisany w bazie w pierwszym wierszu jako numer 1 - oczywiste. Kolejny formularz po wejściu na stronę dostaje numer "1" - w tabeli jest już jeden wiersz, więc naturalnie musi się wyświetlić wartość "1". Pod formularzem wyciągnięte są rekordy ze wszystkimi zgłoszeniami i niestety ale zgłoszenie nr. 1 jest już na liście... Pytanie brzmi: jak zmienić powyższy kod, aby wyświetlał numer zgłoszenia, który zaraz będzie zapisany w bazie. Coś w stylu "n+1" Rekordów nie będę nigdy kasował. Zwraca ten sam wynik co bez "+1". Proszę o pomoc. Pozdrawiam. |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 186 Pomógł: 18 Dołączył: 2.09.2010 Ostrzeżenie: (0%) ![]() ![]() |
Podczas zgłaszania nie powinieneś podawać użytkownikowi numeru zgłoszenia jeszcze przed jego zgłoszeniem. Najlepszym argumentem będzie chyba to że dwóch użytkowników może w jednym czasie może tworzyć zgłoszenie i jednemu z nich wyświetli się ID zgłoszenia, którego w rzeczywistości nie otrzyma. Po dodaniu zgłoszenia powinieneś podać jego identyfikator.
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 4 Pomógł: 0 Dołączył: 22.01.2014 Ostrzeżenie: (0%) ![]() ![]() |
To prawda. I obejdzie się bez zbędnego kombinowania z kodem.
Po wypełnieniu formularza - Submit - przekierowuje na stronę która wysyła formularz. Pojawia się się tam tylko na czarnym tle zdanie z podziękowaniem za dokonanie zgłoszenia i button z js na zamknięcie strony. Mogę do tego zdania dodać ten kod odpowiadający za wyświetlanie numeru wiersza z ID. Wtedy będzie to realny numer zgłoszenia i uniknę konfliktu z wypełnianiem dwóch zgłoszeń w tym samym czasie. Zaraz zmienię kod i opiszę skutki. Czy wyświetli już dopisany numer czy pobierze jeszcze ten poprzedni. Dziękuję Ghost1511 za pomysł. Pozdrawiam. |
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 186 Pomógł: 18 Dołączył: 2.09.2010 Ostrzeżenie: (0%) ![]() ![]() |
Dodatkowo popełniasz błąd pobierając liczbę rekordów w bazie. Nie jesteś ubezpieczony na ewentualnie usunięte rekordy. Lepiej użyj funkcji LAST_INSERT_ID()
http://dev.mysql.com/doc/refman/5.0/en/get...-unique-id.html |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 4 Pomógł: 0 Dołączył: 22.01.2014 Ostrzeżenie: (0%) ![]() ![]() |
Umieściłem kod odpowiedzialny za pobieranie ID za skryptem do wysyłania formularza. Pobiera i wyświetla info z prawidłowym numerem zgłoszenia. Problem rozwiązany.
LAST_INSERT_ID() - kolejna cenna uwaga. Oczywiście zmienię kod. Mimo że nie będę dodawał ani usuwał żadnego rekordu. Dziękuję raz jeszcze. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 21.08.2025 - 17:27 |