Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: problem z wyświetleniem danych w postaci checkbox
Forum PHP.pl > Forum > PHP
huka
Witam,

mam problem z wświetleniem danych w postaci pól wyboru (checkbox). Chodzi mi o coś takiego ze robie program do testów i skrypt powinien wygenerować pytania i odpowiedzi do pytań.
Z wyświetleniem pytań nie mam problemu, natomiast z wyświetleniem odpowiedzi do tych pytań już tak. Odpowiedzi chciałbym wyświetlić w postaci pól wyboru. Problem polega na tym że powinno pokazać odpowiedzi tylko do wskazanego pytania. W bazie danych oczywiście mam zapisane odpowiedzi (po 4 do każdego pytania).
Udało mi sie napisac taki skrypt:
  1. <?php
  2. mysql_connect (&#092;"localhost\");
  3. mysql_select_db (generator);
  4. $zapytanie = &#092;"SELECT * FROM Pytania\";
  5. $wykonaj = mysql_query ($zapytanie);
  6. while($wiersz=mysql_fetch_array ($wykonaj)) 
  7.  
  8. if($stan=='pokaz') {
  9. $zapytanie = &#092;"SELECT * FROM Pytania where ID_pytania=$ID_pytaniapokaz\";
  10. $wykonaj = mysql_query ($zapytanie);
  11. $tablica = mysql_fetch_array($wykonaj);
  12.  echo &#092;"<form method=\"get\" action=\"pokaz.php\">
  13.       <b>Tresc pytania</b>
  14.       <input type=&#092;"textarea\" rows=\"3\" name=\"Tresc_pytania\" value=\"\".$tablica['Tresc_pytania'].\"\" size=\"50\" ></form>\";
  15. }
  16.  
  17. $zapytanie = &#092;"SELECT * FROM Odpowiedzi\";
  18. $wykonaj = mysql_query ($zapytanie);
  19. while($wiersz=mysql_fetch_array ($wykonaj)) 
  20. echo&#092;"
  21. <b>Odpowiedz</b>
  22. <input type=&#092;"checkbox\"  name=\"Odpowiedz\" value=\"$Odpowiedz\" size=\"50\" >\";
  23.  
  24. ?>

Aby wyświetlic pytania generowany jest jeszcze ten skrypt:
  1. <?
  2. $db_name = &#092;"generator\";
  3. $con = mysql_connect(&#092;"localhost\") or die(\"Blad otwarcia bazy\");
  4. $db = mysql_select_db($db_name, $con) or die(&#092;"Otwarcie tabeli nie powiodło się\");
  5. $sql = &#092;"select * from Pytania\";
  6. $result = mysql_query($sql, $con) or die(&#092;"Błąd połączenia\");
  7. $i=0;
  8.  
  9. while ($record = mysql_fetch_array($result)){
  10. $i++;
  11. print &#092;"<tr><td><a href=\"pokaz.php?stan=pokaz&ID_pytaniapokaz= $record[0]\">Pytanie $i</a></td>\";
  12. }
  13. ?>

Problem jest w tym że nie pokazuje żadnych odpowiedzi tylko pola wyboru. Pokzuje taką ilość checkbox-ów jaka jest ilość wszystkich odpowiedzi w tabeli. A powinno pokazać tylko tyle odpowiedzi ile jest przypisane do wskazanego pytania.

Nie wiem jak to przerobić aby pokazało odpowiedzi w postaci checkbox-ów questionmark.gif?
kszychu
1.
  1. <?php
  2. $zapytanie = &#092;"SELECT * FROM Odpowiedzi\";
  3. ?>

Może jakiś WHERE do tego zapytania? Nie dziwne, że zwraca Ci wszystkie odpowiedzi z bazy.

2. Poprawna składnia checkboxa to:
  1. <input type="checkbox" name="nazwa" value="wartosc"> tekst obok okienka
huka
No tak tylko że jeżeli wezme zrobie coś takiego:
  1. <?php
  2. $zapytanie = &#092;"SELECT * FROM Odpowiedzi WHERE Odpowiedz\";
  3.  
  4. ?>

to wyświetla mi tylko jedną odpowiedź a w bazie do każdego pytania są 4 odpowiedzi.

Co najgorsze nadal pokazuje checkboxa bez żadnych danych. Te dane obok okienka chcę żeby pobrało z bazy a nie na żywca wpisane z palca.
Tylko nie wiem czy coś takiego da sie zastosować?

Nie wiem jak pobrać te dane do odpowiedzi??
otacon
  1. <?php
  2. $zapytanie = &#092;"SELECT * FROM Odpowiedzi\";
  3. $wykonaj = mysql_query ($zapytanie);
  4. while($wiersz=mysql_fetch_array ($wykonaj)) 
  5. echo&#092;"
  6. <b>Odpowiedz</b>
  7. <input type=&#092;"checkbox\" name=\"Odpowiedz\" value=\"$Odpowiedz\" size=\"50\" >\";
  8. ?>


w tym to na moje oko nie ma zdefiniowanej zmiennej $odpowiedz (no chyba ze ja nie widze) i faktycznie zla skladnia tego inputa (patrz wyzej). Aby pomóc wychwycić takie błędy niezdefiniowanych zmiennych daj na początku skryptu taką linijkę:
  1. <?php error_reporting(E_ALL); ?>


Pozdr.
Majcok12
Nie wiem, ale moze zrob to w ten sposob .
  1. <?
  2. $id_pytania = &#092;"0\"; // identyfikatorem pytan, bedzie np. inkrementowane pole
  3. $q = &#092;"SELECT count(*) FROM pytania\";
  4. $w = mysql_query($q);
  5. $ilosc_pytan = mysql_fetch_row($w); 
  6.  
  7. while ($id_pytania<$ilosc_pytan[0]) {
  8. $query = &#092;"SELECT id_odpowiedzi, pytanie FROM pytania WHERE id_pytania = '$id_pytania'\";
  9. $wynik = mysql_query($query);
  10. $id_pytania++;
  11. if(!$wynik) {
  12.     echo &#092;"Brak pytan\";
  13. }
  14. else {
  15.     $pytania =  mysql_fetch_array($wynik);
  16.     $pytanie = $pytania[&#092;"pytanie\"];
  17.     $id_odpowiedzi = $pytania[&#092;"id_odpowiedzi\"];
  18.     ?>
  19.     <table cellpadding=\"1\" cellspacing=\"1\" width=\"175\">
  20. <tr><td colspan=\"4\"><? echo &#092;"$pytanie\"; ?></td></tr>
  21. <form method=\"POST\" action=\"jakas_strona.php\">
  22.          <?
  23.          $ile = &#092;"0\";
  24.          $zapytanie = &#092;"SELECT count(*) FROM odpowiedzi WHERE id_odpowiedzi = '$id_odpowiedzi'\";
  25.          $result = mysql_query($zapytanie);
  26.          $ilosc_odp = mysql_fetch_row($result); 
  27.          $query = &#092;"SELECT odpowiedz FROM odpowiedzi WHERE id_odpowiedzi = '$id_odpowiedzi'\";
  28.          $wynik = mysql_query($query);
  29.          while ($odpowiedz = mysql_fetch_array($wynik) AND $ile<$ilosc_odp[0]) {
  30.         $ile++;
  31.         $opcje = $odpowiedz[&#092;"odpowiedz\"];
  32. ?>
  33.     <tr>
  34.     <td width=\"10\"><input type=\"checkbox\" name=\"odpowiedz\" value=\"odpowiedz<? echo &#092;"$ile\"; ?>></td>
  35.       <td width=\"165\">
  36.     <? echo &#092;"$opcje\"; ?></td>
  37.      </tr>
  38.     <?
  39.     }
  40. }
  41. ?>


Mysle ze wiadomo o co mi chodzilo, moze byc cos zle z powodu kiedy to pisze (moze nie az tak pozno, ale ledwo co juz mysle tongue.gif )

PZdr
huka
Nie wiem dlaczego ale ciągle wyrzuca mi błąd w ostatniej lini tego skryptu:
  1.     
  2. .
  3. .
  4. .
  5. <tr>
  6.     <td width=\"10\"><input type=\"checkbox\" name=\"odpowiedz\" value=\"odpowiedz<? echo &#092;"$ile\"; ?>\"></td>
  7.       <td width=\"165\">
  8.     <? echo &#092;"$opcje\"; ?>
  9.     </td>
  10.     </tr>
  11.     <?
  12.     }
  13. }
  14. ?>


Pokazuje tak jakby czegoś brakowało na końcu skryptu questionmark.gif?
Jak narazie to nie widze co tu jest źle. Jak wiecie gdzie jest błąd to napiszcie.
otacon
wróżki nie jesteśmy. napisz treść tego błędu...

//edit

hint: posprawdzaj czy wszystkie nawiasy klamrowe są pozamykane ;]
huka
Treść błędu jest standardowa:
Kod
Parse error: parse error in c:\apache\htdocs\generator\pokaz.php on line 43


Wskazuje na linie gdzie kończy się skrypt. Kilkakrotnie już sprawdzałem ten skrypt ale jakoś nie moge znaleźć błędu. Nie wiem być może jestem ślepy ale poprostu nie widze tu będu.
Majcok12
Cytat(huka @ 2004-11-03 21:11:21)
Treść błędu jest standardowa:
Kod
Parse error: parse error in c:\apache\htdocs\generator\pokaz.php on line 43


Wskazuje na linie gdzie kończy się skrypt. Kilkakrotnie już sprawdzałem ten skrypt ale jakoś nie moge znaleźć błędu. Nie wiem być może jestem ślepy ale poprostu nie widze tu będu.

to dopisz na samym koncu skryptu przed ?> jeszcze jedna klamre, i bedzie dzialac (policzylem jeszcze raz ilosc klamr i wyszlo ze jest ich 7, a powinna byc 8).

Pzdr
huka
Faktycznie brakowało jednej klamry.

Tylko nie wiem czemu ale nadal jest błąd.Tym razem pokazuje błąd w tej lini:
  1. <?php
  2. .
  3. .
  4. .
  5. $ilosc_pytan = mysql_fetch_row($w); <--POKAZUJE NA TA LINIE ŻE JEST BŁĄD
  6. ?>


a treść błędu to:
Kod
Parse error: Supplited argument ......


Nie wiem o co chodzi ale wskazuje jakby argument tej funkcji był zły.
otacon
podstawowe pytanie: masz połączenie z bazą?
huka
Poprawiłem ten błąd ale nadal mam problem z tym skryptem.

Nie wiem dlaczego ale skrypt nie wyświetla żadnych danych. Nie pokazuje również żadnych błędów przez co nie wiem gdzie mam szukać ewentualnych zmian.

Wydaje mi sie że to jest kwestia zapytań. Tylko nie wiem których.
Może uzależnione jest to od tego że nie wszystkie pola w tabeli nie są wykorzystane.

Tabela Pytania składa sie z takich kolumn:

| ID_pytania | ID_testu | Tresc_pytania|

Natomiast tabela Odpowiedzi przedastawia sie tak:

|ID_odpowiedzi | Id_pyt | Odpowiedz | Dobra_odp|

Jeżeli wiecie gdzie jest błąd w zapytaniu to napiszcie. Będe bardzo wdzięczny.

Pozdro
Majcok12
<?php

$q = "SELECT count(*) FROM Pytania";

$query = "SELECT id_odpowiedzi, Tresc_pytania FROM pytania WHERE id_pytania = '$id_pytania'";

         $zapytanie = "SELECT count(*) FROM odpowiedzi WHERE ID_odpowiedzi = '$id_odpowiedzi'";

         $query = "SELECT odpowiedz FROM odpowiedzi WHERE id_odpowiedzi = '$id_odpowiedzi'";

?>
Dostosuje tabele do tego skryptu a powinno dzialac.
Tabela 'Pytania' (pola):
- ID_pytania (meduimint[unique/auto_increment])
- ID_testu
- Tresc_pytania
- id_odpowiedzi (exclamation.gif!)

Tabela Odpowiedzi :
- id_odpowiedzi
- odpowiedz

Pzdr
FiDO
Przenosze: Skrypty php -> php
huka
Wszystko zrobiłem tak jak powinno być ale nie wiem czemu ciągle pokazuje mi Brak pytań skoro w tabeli mam dodane kilka pytań.

Co najlepsze ten tekst Brak pytań wyświetl w takiej ilości ile mam pytań w tabeli czyli jeżeli mam 3 pytania to wyświetlone jest 3razy Brak pytań.

Stworzyłem nawet nowe tabele z takimi polami jakimi pisałeś ale nadale jest to samo.

Musi być coś z zapytaniem skoro wyświetli ten błąd. Zmieniam to na różne strony ale ciągle jest coś nie tak bo albo wyświetla ten błąd albo pusty ekran.
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-2025 Invision Power Services, Inc.