Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Jakie tabele i zapytanie do sondy ?
SN@JPER^
post
Post #1





Grupa: Zarejestrowani
Postów: 266
Pomógł: 0
Dołączył: 4.01.2007
Skąd: Szczecin

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


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
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 9)
Cienki1980
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 1 590
Pomógł: 40
Dołączył: 11.01.2007
Skąd: Centrum

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


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.


--------------------
404
Go to the top of the page
+Quote Post
SN@JPER^
post
Post #3





Grupa: Zarejestrowani
Postów: 266
Pomógł: 0
Dołączył: 4.01.2007
Skąd: Szczecin

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


Chodzi mi o jedno pytanie wiele odpowiedzi ...

Do jednej odpowiedzi kilka głosów.

Dam przykład sondy...

www.devilpage.pl, www.manusite.pl
Go to the top of the page
+Quote Post
Cienki1980
post
Post #4





Grupa: Przyjaciele php.pl
Postów: 1 590
Pomógł: 40
Dołączył: 11.01.2007
Skąd: Centrum

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


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.


--------------------
404
Go to the top of the page
+Quote Post
SN@JPER^
post
Post #5





Grupa: Zarejestrowani
Postów: 266
Pomógł: 0
Dołączył: 4.01.2007
Skąd: Szczecin

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


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 ?

Ten post edytował SN@JPER^ 27.01.2007, 19:12:45
Go to the top of the page
+Quote Post
Cienki1980
post
Post #6





Grupa: Przyjaciele php.pl
Postów: 1 590
Pomógł: 40
Dołączył: 11.01.2007
Skąd: Centrum

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


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.

Ten post edytował Cienki1980 27.01.2007, 19:31:16


--------------------
404
Go to the top of the page
+Quote Post
SN@JPER^
post
Post #7





Grupa: Zarejestrowani
Postów: 266
Pomógł: 0
Dołączył: 4.01.2007
Skąd: Szczecin

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


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
Go to the top of the page
+Quote Post
Cienki1980
post
Post #8





Grupa: Przyjaciele php.pl
Postów: 1 590
Pomógł: 40
Dołączył: 11.01.2007
Skąd: Centrum

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


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.


--------------------
404
Go to the top of the page
+Quote Post
SN@JPER^
post
Post #9





Grupa: Zarejestrowani
Postów: 266
Pomógł: 0
Dołączył: 4.01.2007
Skąd: Szczecin

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


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. ?>
Go to the top of the page
+Quote Post
Cienki1980
post
Post #10





Grupa: Przyjaciele php.pl
Postów: 1 590
Pomógł: 40
Dołączył: 11.01.2007
Skąd: Centrum

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


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.


--------------------
404
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 21.08.2025 - 08:53