Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: problem z funkcja
Forum PHP.pl > Forum > Gotowe rozwiązania
Majcok12
Mam problem ze skryptem, a raczej czescia skryptu sondy. Wyswietla on opcje i pytanie sondy, pobrane wczesniej z bazy danych.
  1. <? 
  2. include &#092;"common.php\";
  3. global $id_polaczenia;
  4. $id_polaczenia = db_connect();
  5. if(!$id_polaczenia) error_message(sql_error());
  6.  
  7. $query = &#092;"SELECT p_option, p_hl, apoll_date FROM sondy WHERE p_id = 'ttt'\";
  8. $wynik = mysql_query($query);
  9. if(!$wynik) {
  10.     echo &#092;"Brak sondy\";
  11. }
  12. else {
  13.     $eto =  mysql_fetch_array($wynik);
  14.     $naglowek = $eto[&#092;"p_hl\"];
  15.     $data = $eto[&#092;"apoll_date\"];
  16.     ?>
  17.     <table cellpadding=\"1\" cellspacing=\"1\" width=\"175\">
  18. <tr><td colspan=\"4\" class=\"pollTitle\"><? echo &#092;"$naglowek\"; ?></td></tr>
  19.  
  20. <form method=\"POST\" action=\"skrypt_sondy.php\" target=\"result\">
  21. <?
  22. $ile = &#092;"0\";
  23. $q = &#092;"SELECT count(*) FROM sondy WHERE p_id = 'ttt'\";
  24. $w = mysql_query($q);
  25. $ilosc_odp = mysql_fetch_row($w)
  26. while ($poll_data = mysql_fetch_array($wynik); $ile<$ilosc_odp[0]) {
  27.         $ile++;
  28.         $opcje = $poll_data[&#092;"p_option\"];
  29. ?>
  30.     <tr>
  31.     <td width=\"10\" class=\"pollOption\"><input type=\"radio\" name=\"pollvalue\" value=\"odpowiedz<? echo &#092;"$ile\"; ?>></td>
  32.       <td width=\"165\" class=\"pollItem\">
  33.     <? echo &#092;"$opcje\"; ?></td>
  34.      </tr>
  35.     <?
  36.     }
  37. }
  38. ?>

php generuje taki blad:
  1. <?php
  2.  
  3. Parse error: parse error, unexpected T_WHILE in c:&#092;usrkrasnalwwwmajcokdgdfg.php on line 25
  4.  
  5. ?>

Wiec podejrzewam ze mam zle sformulowany warunek lub jakis blad w nim w petli while. Problem w tym, ze nie za bardzo wiem jak ma wygladac poprawny kod.

Mam jeszcze jeden problem odnosnie wlasnie tego skryptu sondy. Dokladnie z id danej sondy.
  1. <?php
  2. $query = &#092;"SELECT p_option, p_hl, apoll_date FROM sondy WHERE p_id = 'questionmark.gif?'\";
  3. ?>

Nie do konca wiem w jaki sposob mozna by pobierac pytanie i odpowiedzi sondy o okreslonym id (np. najnowszym). Tzn. myslalem, ze moze przy dodawaniu nowej sondy, dodajac dane do bazy wpisac takze id wlasnie dodawanej sondy do pliku .txt, czy .dat
  1. <?
  2. $poll_id = &#092;"blablabla\";
  3. $count=0
  4. do {
  5.       $query = &#092;"INSERT INTO sondy VALUES(NULL, '$odp[$count]', '$question', curdate(), '$poll_id')\";
  6.       $wynik = mysql_query($query);
  7.       if(!$wynik) error_message(sql_error());
  8.       $ce = &#092;"$odp[$count]\";
  9.       $count++
  10.      }while ($ce!='');
  11. $file = fopen(sonda/poll_id.dat, &#092;"r\");
  12. fwrite ($file, &#092;"$poll_id\");
  13. fclose ($file);
  14. }
  15. ?>

i pozniej na poczatku skryptu odczytywac z tego pliku id odpowiedniej sondy, jednak tu tkwi problem. W jaki sposob mam odczytac id sondy, ktora chce wyswietlic (jakies dodatkowe informacje zapisywane wraz z id do pliku, czy co?). Eh. nie wiem.....
Mysle ze w miare zrozumiale opisalem moj drugi problem.

Thx za pomoc.

PZdr
mike
Co to jest :
  1. <?php
  2. // ...
  3. while ($poll_data = mysql_fetch_array($wynik); $ile<$ilosc_odp[0]) {
  4. // ...
  5. ?>

Ten ; (średnik) w warunku jest niedozwolony. To chyba miał być jakiś operator logiczny questionmark.gif
klupek
  1. <?php
  2.  
  3. $ilosc_odp = mysql_fetch_row($w)
  4. while ($poll_data = mysql_fetch_array($wynik); $ile<$ilosc_odp[0]) {
  5. $ile++;
  6. $opcje = $poll_data[&#092;"p_option\"];
  7. ?>

Jeszcze dodam od siebie ze brakuje mi średnika po mysql_fetch_row($w).
Majcok12
Ok, wszystko byloby cacy, gdyby nie to ze cos jest nie tak z koncowa czescia funkcji add_poll():
  1. <?
  2. if (isset($_POST[&#092;"ilosc\"])) {
  3.     global $ilosc;
  4. ?>
  5.       <table border=\"0\" cellpadding=\"1\" cellspacing=\"0\" width=\"95%\" height=\"10%\" align=\"center\" valign=\"top\">
  6.         <tr>
  7.            <th width=\"30%\" NOWRAP><font style=\"font-family: Verdana; font-size: 10px; color: gray;\">Pytanie:</th>
  8.            <td width=\"70%\"><input type=\"text\" size=\"20\" maxlength=\"50\" name=\"question\" class=\"pollItem\"></td>
  9.         </tr> 
  10. <?
  11.  
  12.     for ($count=0; $count<$ilosc; $count++) {
  13.         $offset=$count;
  14.         ?>
  15.         <form method=\"post\" action=\"<?php echo $PHP_SELF ?>\">
  16.              <tr>
  17.                  <th width=\"30%\" NOWRAP><font style=\"font-family: Verdana; font-size: 10px; color: gray;\">Podaj odpowiedz nr. <? echo &#092;"$offset\"; ?>:</th>
  18.                  <td width=\"70%\"><input type=\"text\" size=\"20\" maxlength=\"40\" name=\"odp[]\" class=\"pollItem\"></td>
  19.              </tr> 
  20.              <?
  21.             }
  22.         ?>
  23.  
  24.             <th width=\"30%\" colspan=\"2\" NOWRAP>
  25.             <input type=\"submit\" class=\"pollButton\" value=\"Wyślij\" onmouseover=\"this.className='pollButton-over'\" onmouseout=\"this.className='pollButton'\">
  26.         </tr>
  27.      </table>
  28.     </form>
  29.     <?
  30.     if (isset ($_POST[&#092;"odp\"]) && is_array ($_POST[\"odp\"]) && isset($_POST[\"question\"])) {
  31.             global $odp, $question;
  32.             $count=0;
  33.             do {
  34.                 $query = &#092;"INSERT INTO sondy VALUES(NULL, '$odp[$count]', '$question', curdate())\";
  35.                 $wynik = mysql_query($query);
  36.                 if(!$wynik) error_message(sql_error());
  37.                 $ce = count($odp);
  38.                 $count++;
  39.             }while ($ce>$count);
  40.  
  41.         }
  42. ?>

chodzi o to ze wysiwietla tyle pol ile zostanie podane, jednak gdy sie wpisze pytanie oraz odpowiedzi i przycisnie wyslij nie ma nic oprocz pierwotnej zawartosci strony (zadnych bledow, komunikatow sql, nic) i w bazie danych nie ma ani jednego wpisu.


pzdr
DeyV
Powiem tylko jedno - dopuki nie nauczysz się oddzielać kodu php od wyglądu strony, nigdy nie nauszysz się pisać bezpiecznie i wykrywać tego typu błędy.
Po prostu kod jest NIECZYTELNY

I nie mam tu wcale na myśli zmuszania kogokolwiek do używania jakiegoś systemu szblonów. Wystarczy przecież takie proste rozwiązanie, jak np.

  1. <?php
  2.  
  3. function JakasAkcja()
  4. {
  5. //cos tam robimy
  6.  // pobieramy jakieś dane
  7.  $GLOBALS['aWidok'] = array (' jakieś dane' => ..... );
  8. }
  9.  
  10. ?>


  1. <?php
  2. //widok includowany na samym końcu działania skryptu
  3. ?>
  4. html strony
  5.  
  6. <?php
  7. foreach( $GLOBALS['aWidok'] as .... )
  8. {
  9. ?>
  10. znowu html
  11. <?php echo 'jakies dane ' ; ?> 
  12.  
  13. html 
  14. <?php 
  15. }//koniecz foreach 
  16. ?>

i tak dalej, i dalej.
Sposób wydajny, prosty, i całkiem prosty do edycji.
Może nie tak prosty jak większość szablonów (szczególnie dla osoby znającej ich składnię smile.gif ) ale na pewno lepszy, niż to, co prezentuje twój skrypt.
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.