Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Sonda
dexter_m
post
Post #1





Grupa: Zarejestrowani
Postów: 139
Pomógł: 0
Dołączył: 16.07.2005

Ostrzeżenie: (10%)
X----


Witam! Chciałbym napisać sondę opartą na dwóch plikach:

Pierwszy HTML:

  1. <meta http-equiv="content-language" content="pl">
  2. <title>Sonda</title>
  3. </head>
  4. <!--SONDA-->
  5. <form action="sonda.php">
  6. Czy wierzysz w ufo??
  7. <br>
  8. <br>
  9. <input type="radio" name="ufo" value="TAK" /> TAK
  10. <br>
  11. <input type="radio" name="ufo" value="NIE" /> NIE
  12. <br>
  13. <br>
  14. <input type="submit" value="Zobacz wyniki!">
  15. </form>
  16. <!--KONIEC SONDA-->
  17. </body>
  18. </html>


i teraz potrzebuję drugiego pliku php.
I teraz mam problem. Czy wyniki mają być zapisywane do jakiegoś pliku txt i później załadować tablicę z pliku funkcją file(); . Taki obrałem schemat, ale gorzej z wykonaniem. Macie jakieś pomysły?

PS. Nie chcę gotowego skryptu tylko jakieś pomocne wskazówki, fragmenty kodu itp.

Pozdrawiam, dexter.
Go to the top of the page
+Quote Post
ikioloak
post
Post #2





Grupa: Zarejestrowani
Postów: 416
Pomógł: 0
Dołączył: 8.01.2004

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


Sonde robilem na bazie i wygladalo to mniej wiecej tak:
- jedna tabela 'sondy' z id_sondy, pytanie i active (przyjmuje 1 lub 0)
- 2 tabela 'sondy_odp' gdzie bylo 'id' 'id_sondy' i 'odpowiedz'

Wtedy mozna miec na stronie kilka sond jednoczesnie i ustalac ktora ma byc w tym momencie dostepna dla uzytkownikow.
Go to the top of the page
+Quote Post
crash
post
Post #3





Grupa: Przyjaciele php.pl
Postów: 2 196
Pomógł: 2
Dołączył: 17.01.2004
Skąd: Sosnowiec

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


W pliku z wynikami masz wartości odpowiedzi dla każdej opcji sondy. Pobierasz te dane i inkrementujesz odpowiednią wartość zgodnie z wykonanym głosowaniem...
Go to the top of the page
+Quote Post
dexter_m
post
Post #4





Grupa: Zarejestrowani
Postów: 139
Pomógł: 0
Dołączył: 16.07.2005

Ostrzeżenie: (10%)
X----


Cytat
Sonde robilem na bazie i wygladalo to mniej wiecej tak:

