Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Wyświetlenie pytań oraz odpowiedzi z dwóch różnych tabel
M4rcin3z
post
Post #1





Grupa: Zarejestrowani
Postów: 25
Pomógł: 0
Dołączył: 17.03.2013

Ostrzeżenie: (0%)
-----


Cześć.

Najpierw parę informacji o co mi chodzi.

Tworzę mini portal edukacyjny z generowanymi testami. Wszystko oparte o MySQL i PHP. Temat pilny.

Pytania oraz odpowiedzi są w dwóch różnych tabelach tj.:

Pytania:
ID_Pytania | ID_Testu | Tresc_Pytania

Odpowiedzi

ID_Odpowiedzi | ID_Pytania | Tresc_Odpowiedzi | Czy_Prawidlowa


A teraz do rzeczy. Potrzebuję wyświetlić pytanie a pod nim 4 odpowiedzi w radio buttonie. Mamy taki kod:

  1. <?php
  2.  
  3. $conn = mysql_connect ("localhost", "root", "") or
  4. die ("Nie można połączyć z bazą MySQL");
  5. $db = mysql_select_db ("quiz", $conn) or die (mysql_error());
  6.  
  7. $wynik = mysql_query("SELECT ID_Pytania, Tresc_Pytania
  8. From pytania Order by RAND() LIMIT 10;");
  9. //$zapytanie = mysql_query("SELECT ID_Odpowiedzi, Tresc_Odpowiedzi, Czy_Prawidlowa
  10. // FROM Odpowiedzi;");
  11. if (mysql_num_rows($wynik)>0)
  12. {
  13.  
  14. // echo '<input type="radio" name="'.$i.'" value="'.$wynik['Tresc_Odpowiedzi'].'" />'.$wynik["Tresc_Odpowiedzi"].'</br>';
  15. $i=1;
  16. echo '<form method="post" action="result.php">';
  17.  
  18. while($pytanie = mysql_fetch_array($wynik)){
  19. echo '<br>'.$i.'.'.$pytanie['Tresc_Pytania'].'</br>';
  20.  
  21. echo '<input type="radio" value="" /></br>';
  22. echo '<input type="radio" value="" /></br>';
  23. echo '<input type="radio" value="" /></br>';
  24. echo '<input type="radio" value="" /></br>';
  25. echo '<br>';
  26.  
  27. $i++;
  28. }
  29.  
  30. print '<INPUT type="submit" name="wyslij" value="Pokaż wynik">';
  31.  
  32. }
  33. ?>
  34.  


Póki co mam tylko wyświetlone w pętli pytania i po 4 radio do każdego i tutaj jest problem (IMG:style_emoticons/default/tongue.gif) Jak wkleić pod te radio tresci odpowiedzi, które mam w bazie?
Już próbowałem pętle w pętli, ale nic nie dawało rady. Może zgłupiałem albo jestem cienki, a może coś przegapiłem. A żeby było śmieszniej potrzebowałbym żeby pytania były losowo wybierane i jak tu podczepić do losowych pytań odpowiedzi?

PS.

Jak nie ten dział to przepraszam, ale już tyle nad tym siedzę, że nie myślę (IMG:style_emoticons/default/tongue.gif)
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Pyton_000
post
Post #2





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


W takim że pytania nijak się mają do odpowiedzi, no chyba że w BD masz w odpowiedniej kolejności pytania i odpowiedzi.
Poza tym radio są źle nazwane, brakuje identyfikacji odpowiedzi.
Użyta stara biblioteka mysql_*
Pobierasz wszystkie pytania i odpowiedzi, a wyświetlasz tylko 11 pytań. A co jak nie będzie tyle w BD? lipa..

Dalej nie chce mi się wymieniać.
Go to the top of the page
+Quote Post
M4rcin3z
post
Post #3





Grupa: Zarejestrowani
Postów: 25
Pomógł: 0
Dołączył: 17.03.2013

Ostrzeżenie: (0%)
-----


Cytat(Pyton_000 @ 17.01.2015, 19:04:20 ) *
W takim że pytania nijak się mają do odpowiedzi, no chyba że w BD masz w odpowiedniej kolejności pytania i odpowiedzi.


Tak mam w odpowiedniej kolejności i pytania i odpowiedzi.


Nie jestem alfą i omegą, bo dopiero zaczynam na dobrą sprawę... Zawsze można się do czegoś przyczepić jak tylko się tego chce (IMG:style_emoticons/default/wink.gif)


Ok, wracając do Twojej opcji.

Wszystko niby będzie ok, ale coś mi nie gra... Wywala błędy w jednym miejscu i nie wiem jak to ugryźć :/

CODE
Notice: Undefined index: ID_Pytania in C:\xampp\htdocs\EduPortal\test.php on line 46


CODE
Warning: Invalid argument supplied for foreach() in C:\xampp\htdocs\EduPortal\test.php on line 46

Ten problem już mam z głowy... Dodany
  1. foreach([b](array)[/b]$answersPrepared['ID_Pytania'] as $answers)


Z tego co wyczytałem sugeruje, że dana zmienna nie jest tablicą i na tym forum ktoś pisał żeby sprawdzić czy jest w ogóle wypełniona tym sposobem:

  1. echo '<pre>';
  2. print_r($zmienna);
  3. echo '</pre>';


I mi pokazuje coś takiego:
CODE

Array
(
[7] => Array
(
[0] => Array
(
[ID_Odpowiedzi] => 25
[ID_Pytania] => 7
[Tresc_Odpowiedzi] => jako zbiór krotek, które w znormalizowanych bazach danych s? unikatowe i nie gra roli ich kolejno??
[Czy_prawidlowa] => 1
)

[1] => Array
(
[ID_Odpowiedzi] => 26
[ID_Pytania] => 7
[Tresc_Odpowiedzi] => jako zbiór krotek, które w znormalizowanych bazach danych s? unikatowe i ich kolejno?? gra rol?
[Czy_prawidlowa] => 0
)

[2] => Array
(
[ID_Odpowiedzi] => 27
[ID_Pytania] => 7
[Tresc_Odpowiedzi] => jako zbiór krotek, które w znormalizowanych bazach danych s? powtarzalne i ich kolejno?? gra rol?
[Czy_prawidlowa] => 0
)

[3] => Array
(
[ID_Odpowiedzi] => 28
[ID_Pytania] => 7
[Tresc_Odpowiedzi] => elementy manipulacyjne modelu
[Czy_prawidlowa] => 0
)

)

[8] => Array
(
[0] => Array
(
[ID_Odpowiedzi] => 29
[ID_Pytania] => 8
[Tresc_Odpowiedzi] => Jest bogaty i pracuje jako konsultant dla Sun Mycrosystems.
[Czy_prawidlowa] => 0
)

[1] => Array
(
[ID_Odpowiedzi] => 30
[ID_Pytania] => 8
[Tresc_Odpowiedzi] => Procesuje si? o prawa do wykorzystywania jego pomys?u przez podmioty komercyjne.
[Czy_prawidlowa] => 0
)

[2] => Array
(
[ID_Odpowiedzi] => 31
[ID_Pytania] => 8
[Tresc_Odpowiedzi] => Opracowuje nowy typ relacyjnych baz danych
[Czy_prawidlowa] => 0
)

[3] => Array
(
[ID_Odpowiedzi] => 32
[ID_Pytania] => 8
[Tresc_Odpowiedzi] => Nie ?yje
[Czy_prawidlowa] => 1
)

)

[10] => Array
(
[0] => Array
(
[ID_Odpowiedzi] => 37
[ID_Pytania] => 10
[Tresc_Odpowiedzi] => ...to poprzedniczka relacyjnej bazy danych, obecnie nieu?ywana.
[Czy_prawidlowa] => 0
)

[1] => Array
(
[ID_Odpowiedzi] => 38
[ID_Pytania] => 10
[Tresc_Odpowiedzi] => ...znajduje si? w fazach prototypowych i nie powsta?y dotychczas rozwi?zania komercyjne.
[Czy_prawidlowa] => 1
)

[2] => Array
(
[ID_Odpowiedzi] => 39
[ID_Pytania] => 10
[Tresc_Odpowiedzi] => ...to zbiór obiektów, których zachowanie si?, stan oraz zwi?zki s? okre?lone zgodnie z obiektowym modelem danych
[Czy_prawidlowa] => 0
)

[3] => Array
(
[ID_Odpowiedzi] => 40
[ID_Pytania] => 10
[Tresc_Odpowiedzi] => ...nie istnieje
[Czy_prawidlowa] => 0
)

)

)


Czyli znaczyłoby, że jest wypełniona i ID_Pytania w tej tablicy się znajduje, więc gdzie leży problem? Zapodam kod:
  1. <?php
  2. $mysql_host = 'localhost'; //lub jakiś adres: np sql.nazwa_bazy.nazwa.pl
  3. $port = '3306'; //domyślnie jest to port 3306
  4. $username = 'root';
  5. $password = '';
  6. $database = 'quiz'; //'produkty'
  7.  
  8. try{
  9. $pdo = new PDO('mysql:host='.$mysql_host.';dbname='.$database.';port='.$port, $username, $password );
  10. echo 'Połączenie nawiązane!';
  11. }catch(PDOException $e){
  12. echo 'Połączenie nie mogło zostać utworzone.<br />';
  13. }
  14.  
  15.  
  16.  
  17. $sql = "SELECT * FROM pytania ORDER BY RAND() LIMIT 3";
  18. $sth = $pdo->prepare($sql);
  19. $sth->execute();
  20.  
  21. $questions = $sth->fetchAll(PDO::FETCH_ASSOC);
  22.  
  23. $questionsIds = array();
  24.  
  25. foreach ($questions as $question)
  26. {
  27. $questionsIds[] = $question['ID_Pytania'];
  28. }
  29.  
  30. $sth = $pdo->prepare("SELECT * FROM Odpowiedzi WHERE ID_Pytania IN(".implode(',', $questionsIds).")");
  31. $sth->execute();
  32. $answers = $sth->fetchAll(PDO::FETCH_ASSOC);
  33.  
  34. $answersPrepared = array();
  35. foreach($answers as $answers)
  36. {
  37. $answersPrepared[$answers['ID_Pytania']][] = $answers;
  38. }
  39. echo '<pre>';
  40. print_r($answersPrepared);
  41. echo '</pre>';
  42. foreach ($questions as $question)
  43. {
  44. echo "<h2>{$question['Tresc_Pytania']}</h2>";
  45. echo '<ul>';
  46. foreach($answersPrepared['ID_Pytania'] as $answers)
  47. {
  48. echo "<li><input type='checkbox' name='answer[{$answer['ID_Pytania']}]'>{$answer['Tresc_Odpowiedzi']}</li>";
  49. }
  50. echo '</ul>';
  51. }
  52.  
  53. ?>


Ten post edytował M4rcin3z 18.01.2015, 09:23:03
Go to the top of the page
+Quote Post

Posty w temacie
- M4rcin3z   Wyświetlenie pytań oraz odpowiedzi z dwóch różnych tabel   16.01.2015, 20:59:32
- - Pyton_000   Pobierasz z bazy pytania. Zapisujesz sobie do tabl...   16.01.2015, 21:05:43
- - M4rcin3z   A możesz to bardziej w wersji kodu zapodać? Powie...   16.01.2015, 21:14:43
- - Pyton_000   "Literówka" A czego nie rozumiesz w ty...   16.01.2015, 21:17:10
- - M4rcin3z   No jak nie pisałem jak pisałem. Ale już parę raz...   16.01.2015, 21:20:33
- - Pyton_000   pętla w pętli   16.01.2015, 22:30:21
- - M4rcin3z   A możesz taką przykładową, która wg Ciebie będzie ...   16.01.2015, 23:28:14
- - Pyton_000   Mam dziś za dobry dzień. Masz prawie gotowiec. Nic...   17.01.2015, 13:18:49
- - M4rcin3z   Ok, dzięki... Dla kogoś kto jest zielony sam kod n...   17.01.2015, 17:44:44
- - Pyton_000   Taaa... tylko że to nie działa poprawnie, no chyba...   17.01.2015, 18:11:42
- - M4rcin3z   W jakim sensie nie działa to prawidłowo?   17.01.2015, 18:41:48
- - Pyton_000   W takim że pytania nijak się mają do odpowiedzi, n...   17.01.2015, 19:04:20
|- - M4rcin3z   RE: Wyświetlenie pytań oraz odpowiedzi z dwóch różnych tabel   18.01.2015, 09:07:40
- - Pyton_000   Brawo.. zamień foreach($answersPrepared[...   18.01.2015, 09:45:12
- - M4rcin3z   Ok działa (zaraz napiszesz, że wiesz że działa )....   20.01.2015, 13:38:27
- - rad11   [PHP] pobierz, plaintext SELECT count(*) F...   20.01.2015, 14:00:20
- - M4rcin3z   To daje ze bede mial wyswietlone i liczone... A ja...   20.01.2015, 14:04:55
- - Pyton_000   Po przesłaniu odpowiedzi zbierasz ich ID z formula...   20.01.2015, 15:56:06
- - M4rcin3z   No ok, tylko proszę łopatologicznie jak pobrać je ...   20.01.2015, 16:15:39
- - Pyton_000   Weź sobie jakiś kurs PHP od podstaw to staniesz si...   20.01.2015, 17:22:30
- - M4rcin3z   Ale fajnie by było jakbyś mi pomógł   20.01.2015, 18:37:32
- - Pyton_000   Pomogłem, gotowca więcej ode mnie nie dostaniesz. ...   20.01.2015, 20:12:23
- - M4rcin3z   Nie bede biegac, bo musze zrobic to max do konca c...   22.01.2015, 12:56:19
|- - strife   Cytat(M4rcin3z @ 22.01.2015, 12:56:19...   22.01.2015, 15:48:59
- - M4rcin3z   Jak się siedzi nad tym pare dni i nic nie wychodzi...   22.01.2015, 15:51:17
- - strife   Szukanie pomocy, a oczekiwanie na napisanie gotowc...   22.01.2015, 15:56:09
- - M4rcin3z   Tylko kolko sie zamyka w momencie kiedy napisalem ...   26.01.2015, 11:22:14
- - Pyton_000   no to do value dla radio wrzuć ID_odpowiedzi, wted...   26.01.2015, 11:53:42
- - M4rcin3z   Zrobiłem coś takiego: echo "<input type=...   26.01.2015, 14:21:35
- - Pyton_000   Zauważ że są one w tablicy dodatkowoczyli Kodarray...   26.01.2015, 15:55:23
- - M4rcin3z   A tak z ciekawości muszę jeszcze coś zmodyfikować,...   27.01.2015, 12:18:11
- - Pyton_000   A zobaczyłeś choć jaki wynik dostajesz z tego zapy...   27.01.2015, 12:54:46
- - M4rcin3z   No właśnie miałem pisać, że po dopisaniu tego w og...   27.01.2015, 12:58:51
- - Pyton_000   Zmień zapytanie na: [PHP] pobierz, plaintext $sth ...   27.01.2015, 13:44:27
- - M4rcin3z   Teraz to wyrzuca przy wyswietlaniu odpowiedzi Ko...   27.01.2015, 14:04:53
- - Pyton_000   Pokaż jeszcze raz cały kod   27.01.2015, 14:17:52
- - M4rcin3z   Kod<?php // Rozpoczynanie sesji. session_sta...   27.01.2015, 14:18:41
- - Pyton_000   Masz i analizuj. [PHP] pobierz, plaintext $sql = ...   27.01.2015, 14:47:14
- - M4rcin3z   Ok przeksztalcone na moje i dziala (bo mialo dzial...   31.01.2015, 11:37:23
- - Pyton_000   implode(',',$_POST['answers']...   31.01.2015, 13:36:38
- - M4rcin3z   Coś mi tu nie tak poszło bo wyrzuca KodCatchable ...   31.01.2015, 14:16:16
- - Pyton_000   brak ) w prepare.   31.01.2015, 14:28:27
- - M4rcin3z   Hula aż miło Tylko ostatni problem :/ Chciałb...   31.01.2015, 15:24:41
- - Pyton_000   A w czym masz problem? Bo to już się zaczyna robić...   31.01.2015, 15:36:50
- - M4rcin3z   Mam problem z tym, że robiąc to w ten sposób: Kod...   31.01.2015, 16:05:19
- - Pyton_000   Bo pozostałe zmienne nie mają wartości, masz poprz...   31.01.2015, 16:29:07
- - M4rcin3z   Wszystko zrobione ! Nie będę już truł d*** ...   2.02.2015, 09:51:49


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 28.12.2025 - 18:00