Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Programik do testów
Forum PHP.pl > Forum > Gotowe rozwiązania
huka
Siemnko

Mam problem z napisaniem skryptu php.Robie taki programik do tworzenia testów i ich rozwiązywania.Troche się już w tym pogubiłem bo musze napisać program do tworzenia testów wielokrotnego wyboru.
Problem polega na tym, że nie bardzo wiem jak napisać taki programik. Potrafie dodawać pytania do bazy danych ale mam problem z dodawaniem odpowiedzi do tego pytania. Chodzi o to że nie wiem jak przypisać dwie lub więcej odpowiedzi do tego pytania i zapisać je w bazie(w tym wszystkie mogą być prawidłowe).
Jak macie jakieś propozycje to podeślijcie.
kszychu
Propozycja tabeli odpowiedzi:
pola: id, id_pytania, tresc_odpowiedzi, poprawnosc.

No i dodajesz odpowiedzi, ile tylko chcesz, a to, czy odpowiedz jest poprawna czy nie zalatwia ci pole poprawnosc (0 - niepoprawna lub 1 - poprawna).
huka
No tak...ale jak później będe już tworzył formularz do rozwiązywania testów to w jaki sposób mam przypisać do pytania odpowiedzi?
kszychu
[sql:1:4a5037bd9d]SELECT * FROM odpowiedzi WHERE id_pytania = $id_pytania[/sql:1:4a5037bd9d]
huka
Jeszcze jedno, wiesz może w jaki sposób wyświetlić w formularzu wszystkie odpowiedzi do danego pytania(niezależnie od tego czy są poprawne). Chodzi o to że chcę stworzyć formularz z polami wyboru odpowiewdzi.
kszychu
No to napisałem Ci wyżej, jak wyszukać wszystkie odpowiedzi do danego pytania. Później tworzysz pola typu checkbox, przypisując im id odpowiedzi i treść odpowiedzi. Przy sprawdzaniu zaś, sprwadzasz tylko, czy dana odpowiedź ma poprawność 0 czy 1. I wszystko.
huka
Aha...
A wiesz może jak zaimportować pytania i odpowiedzi z pliku txt.?
Czy wogle jest taka możliwość?
kszychu
Oczywiście, że jest. Sposób importu zależy tylko od budowy takiego pliku.
huka
To fajnie.
A masz może jakiś pomysł?
kszychu
8O Myślałem, że ty masz to na plikach. Ale jeśli szukasz rozwiązania: pliki czy baza, to zdecydowanie polecam bazę. A rozwiązań poszukaj sam smile.gif
huka
Słuchaj możesz podrzucić mi jescze propozycje tabeli pytania?
kszychu
id, tresc może jeszcze jakaś data_dodania.
huka
Pojawił się jeszcze jeden problem...
Podczas dodawania pytania i odpowiedzi do tego pytania jako wartość id_pytania za każdym razem wstawia mi wartość 0. Nie bardzo wiem dlaczego tak się dzieje.
Nie wiem jak napisać skrypt żeby w tabeli odpowiedzi było coś takiego:

id id_pytania odpowiedz poprawnosc
1 50 co kolwiek 1
2 50 co kolwiek 0
3 50 co kolwiek 1
4 50 co kolwiek 1
5 51 co kolwiek 0
6 51 co kolwiek 1

i tak dalej...

Czekam na jakąś propozycje.
Majdan
Pole 'id_pytania' powinno być 'AUTO_INCREMENT'. Wtedy w pole wpisujes 'NULL', a ono automatycznie dodaje o jeden większą od aktualnie zapisanej.
kszychu
Cytat
Pole 'id_pytania' powinno być 'AUTO_INCREMENT'. Wtedy w pole wpisujes 'NULL', a ono automatycznie dodaje o jeden większą od aktualnie zapisanej.

I co wtedy uzyskasz?... Przemyśl to, mówimy o tabeli odpowiedzi.

A co do problemu z dodawaniem id_pytania, pokaż fragment skryptu, którym to dodajesz, bo tak to nie bardzo wiem co może być nie tak.
huka
tak wygląda skrypt dodawania odpowiedzi:[php:1:00c8c782c6]<?php

$db_name = "baza";
$con = mysql_connect("localhost") or die("Blad połączenia");
$db = mysql_select_db($db_name, $con) or die("Otwarcie tabeli");
$sql = "insert into Odpowiedzi values('null','$ID_pyt','$Odpowiedz')";
$result = mysql_query($sql, $con) or die("Polaczenie z baza nie udalo sie");
echo "Dane zostały zapisane do bazy";
echo "<form action=dodaj_pytanie.html><input type=submit value=Powrot></form>";