Niestety, jeszcze nie potrafię operować na bazach. (IMG:http://forum.php.pl/style_emoticons/default/sad.gif)
Jak zrobić coś takiego na zwykłych plikach tekstowych??
Go to the top of the page
+Quote Post
Jim
post
Post #5





Grupa: Zarejestrowani
Postów: 111
Pomógł: 0
Dołączył: 27.07.2005

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


Trzeba najpierw znac podstawowe pojecia operacji na plikach.

Nie ma co zdzierac liter z klawiatury jak juz napisano 10 000 kursow (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) Tutaj
http://php.webhelp.pl/kursy/php/pliki/php_4.php?roz=php jest jasno wszystko wyjasnione.

Jak juz masz podstawy opanowane to teraz bedziesz potrzebowal takiego kodu:

  1. <?
  2. while($line = fgets($fp, 1024)) {
  3. list($nrsondy, $opcja1, $opcja2, $opcja3, $opcja4) = explode('|', $line);
  4. $sondy[$nrsondy] = array (&#092;"opcja1\" => $opcja1, \"opcja2\"=>$opcja2, \"opcja3\"=>$opcja3, \"opcja4\"=>$opcja4);
  5. }
  6. ?>


w ten sposob odczytasz z pliku o takiej zawartosci:
Kod
2|11|13|214|31
1|14|95|12|12

informacje o sondach. Wyniki beda przechowywane w tablicy $sondy[nrsondy][nropcji]

Tak mozna przechowywac wyniki o wielu sondach.
Go to the top of the page
+Quote Post
strife
post
Post #6





Grupa: Przyjaciele php.pl
Postów: 2 605
Pomógł: 96
Dołączył: 22.10.2004
Skąd: UK

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


Witam,

Miałem chwilkę czasu, więc pozwoliłem sobie napisać prostą klasę do sond.

Przykładowa Baza
Kod
# Sonda :D
# W 4 linijce temat, w kolejnych odpowiedzi

Czy masz dziewczyne?
Tak|127.0.0.1
Nie|127.0.0.1


Klasa
  1. <?php
  2.  
  3. /*
  4. +---------------------------
  5. +---------------------------
  6. | author: scarface...
  7. +---------------------------
  8. | Licencja: ROTFL
  9. +---------------------------
  10. */
  11.  
  12.  
  13. class Sonda
  14. {
  15.  
  16. var $BazaSonda;
  17. var $Pytanie;
  18. var $FileName;
  19.  
  20. function Czytaj($data)
  21. {
  22.  
  23.  $sArray = file($data);  // Wczytujemy plik bazy do tablicy
  24.  
  25.  $this -> BazaSonda = $sArray; // Dodajemy jego zawartosc do var w klasie.
  26.  $this -> FileName = $data; // Dodajemy do klasy nazwe bazy sondy.
  27.  
  28. }
  29. function Licz()
  30. {
  31.  
  32.  foreach( $this -> BazaSonda as $v => $k) // Dzieki petli czytamy zawartosc bazy
  33.  {
  34.  
  35. if ( $v > 2 ) // Dzieki temu przeczytamy aktualne pytanie w sondzie.
  36. {
  37. if ( $v == 3) // Jesli petla zatrzyma sie na elemencie zawierajacym pytanie, dodajemy do klasy.
  38. {
  39.  
  40. $this -> Pytanie = $k; // ...
  41.  
  42. }
  43. else{
  44.  
  45. $aTemp = explode('|', $k); // Rozbijamy elementy poprzez '|', dzieki temu latwo policzymy.
  46. $aData[] = array( ( count($aTemp) - 1 ), $k ); // ile razy glosowano
  47.  
  48. }
  49.  
  50.  
  51. }
  52.  
  53.  
  54.  }
  55.  
  56.  $this -> BazaSonda = $aData; // Tak przekonwertowana tablica jest zapisywana do klasy.
  57.  
  58.  
  59. }
  60. function Pokaz()
  61. {
  62.  
  63.  echo $this -> Pytanie; // Pokazanie aktualnego tematu
  64.  echo '<br />';  // Wartosc estetyczna (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif)
  65.  
  66.  foreach($this -> BazaSonda as $w) // Petla...
  67.  {
  68.  
  69.  $aTemp = explode('|', $w[1]); // Ponowne rozbicie w celu pokazania aktualnego
  70.  echo $aTemp[0]. ' => ' .$w[0]; // wyboru w sondzie.
  71.  echo '<br />'; // patrz wyzej (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif)
  72.  
  73.  }
  74.  
  75. }
  76. function DodajGlos($int)
  77. {
  78.  
  79.  $file = file($this -> FileName); // Wczytanie pliku z wartosci klasy
  80.  
  81.  $int = 3 + $int;  // Aby nie odliczac kolejnych linijek.
  82.  
  83.  foreach( $file as $k => $v) // (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif)
  84.  {
  85.  
  86. if ( $k == $int ) // Dodanie w odp. linijke glosu.
  87. {
  88.  
  89. $rep  = substr($v, 0, strlen( $v ) - 2 ); // pozbycie sie n
  90. $sDane .= $rep . &#092;"|\" . $_SERVER['REMOTE_ADDR'] . \"n\"; // Dodanie.
  91.  
  92. }
  93. else{
  94.  
  95.  $sDane .= $v;
  96.  
  97. }
  98.  
  99.  }
  100.  
  101.  $zOpen = fopen( $this -> FileName, &#092;"w+\" ); // Wczytanie
  102.  $zWrite = fwrite( $zOpen, $sDane );  // Zapisanie
  103.  $zClose = fclose( $zOpen );  // Zamkniecie
  104.  
  105. }
  106.  
  107. }
  108.  
  109. $sonda = new Sonda;
  110. $sonda -> Czytaj('sonda.dat');
  111. $sonda -> Licz();
  112. // $sonda -> DodajGlos(2); 
  113. $sonda -> Pokaz();
  114.  
  115. ?>


Czytaj() - wybierasz plik z sondą.
Licz() - Ta funkcja liczy wszystkie głosy
DodajGlos - domyslnie wylaczona, gdy ją włączysz zostanie zostanaczona opcja Nie.
Pokaz() - Pokazuje wyniki.

Pozostaje Ci do tego dopisać jeszcze unimożliwienie ponownego głosowania...

Pozdrawiam!

BTW.

Mods_Team - Przepraszam, że tak dużo, ale narazie nie mam serwera i nie mógłbym podać *.phps (IMG:http://forum.php.pl/style_emoticons/default/sad.gif)
Go to the top of the page
+Quote Post
dexter_m
post
Post #7





Grupa: Zarejestrowani
Postów: 139
Pomógł: 0
Dołączył: 16.07.2005

Ostrzeżenie: (10%)
X----


Hmmm, wielkie dzięki za wasz wysiłek i wyrozumiałość. Mam nadzieję, że jakoś sobie pordzę. (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post

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: 22.08.2025 - 23:29