Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]dodawanie głosów
Forum PHP.pl > Forum > Przedszkole
malaAga
Witam,
mam problem z dodawaniem głosów do bazy tzn dodaje mi głos ale zawsze do ostatniego pytania. Pomoże ktoś?

  1. if(isset($_POST["submit"]))
  2. {
  3. $id_user= $_SESSION['logged'];
  4. $glos=$_POST["glos"];
  5. $pytt=$_SESSION['licznik'];
  6.  
  7. $add= mysql_query("INSERT INTO odpowiedzi SET id_user='$id_user', glos='$glos', id_pyt='$pytt'") or die('Błąd1');
  8.  
  9. }else
  10. {
  11. $referendum=mysql_query("SELECT * FROM referendum WHERE data_end >= current_date AND data_begin <= current_date " ) or die('Błąd zapytania1');
  12.  
  13. if (mysql_num_rows($referendum) > 0)
  14. {
  15. $ref = mysql_fetch_assoc($referendum) ;
  16. $id_ref =$ref['id_ref'];
  17.  
  18. echo "
  19. <strong>".$ref['tytul']."</strong>
  20. <br ><p>Ważne od: ".$ref['data_begin']. " do: ".$ref['data_end']."</p>";
  21. // echo "$id_ref";
  22.  
  23. }
  24.  
  25. $pytania=mysql_query("SELECT * FROM pytania WHERE id_ref = $id_ref" ) or die('Błąd zapytania2');
  26.  
  27. if (mysql_num_rows($pytania) > 0)
  28. {
  29. while($pyt = mysql_fetch_array($pytania))
  30. {
  31. echo "
  32. <form action='#' method='POST'>
  33. <fieldset>
  34. <legend>" .$pyt['pytanie']." id " .$pyt['id_pyt']."</legend>";
  35. $_SESSION['licznik'] = $pyt['id_pyt'];
  36.  
  37. ?>
  38. <input type='radio' name='glos' <?php if (isset($glos) && $glos=='tak') echo 'tak' ?> value='tak'>tak
  39. <input type='radio' name='glos' <?php if (isset($glos) && $glos=='nie') echo 'checked'?> value='nie'>nie
  40. <br><input type='submit' name='submit' class='buton' value='Głosuj'/>
  41. </fieldset>
  42. </form>
  43. <?php }
  44. }
  45. }

nospor
Wszytkim RADIO nadajesz to samo NAME wiec nie oczekuj, ze formularz wysle ci to rozroznione.
Kazda grupa RADIO ma miec swoje wlasne NAME
malaAga
radio działa prawidłowo zapisuje sie tak lub nie w zależności co kliknę chodzi o to że w bazie zawsze zapisuje mi się odpowiedz w jednym pytaniu w moim przypadku o id równym 5 Dodaj screen
kapslokk
Dlatego, że po wykonaniu pętli masz do $_SESSION['licznik'] przypisane id 5 i nie ważne który formularz wysyłasz, zawsze zapisuje się id 5. Musisz przerobić kod tak, aby wraz z odpowiedzią na pytanie przesylać informację na które pytanie udzielasz odpowiedzi.
malaAga
może jakaś podpowiedź bo nie mam pojecia jak to zrobić
kapslokk
Na przykład:
  1. <input type='radio' name='glos[<?= $pyt['id_pyt'] ?>]' <?php if (isset($glos) && $glos=='tak') echo 'tak' ?> value='tak'>tak
  2. <input type='radio' name='glos[<?= $pyt['id_pyt'] ?>]' <?php if (isset($glos) && $glos=='nie') echo 'checked'?> value='nie'>nie


Wtedy $_POST['glos'] jest tablicą w której klucz to ID pytania a wartość to odpowiedz na nie. Możesz wtedy wszystkie radio wrzucic do jednego formularza.

Możesz też dodac
  1. <input type="hidden" name="id_pytania" value="<?= $pyt['id_pyt'] ?>">

i wtedy zamiast:
$pytt=$_SESSION['licznik'];
robisz:
$pytt=$_POST['id_pytania'];
malaAga
ten sposób z ukrytym inputem działa. Dzieki kapslokk smile.gif
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.