a tak tabela odpowiedzi:
[sql:1:00c8c782c6]
CREATE TABLE Odpowiedzi(
ID_odpowiedzi int(5) unsigned NOT NULL auto_increment,
ID_pyt int(5) NOT NULL,
Odpowiedz varchar(35) NOT NULL,
PRIMARY KEY (ID_odpowiedzi),
FOREIGN KEY (ID_pyt) REFERENCES Pytania(ID_pytania) ON DELETE CASCADE
) TYPE=InnoDB;[/sql:1:00c8c782c6][/code]
?>[/php:1:00c8c782c6]
kszychu
A $ID_pyt jak odczytujesz? Bo czuję, że z tym jest właśnie problem.
huka
Do tabeli odpowiedzi dodałem jeszcze, tak jak pisałeś rekord poprawnosc który zawiera wartość odpowiedzi (0-niepoprawna 1-poprawna).
huka
ID_pyt to jest klucz obcy, za pomocą którego powiązałem tabele pytania z tabelą odpowiedzi.
Co bym nie wstawił to i tak za każdym razem wpisuje mi do tabeli 0.
Właśnie nie bardzo wiem jak to zmienić.
kszychu
Jasne, tylko jak i skąd pobierasz wartość, którą przypisujesz zmiennej $ID_pyt, którą to zmienną wstawiasz później do inserta?
huka
A i tu jest błąd że tak naprawde ja nie mam nic wpisane w skrypcie skąd ta zmienna $ID_pyt ma pobierć jakąś wartość.
Właśnie chcę napisać taki skrypt w którym te pole Id_pyt będzie wypełniane numerem identyfikatora pytania z tabeli pytania.
Chodzi o to że tak jak wcześniej juz pisałem, że jeżeli dodaje np. pytanie nr 50 to w tabeli odpowiedzi w pole Id_pyt wstawi mi tą wartość 50.
kszychu
No to przy dodawaniu odpowiedzi proponuję zrobić dodatkowe pole select, w którym value=id_pytania a treścią będzie treść pytania. Uprzednio musisz sobie wygrzebać wszystkie pytania z bazy i zapisać do tego pola. Można to rozwiązać jeszcze inaczej, tak, że najpierw masz jkiś selektor, do którego pytania ma być dodana odpowiedź, klikasz dalej (przekazujesz sobie ukryte ID_pytania) i dodajesz odpowiedź. Np:
[sql:1:b08459324a]SELECT id, tresc FROM pytania ORDER BY tresc[/sql:1:b08459324a]
i dalej wygrzebujes to z bazy i przypisujesz do selecta, np:
[php:1:b08459324a]<?php
echo "<select name=ID_pyt>";
while($row = mysql_fetch_array($result)) {
echo "<option value=".$row['id'].">".$row['tresc']."n";
}
?>[/php:1:b08459324a]
huka
A mółbyś mi takie przykładowe zapytanie napisać bo przyznam że do końca nie łapie jak to zrobić?
huka
Już nie wiem sam jak mam to zrobić...

Co nie zmienie to za każdym razem wstawia mi w pole ID_pyt 0.

Nie mam juz pomysłów.
kszychu
Pokaż skrypt, gdzieś musi gubić ID_pyt.
huka
Ale którą wersje skryptu bo już mam ich kilka?
kszychu
8O To ja mam wiedzieć którąquestionmark.gif!! No wybacz, ale przeginasz!
huka
A nie dasz rady przerobić ten skrypt co już wcześniej wysłałem bo być może ja poprostu źle to robie?
Pewnie tego selecta źle napisałem.
kszychu
No ale w tym, co poprzednio wysłałeś nie ma POBIERANIA pytań, więc jak ty chcesz, żeby to działało? W którymś moim poprzednim poście podałem ci sposób jak pobrać pytania. Spróbuj to połączyć.
Majdan
Sorka, nie zrozumiałem. :wink:
huka
Ok mam coś takiego
[php:1:9ae7d26c88]<?php

$db_name = "baza";
$con = mysql_connect("localhost") or die("Blad polaczenia");
$db = mysql_select_db($db_name, $con) or die("Otwarcie tabeli");
$sql = "SELECT ID_pytania, Tresc_pytania FROM Pytania ORDER BY Tresc_pytania";
$sql2 = "insert into Odpowiedzi values('null','$ID_pyt','$Odpowiedz','$Poprawnosc')";
$result = mysql_query($sql, $con) or die("Polaczenie z baza nie udalo sie");
$result2 = mysql_query($sql2, $con) or die("Polaczenie z baza nie udalo sie");
echo "<select name=ID_pytania>";
while($row = mysql_fetch_array($result)) {
echo "<option value=".$row['ID_pytania'].">".$row['Tresc_pytania']."n";
}
echo "Dane zostały zapisane do bazy";
echo "<form action=dodaj_pytanie.html><input type=submit value=Powrot></form>";

?>[/php:1:9ae7d26c88]

Pobieram pytania z tabeli ale mimo wszystko ID_pyt mam cały czas 0.
huka
Stosując ten skrypt pobieram pytania z tabeli ale nie moge dodać odpowiedzi do tabeli. A z pobieraniem ID_pytania to już nie wiem co robie źle.

Macie może jakieś propozycje?
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-2024 Invision Power Services, Inc.