![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 544 Pomógł: 5 Dołączył: 18.08.2009 Ostrzeżenie: (0%) ![]() ![]() |
Robię sondę a dokładniej jej edycję. Mam zrobione tak, że przy dodawaniu mam 10 inputów, jeśli są pełne to je dodaje. Mam dwie tabele - sonda i odpowiedzi. I teraz przy edycji wypisuję odpowiedzi w których pole SONDA jest równe ID sondy. Taki powiązanie. Ale teraz jest problem taki, że gdy chcę zedytować odpowiedzi to robię dla każdej odpowiedzi (foreach) UPDATE odpowiedzi WHERE id="$idanswer". No właśnie... wyciągnąłem id tych rekordów ale mam problem właśnie z foreach. Najlepiej jak pokażę to co zrobiłem:
I tutaj plik formularza edycji:
Pozdrawiam -------------------- |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 1 748 Pomógł: 388 Dołączył: 21.08.2009 Skąd: Gdynia Ostrzeżenie: (0%) ![]() ![]() |
Z tego co zrozumiałem to wynika, że odpowiedź z $anwser będzie przypisana tylko do jednego ID z $idanwser i w tym kodzie co napisałeś to ta odpowiedź jest wpisywana do wszystkich ID z każdą następną pętlą wynik się nadpisuje tak?
wydaj mi się, że chciałeś uzyskać coś takiego :
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 544 Pomógł: 5 Dołączył: 18.08.2009 Ostrzeżenie: (0%) ![]() ![]() |
Wyskakuje taki błąd:
Czyli chodzi o linię: -------------------- |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 1 748 Pomógł: 388 Dołączył: 21.08.2009 Skąd: Gdynia Ostrzeżenie: (0%) ![]() ![]() |
widzę, że tam zamiast = dałem - , spróbuj z tym:
|
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 1 590 Pomógł: 185 Dołączył: 19.04.2006 Skąd: Gdańsk Ostrzeżenie: (0%) ![]() ![]() |
Kombinujesz w złą stronę. Pętla w pętli a w niej zapytanie do bazy? Ile tych zapytań do bazy będzie w sumie?
Możesz stworzyć taką tablicę: - pierwszy indeks to numer pytania, drugi to odpowiedź a ewentualny tekst to np. "inne, napisz jakie" - taką tablicę da się łatwo pobrać z tabeli "sonda", która wygląda np. tak: id_sondy|id_pytania|id_odpowiedzi|tekst_odpowiedzi Nie wiem jaka to ma być sonda i jak to ma działać, potem wystarczy stworzyć plik o podobnej strukturze i dodać od razu całą sondę do bazy jednym zapytaniem LOAD DATA INFILE. |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 544 Pomógł: 5 Dołączył: 18.08.2009 Ostrzeżenie: (0%) ![]() ![]() |
widzę, że tam zamiast = dałem - Rzeczywiście, też tego nie zauważyłem. Teraz działa. Kombinujesz w złą stronę. Pętla w pętli a w niej zapytanie do bazy? Ile tych zapytań do bazy będzie w sumie? Co jest złego w takim rozwiązaniu? Zapytań będzie max.8... wydaje mi się, że taka metoda jest do przyjęcia przy takiej ilości? Pewnie przy większej ilości mogłaby być niewydajna. -------------------- |
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 1 590 Pomógł: 185 Dołączył: 19.04.2006 Skąd: Gdańsk Ostrzeżenie: (0%) ![]() ![]() |
No a ja nie wiem, czy 8 czy więcej, po prostu przywykłem do robienia takich rzeczy jednym zapytaniem i wbiłem sobie do głowy, że zapytanie wewnątrz pętli jest złe. Poza tym jeśli będzie korzystało z tego n użytkowników wykonujących x operacji to n*x*8 a n*x*1 to różnica. Ktoś potem rozbuduje ankiete do dwóch stron i się zdziwi, ale każdy robi jak uważa, jak będziesz potrzebował audytu wydajności czy optymalizacji to za odpowiednie wynagrodzenie jestem do usług
![]() |
|
|
![]() ![]() |
![]() |
Aktualny czas: 21.08.2025 - 19:07 |