Pisze skrypt, ktory bedzie wyswietlal pytania, kazde pytanie na osobnej stronie i to w losowej kolejnosci, to juz udalo mi sie zrobic.
KOD
<?php include ('./connect.php'); /*------------------------------------------PYTANIA START--------------------------------------------------*/ $kategoria = 'UTK'; $zapytanie = $pdo->prepare('SELECT * FROM pytania_new WHERE Kategoria = :kategoria'); //pobranie wedlud kategorii zdefiniowanej w 'bindValue' $zapytanie -> bindValue(':kategoria', $kategoria, PDO::PARAM_STR); //przypisanie wartosci $kategoria dla 'bindValue' $zapytanie -> execute(); /* Zwraca liczbe pobranych rekordow*/ $count = $zapytanie->rowCount(); /*Petla do wyswietlenia pytan foreach($zapytanie as $row) { echo $row['Tresc']; echo "<br />"; }*/ /*Wyswietlenie losowego pytanie + zapisanie aktualnego do sesji*/ $sesja_pytan = $_SESSION['pytania_losowe']; //przypisanie lepszej nazwy zmiennej dla sesji :) $result = $zapytanie -> fetchAll(PDO::FETCH_ASSOC); // Wpisanie rekordow do tablicy $_SESSION['pytania_losowe'] = $result; //sesja przetrzymuje wszystkie pytania w losowej kolejnosci } $numer=$_GET['pytanie']; $numer--; //odjecie 1, aby byla taka sama liczba jak dla indeksu w tablicy $id = $sesja_pytan[$numer]['ID']; //echo $sesja_pytan[$numer]['Tresc']; //wyswietlenie tresci jednego pytania /*foreach ($result as $result) { echo $result['Tresc']; } */ $zapytanie->closeCursor(); /*------------------------------------------PYTANIA KONIEC--------------------------------------------------*/ /*------------------------------------------ODPOWIEDZI START------------------------------------------------*/ $zapytanie2 = $pdo->prepare('SELECT * FROM odpowiedzi WHERE ID_Pytania = :ID_pytania'); //pobranie wedlud kategorii zdefiniowanej w 'bindValue' $zapytanie2 -> bindValue(':ID_pytania', $id, PDO::PARAM_INT); //przypisanie wartosci $kategoria dla 'bindValue' $zapytanie2->execute(); /* Zwraca liczbe pobranych rekordow*/ $count2 = $zapytanie2->rowCount(); /*losowanie odpowiedzi*/ $result2 = $zapytanie2 -> fetchAll(PDO::FETCH_ASSOC); // Wpisanie rekordow do tablicy $zapytanie2->closeCursor(); /*------------------------------------------ODPOWIEDZI KONIEC-----------------------------------------------*/ /*------------------------------------------FORMULARZ START-------------------------------------------------*/ $value=0; foreach($result2 as $row) { $odpowiedz = $row['Tresc_odpowiedzi']; $value++; } $aktualna = $_GET['pytanie']; /*------------------------------------------FORMULARZ KONIEC------------------------------------------------*/ /*------------------------------------------STRONNICOWANIE START---------------------------------------------*/ $results = 1; //Ilość wyników na pojedynczej stronie $pages = $count; //Liczba wszystkich stron, na które rozdzielane będą wyniki z bazy danych $page = isset($_GET['pytanie']) ? $_GET['pytanie'] : 1; //Numer strony na której się znajdujemy, będzie pobierany z parametru GET o nazwie pytanie. Jeżeli adres nie będzie go zawierał, będzie to oznaczać iż znajdujemy się na pierwszej stronie. $next = $page + 1; //Te zmienne posłużą nam przy tworzeniu linków do przedniej i następnej strony: $back = $page - 1; $start = $page * $results - $results; //wiersz od którego zapytanie ma zacząć pobierać wyniki: $getData = $pdo->query("SELECT * FROM pytania_new LIMIT $start, $results")->fetchAll(); if($page > 1) { } for($pg=1; $pg<=$pages; $pg++) { } if($page < $pages) { } if ($page == $count) { } /*------------------------------------------STRONNICOWANIE KONIEC--------------------------------------------*/ /*------------------------------------------CZY PRAWIDŁOWY START---------------------------------------------*/ /*------------------------------------------CZY PRAWIDŁOWY KONIEC--------------------------------------------*/ ?>
Ale teraz nie wiem jak sprawdzic czy link "Nastepna", badz "Poprzednia" zostal klikniety.
Bo chce teraz sprawdzic czy uzytkownik zaznaczyl dobra odpowiedz i jesli tak to zwiekszy licznik i zapisze go do bazy/sesji i przejdzie do nastepnego pytania, tylko tutaj znalazlem problem co zrobic jak ktos bedzie chcial powrocic do pytania i poprawic odpowiedz? Jesli mialby zawsze bledu, to nie bylo by problemu zwiekszylo by ponownie liczniik i problem z glowy, ale jest mozliwosci, ktore zle policza:
1. uzytkownik mial zaznaczone dobra odpowiedz, licznik sie zwiekszyl, postanowil zmienic swoja odpowiedz to teraz chyba powinno mu odjac tak?
<?php include ('./connect.php'); /*------------------------------------------PYTANIA START--------------------------------------------------*/ $kategoria = 'UTK'; $zapytanie = $pdo->prepare('SELECT * FROM pytania_new WHERE Kategoria = :kategoria'); //pobranie wedlud kategorii zdefiniowanej w 'bindValue' $zapytanie -> bindValue(':kategoria', $kategoria, PDO::PARAM_STR); //przypisanie wartosci $kategoria dla 'bindValue' $zapytanie -> execute(); /* Zwraca liczbe pobranych rekordow*/ $count = $zapytanie->rowCount(); /*Petla do wyswietlenia pytan foreach($zapytanie as $row) { echo $row['Tresc']; echo "<br />"; }*/ /*Wyswietlenie losowego pytanie + zapisanie aktualnego do sesji*/ $sesja_pytan = $_SESSION['pytania_losowe']; //przypisanie lepszej nazwy zmiennej dla sesji :) $result = $zapytanie -> fetchAll(PDO::FETCH_ASSOC); // Wpisanie rekordow do tablicy $_SESSION['pytania_losowe'] = $result; //sesja przetrzymuje wszystkie pytania w losowej kolejnosci } $numer=$_GET['pytanie']; $numer--; //odjecie 1, aby byla taka sama liczba jak dla indeksu w tablicy $id = $sesja_pytan[$numer]['ID']; //echo $sesja_pytan[$numer]['Tresc']; //wyswietlenie tresci jednego pytania /*foreach ($result as $result) { echo $result['Tresc']; } */ $zapytanie->closeCursor(); /*------------------------------------------PYTANIA KONIEC--------------------------------------------------*/ /*------------------------------------------ODPOWIEDZI START------------------------------------------------*/ $zapytanie2 = $pdo->prepare('SELECT * FROM odpowiedzi WHERE ID_Pytania = :ID_pytania'); //pobranie wedlud kategorii zdefiniowanej w 'bindValue' $zapytanie2 -> bindValue(':ID_pytania', $id, PDO::PARAM_INT); //przypisanie wartosci $kategoria dla 'bindValue' $zapytanie2->execute(); /* Zwraca liczbe pobranych rekordow*/ $count2 = $zapytanie2->rowCount(); /*losowanie odpowiedzi*/ $result2 = $zapytanie2 -> fetchAll(PDO::FETCH_ASSOC); // Wpisanie rekordow do tablicy $zapytanie2->closeCursor(); /*------------------------------------------ODPOWIEDZI KONIEC-----------------------------------------------*/ /*------------------------------------------STRONNICOWANIE START---------------------------------------------*/ $results = 1; //Ilość wyników na pojedynczej stronie $pages = $count; //Liczba wszystkich stron, na które rozdzielane będą wyniki z bazy danych $page = isset($_GET['pytanie']) ? $_GET['pytanie'] : 1; //Numer strony na której się znajdujemy, będzie pobierany z parametru GET o nazwie pytanie. Jeżeli adres nie będzie go zawierał, będzie to oznaczać iż znajdujemy się na pierwszej stronie. $next = $page + 1; //Te zmienne posłużą nam przy tworzeniu linków do przedniej i następnej strony: $back = $page - 1; $start = $page * $results - $results; //wiersz od którego zapytanie ma zacząć pobierać wyniki: $getData = $pdo->query("SELECT * FROM pytania_new LIMIT $start, $results")->fetchAll(); /*------------------------------------------FORMULARZ START-------------------------------------------------*/ $aktualna = $_GET['pytanie']; foreach($result2 as $row) { $odpowiedz = $row['Tresc_odpowiedzi']; $value= $row['ID']; } if($page < $pages) { } $zapytanie3 = $pdo->prepare('SELECT * FROM odpowiedzi WHERE ID_Pytania = :ID_pytania AND ID = :ID_odpowiedzi'); //pobranie wedlud kategorii zdefiniowanej w 'bindValue' $zapytanie3 -> bindValue(':ID_pytania', $id, PDO::PARAM_INT); //przypisanie wartosci $kategoria dla 'bindValue' $zapytanie3 -> bindValue(':ID_odpowiedzi',$_POST['odp'], PDO::PARAM_INT); $zapytanie3 -> execute(); $result3 = $zapytanie3 -> fetchAll(PDO::FETCH_ASSOC); $zapytanie3->closeCursor(); if ($result3['Prawidlowa']==1) { // jesli ok /*$zapytanie4 = $pdo->prepare("UPDATE uzytkownicy SET Aktualny_wynik = :wynik WHERE ID = :id"); $zapytanie4->bindValue(':wynik', $_POST['odp'], PDO::PARAM_STR); $zapytanie4->bindValue(':id', 3, PDO::PARAM_INT); $zapytanie4->execute();*/ //header('location:test.php?pytanie='.$next); } } /*------------------------------------------FORMULARZ KONIEC------------------------------------------------*/ if($page > 1) { } for($pg=1; $pg<=$pages; $pg++) { } if($page < $pages) { } if ($page == $count) { } /*------------------------------------------STRONNICOWANIE KONIEC--------------------------------------------*/ ?>
Poprawilem kod, aby dzialal na przysik, bo cos chyba na link to nie bedzie tak latwo, ale cos nie chce dzialac, moze tutaj ktos pomoze