[PHP] koszyk pytań i usuwanie z koszyka pytań w cyklu |
[PHP] koszyk pytań i usuwanie z koszyka pytań w cyklu |
22.11.2019, 20:17:05
Post
#1
|
|
Grupa: Zarejestrowani Postów: 252 Pomógł: 0 Dołączył: 14.08.2016 Ostrzeżenie: (0%) |
proszę o wskazówkę jaki temat mam zgłębić gdy chcę w php z bazy pytań i przechodzenia przez kolejne pytania w teście usuwać te które zostały uznane przez ucznia jako łatwe (parametr GET) a inne pozostawia w cyklu pytań aż uczeń kliknie że jest łatwe. czy to są tablice?
|
|
|
22.11.2019, 20:54:43
Post
#2
|
|
Grupa: Zarejestrowani Postów: 1 828 Pomógł: 225 Dołączył: 20.03.2005 Skąd: Będzin Ostrzeżenie: (0%) |
Warto po napisaniu zapytania na forum przeczytać swoją wypowiedź ponownie. Osobiście nie do końca zrozumiałem pytanie.
Jeżeli dobrze rozumiem, chcesz aby uczniowi nie powtarzały się pytania na które odpowiedział. Na to pytanie już odpowiedziałem. Zapisujesz do bazy danych w tabeli `odpowiedzi_uczniow`informację że dany uczeń odpowiedział, a potem odpytujesz tabelę z pytaniami, tak aby pominąć pytania na które zostały już odpowiedziane.
Cos takiego, nie testowałem pytania. |
|
|
25.11.2019, 09:02:15
Post
#3
|
|
Grupa: Zarejestrowani Postów: 252 Pomógł: 0 Dołączył: 14.08.2016 Ostrzeżenie: (0%) |
1)doszedłem do tego momentu, nie wyświetla mi jednak $row['pytajnik_pytania'.'id'];, nie wiem gdzie tkwi błąd.
2)generalnie w skrypcie powinno być tak, że po uznaniu pytania za łatwe jest usuwane z array, a każde inne (średnie i trudne) pozostają aż uczeń się ich nauczy i uzna za łatwe, tym samym je usuwając. czyli po przesłaniu formularza powinien to zapamiętać.
Ten post edytował dentopolis 25.11.2019, 09:05:30 |
|
|
25.11.2019, 09:59:15
Post
#4
|
|
Grupa: Zarejestrowani Postów: 1 828 Pomógł: 225 Dołączył: 20.03.2005 Skąd: Będzin Ostrzeżenie: (0%) |
Po pierwsze, warto używać aliasów w zapytaniach SQL, czym ułatwisz sobie czytanie kodu SQL.
Po drugie, nie używaj * tylko pobieraj te informacje które potrzebujesz.
Wtedy nie będziesz potrzebował takich dziwactw jak $row['pytajnik_pytania'.'id'] a wystarczy $row['id'] Po trzecie, nie musimy widzieć linii że się łączysz z bazą. Po czwarte, pisanie nazw kategorii w bazie, zamiast id kategorii, bo co jak będziesz chciał zmienić nazwę kategorii? Będziesz szukał? UPDATE `pytania` SET kategoria = 'Historia wspołczesna' WHERE kategoria = 'Historia'; ? Co jak będzie błąd i będzie nazwa kategorii 'Historia ' (ze spacją)? Po piąte: Gdzie inicjujesz $array i $currentid? w linii? $current = array_search($currentid, $array); |
|
|
25.11.2019, 10:05:39
Post
#5
|
|
Grupa: Moderatorzy Postów: 36 440 Pomógł: 6290 Dołączył: 27.12.2004 |
Cytat Wtedy nie będziesz potrzebował takich dziwactw jak $row['pytajnik_pytania'.'id'] a wystarczy $row['id'] Tak na marginesie: jak uzywa * to $row['pytajnik_pytania'.'id'] jest zle. w tym wypadku $row['id'] jest tak samo dobre, jakby bezposrednio wymienil pola @dentopolis while($row = mysqli_fetch_array($result)){ echo $row['question']. " - ". $row['pytajnik_pytania'.'id']; echo $row['pytajnik_pytania.id']; echo "<br />"; } Jak nie ogarniasz co ci zwraca baza, to zamiast zgadaywac - SPRAWDZ while($row = mysqli_fetch_array($result)){ print_r($row); } -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
25.11.2019, 11:14:26
Post
#6
|
|
Grupa: Zarejestrowani Postów: 252 Pomógł: 0 Dołączył: 14.08.2016 Ostrzeżenie: (0%) |
dziękuję za wytłumaczenie, poprawię sposób odwoływania się do kategorii, w kodzie też sprawdziłem co wyświetla, obecnie wygląda to tak:
skrypt
po naciśnięciu któregoś z przycisków poprzez formularz i answer.php zapisuje czas, udzieloną odpowiedź do bazy i przed header powraca na stronę testu (ponieważ zapisana zostanie wartość 'button', nie pokaże już pytań które mają jakąś wartość), jak natomiast wyświetlić kolejne pytanie?
|
|
|
25.11.2019, 15:19:57
Post
#7
|
|
Grupa: Zarejestrowani Postów: 1 828 Pomógł: 225 Dołączył: 20.03.2005 Skąd: Będzin Ostrzeżenie: (0%) |
Skoro za każdym razem wyświetlasz jedno pytanie to pętla while jest Ci zbędna, wystarczy samo:
Nie wiem jakie masz dane w bazie, ale po dodaniu odpowiedzi, każde zapytanie z SELECT powinno pominąć pytanie na które jest już odpowiedź. Przeprowadź sobie eksperyment na samej bazie np. w PHPMyAdmin próbując wyświetlić tylko jeden rekord, a następnie dodając odpowiedź w tabeli. Jeżeli masz dla ID autoincerment to nie musisz w zapytaniu INSERT dodawać kolumn które baza danych za Ciebie sama wypełni np. ID i DATA
|
|
|
Wersja Lo-Fi | Aktualny czas: 10.04.2024 - 21:53 |