Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Jakie tabele i zapytanie do sondy ?
Forum PHP.pl > Forum > PHP
SN@JPER^
Witam,

Jakie tabele i zapytanie do sondy ?

Do tabel: .. chcę, aby sondę było można wyświetlać według id... i pytania tworzyło się tak: http://uploads.pl/uploads/ec647c163a.jpg

Zapytanie: wiem jedynie ze wygląda mniej więcej tak; ilosc_glosow +1
Cienki1980
Wszystko zależy od tego jakie chcesz mieć sondy. Czy chcesz zrobić na zasadzie, że
- jedna sonda=jedno pytanie=wiele odpowiedzi lub
- jedna sonda=wiele pytani=wiele odpowiedzi

Druga sprawa czy odpowiedzi można udzielić więcej niż jednej, czy odpowiedzi to tylko TAK/NIE ( 0/1 )

Sprecyzuj dokładnie w myślach co chcesz osiągnąć i pod to zaprojektuj bazę danych.
SN@JPER^
Chodzi mi o jedno pytanie wiele odpowiedzi ...

Do jednej odpowiedzi kilka głosów.

Dam przykład sondy...

www.devilpage.pl, www.manusite.pl
Cienki1980
No to bardzo prosta baza danych.
Wystarczą dwie tabele, jedna dla sondy ( pytania i np czas od kiedy do kiedy ma być aktywna ) i druga z odpowiedziami ( powiązanie musi być do tabeli SONDA, tak aby można było wyciągnąć dane na temat każdej sondy ). W tabeli z odpowiedziami miejsce na treść odpowiedzi, oraz licznik który będzie się inkrementował, za każdym razem jak ktoś wybierze daną odpowiedź.

No przydałoby się do tego jakiś system sprawdzający czy ktoś już przypadkiem nie głosował, aby można było uniknąć sytuacji gdy ktoś robi sztuczne głosowanie głosując kilka(naście/dziesiąt/set) razy pod rząd.
SN@JPER^
Cytat
Wystarczą dwie tabele, jedna dla sondy ( pytania i np czas od kiedy do kiedy ma być aktywna ) i druga z odpowiedziami ( powiązanie musi być do tabeli SONDA, tak aby można było wyciągnąć dane na temat każdej sondy ). W tabeli z odpowiedziami miejsce na treść odpowiedzi, oraz licznik który będzie się inkrementował, za każdym razem jak ktoś wybierze daną odpowiedź.


Czy to bedzie sie dodawało w taki sposób sonde wtedy ?:

http://uploads.pl/uploads/ec647c163a.jpg

Cytat
No przydałoby się do tego jakiś system sprawdzający czy ktoś już przypadkiem nie głosował, aby można było uniknąć sytuacji gdy ktoś robi sztuczne głosowanie głosując kilka(naście/dziesiąt/set) razy pod rząd.


COOKIE czy bardziej coś bezpiecznego? Jak tak spróbuj mi coś doradzić.

Jak możesz spróbuj mi pomóc robiąc tabele w phpmyadmin(lub we własny sposóB), bo na przykładach najlepiej się rozumie..(jak dla mnie)

I jakie zapytania sugerujesz - według czego itp ?
Cienki1980
A może zaczniesz sam myśleć jak to zrobić questionmark.gif Strukture tabel praktycznie Ci podałem ( te najważniejsze pola ), teraz zostaje tylko Tobie to rozbudować.

Narazie nie mieszaj sobie w głowie przyszłymi zapytaniami, a pomyśl nad strukturą tabel. Wystarczą dwie.

Na gotowca nie masz co liczyć .. przynajmniej z mojej strony.
SN@JPER^
Już rozumiem twoje podpowiedzi ...


  1. CREATE TABLE `funkcje_sonda` (
  2. `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
  3. `id_sonda` int(11) NOT NULL,
  4. `odpowiedz` text NOT NULL,
  5. `ilosc_glosow` int(11) NOT NULL,
  6. PRIMARY KEY (`id`)
  7. ) ENGINE=MyISAM DEFAULT CHARSET=latin2 AUTO_INCREMENT=1 ;
  8.  
  9.  
  10.  
  11. CREATE TABLE `sonda` (
  12. `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
  13. `pytanie` text NOT NULL,
  14. `czas_w` int(11) NOT NULL,
  15. PRIMARY KEY (`id`)
  16. ) ENGINE=MyISAM DEFAULT CHARSET=latin2 AUTO_INCREMENT=1 ;




Jakie zabezpieczenie proponujesz?.. jedynie znam hmm COOKIE, ale włąsnie jest ten problem- gdy ciacha są wyłączone... angrysmiley.gif
Cienki1980
No widzisz jak ładnie poszła Ci baza danych.
Co do zabezpieczeń, możesz oprzeć się na COOKIES ... a możesz tez na bazie danych. Zapisując do bazy danych IP z którego było głosowanie i czas ... i np ustalić że nie można głosować dwa razy z tego samego IP w ciągu 24 godzin.

Możesz dołączyć do tego jeszcze COOKIES i jakieś zabezpieczenie z tego wyjdzie.
SN@JPER^
Teraz mam problem z edycją:

Otóż nie wiem jak wyedytować:


  1. <?php
  2.  
  3. /**
  4. ** includujemy config.php
  5. */
  6.  
  7. include "config.php";
  8.  
  9. /**
  10. * tworzymy $_GET['co'] do funkcji switch
  11. */
  12.  
  13. $get = $_GET['co'];
  14.  
  15. /**
  16. * teraz skladnia switch i wykorzystanie $get
  17. */
  18.  
  19. switch($get)
  20. {
  21.  
  22. /**
  23. *strona startowa - czyli usuwanie i edycja sond
  24. */
  25.  
  26. default:
  27.  
  28. $zapytanie = "select * from `sonda` order by id desc";
  29. $query = mysql_query($zapytanie);
  30. $row = mysql_num_rows($query);
  31.  
  32. while($dane = mysql_fetch_array($query))
  33. {
  34. $pytanie_sonda = stripslashes($dane[pytanie]);
  35. $id = stripslashes($dane[id]);
  36.  
  37. echo "<table class="tabela_sondy">";
  38. echo "<tr>";
  39. echo "<td>$id</td>";
  40. echo "<td>$pytanie_sonda</td>";
  41. echo "<td><a href="?mod=sondy&co=edytuj&id=$id">Edytuj</a></td>";
  42. echo "<td><a href="?mod=sondy&co=usun&id=$id">Usun</a></td>";
  43. echo "</tr>";
  44. echo "</table>";
  45. }
  46.  
  47. break;
  48.  
  49. /**
  50. * robimy case edytuj: w celu edycji sondy
  51. */
  52.  
  53. case edytuj:
  54.  
  55. $zapytanie = "select * from `sonda` where `id` = '$_GET[id]'";
  56. $query = mysql_query($zapytanie);
  57.  
  58. $dane = mysql_fetch_array($query);
  59.  
  60. $id = stripslashes($dane[id]);
  61. $pytanie_sonda = stripslashes($dane[pytanie]);
  62.  
  63.  
  64. $zapytanie1 = "select * from `funkcje_sonda` where `id_sonda` = '$_GET[id]'";
  65. $query1 = mysql_query($zapytanie1);
  66.  
  67.  
  68. ?>
  69.  
  70.  
  71. <form action="?mod=sondy&co=update&id=<?php echo $id; ?>" method="post">
  72. <table class="tabela_dodaj">
  73. <tr>
  74. <td>Pytanie do sondy:</td> <td><input type="text" name="pytanie_sonda" value="<?php echo $pytanie_sonda ?>" /></td>
  75. </tr>
  76.  
  77. <?php
  78.  
  79. while($dane1 = mysql_fetch_array($query1))
  80.  
  81. {
  82. $odpowiedz = stripslashes($dane1[odpowiedz]);
  83.  
  84. ?>
  85.  
  86. <tr>
  87. <td>Odpowiedz:</td><td><input type="text" name="odpowiedz" value="<?php echo $odpowiedz?>" /></td>
  88. </tr>
  89. <?php
  90.  
  91. echo $odpowiedz;
  92. echo '<br />';
  93. }
  94. /**
  95. * formularz edycji
  96. */
  97.  
  98. ?>
  99.  
  100.  
  101.  
  102.  
  103.  
  104.  
  105.  
  106.  
  107. <tr>
  108. <td colspan="2"><input type="submit" value="edytuj" /></td>
  109. </tr>
  110. </table>
  111. </form>
  112.  
  113. <?php
  114.  
  115. break;
  116.  
  117. /**
  118. * robimy case uptade: w celu daleszej edycji
  119. */
  120.  
  121. case update:
  122.  
  123. $pytanie_sonda = addslashes($_POST['pytanie_sonda']);
  124. $odpowiedz = addslashes($_POST['odpowiedz']);
  125.  
  126. $id = $_GET['id'];
  127.  
  128. $zapytanie = "update `sonda` set `pytanie` = '".$pytanie_sonda."' where `id` = '".$id."'";
  129. $query = mysql_query($zapytanie);
  130.  
  131. $zapytanie1 = "update `funkcje_sonda` set `odpowiedz` = '".$odpowiedz."' where `id_sonda` = '".$id."'";
  132. $query1 = mysql_query($zapytanie1);
  133.  
  134.  
  135.  
  136. if($query && $query1){echo "<div class='tekst_warunek'><b>Wyedytowano</b> sonde o id $id </div>";}
  137. else{echo "<div class='tekst_warunek'><b>Nie</b> wyedytowano sondy o id $id</div>";}
  138.  
  139. break;
  140.  
  141. /**
  142. * robimy case usun: w celu usuniecia sondy
  143. */
  144.  
  145. case usun:
  146.  
  147. $id = $_GET['id'];
  148.  
  149. $zapytanie = "delete from `sonda` where `id` = '".$id."'";
  150. $query = mysql_query($zapytanie);
  151.  
  152. if($query){echo "<div class='tekst_warunek'><b>Usunieto</b> sonde o id $id </div>";}
  153. else{echo "<div class='tekst_warunek'><b>Nie</b> usunieto sondy o id $id</div>";}
  154.  
  155. break;
  156. }
  157. ?>
Cienki1980
Odpowidzi masz więcej niż jedną, a teraz zawsze będziesz miał pobieraną tylko ostatnią odpowiedź.

Musisz zamienić
  1. <td>Odpowiedz:</td><td><input type="text" name="odpowiedz" value="<?php echo $odpowiedz ?>" /></td>

na
  1. <td>Odpowiedz:</td><td><input type="text" name="odpowiedz[]" value="<?php echo $odpowiedz?>" /></td>


Potem w php pobierasz $_POST['odpowiedz'] .. i jest to tablica a nie jeden pojedynczy string.
Dla każdego elementu tej tablicy .. np w pętli for lub foreach wykonujesz:
  1. <?php
  2. for()//poczatek petli
  3. {
  4. $zapytanie1 = "update `funkcje_sonda` set `odpowiedz` = '".$odpowiedz[$i]."' where `id_sonda` = '".$id."'";
  5.  
  6. $query1 = mysql_query($zapytanie1);
  7. }//koniec petli
  8. ?>

Przerób i zobacz co z tego wyjdzie.
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.