Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Button z formularza nie jest obsługiwany przez php
Forum PHP.pl > Forum > Przedszkole
jerry100
Mam prośbę o wskazanie błędu w skrypcie bądź sugestię zmiany.
Naciśnięcie buttona nie powoduje wykonania kodu zawartego pomiędzy klamrami.
Sprawdziłem obecność sesji oraz odczyt zmiennej $nie_chk1 i obie te zmienne są prawidłowo odczytywane.
Wciśnięcie buttona nie powoduje wykonania warunku if. Świadczy o tym również fakt, że komunikaty tekstowe które występują między klamrami nie są wyświetlane. (nie zamieszczam kodu z klamr, żeby nie zaśmiecać miejsca).
Jeżeli pominę kwestię buttona, czyli pozostawiam same instrukcje znajdujące się w klamrach, kod działa prawidłowo.

  1. <a align="right"><form id="form2" name="form2" method="get"><input type="submit" style="color:#FFFFFF; background-color:#9D080D;" id="button_2" name="button_2" value=" NIE " /></form></a>
  2. <?php
  3. if(isset($_GET['button_2']) && $_SESSION['zalogowany']==1 && $nie_chk1==0)
  4. {
  5. ?
  6. }
  7. elseif (isset($_GET['button_2']) && @$_SESSION['zalogowany']==1 && $nie_chk1!=0){
  8. ?
  9. }
  10. ?>
Fifi209
A masz tam session_start ? Skąd się bierze: $nie_chk1 ?

Urywki kodu, skąd mamy wiedzieć?
wookieb
Czekam na pw z propozycją poprawnej nazwy tematu.

Dodatkowo proszę wstawić bbcode.
Przenoszę do przedszkola
jerry100
Może kilka słow wyjasnienia aby było łatwiej zrozumieć sens.

Kod odpowiedzialny jest za oddanie głosu na człowieka który wyświetla się w jakimś miejscu strony.
Każdy człowiek ma w "bazie" danych swój numer, który jest w kodzie umieszczany w zmiennej q.
Oddanie głosu poprzez wciśnięcie buttona ma za zadanie dopisać 1 głos do tabeli "baza" w rekordzie człowieka o nr q, w polu "nie".
Na początku kodu ustawione jest wywołanie sesji, które przekazuje login użytkownika.
Ograniczeniem kodu ma być możliwość oddania jednego głosu przez jednego użytkownika.
Wciśnięcie buttona nie przenosi nas do żadnej strony. Przechodzi jedynie do pętli if gdzie następuje sprawdzenie czy ten login oddał już głos (dzięki zmiennej $nie_chk1) i następnie wykonuje stosowne wpisy do bazy, bądź wyświetla komunikaty.

Może teraz będzie Ci łatwiej coś zasugerować. To co widzisz to kompletny kod.
Pozdrawiam
Jarek

Kod
<?php
session_start();
?>

<?php
include('db_fns.php');
$glos=$q;
$nie_check1=mysql_query("SELECT * FROM glos_nie WHERE ip='".$glos."' AND login='".$_SESSION['login']."'");
$nie_chk1=mysql_num_rows($nie_check1);
echo "$nie_chk1";
echo "'".$_SESSION['login']."'";
echo ".$glos.";
?>

<a align="right"><form id="form2" name="form2" method="get"><input type="submit" style="color:#FFFFFF; background-color:#9D080D;" id="button_2" name="button_2" value=" NIE " /></form></a>
<?php
if(isset($_GET['button_2']) && $_SESSION['zalogowany']==1 && $nie_chk1==0)
{
$mod_nie=mysql_query("UPDATE baza SET `nie`=`nie`+1 WHERE id='".$glos."';");
$ip_nie=mysql_query("INSERT INTO glos_nie VALUES('".$glos."','".$_SESSION['login']."')");
echo "Głos został oddany";
}
elseif(isset($_GET['button_2']) && $_SESSION['zalogowany']==1 && $nie_chk1!=0){
echo "Oddano już głos na tę osobę";
}
elseif(isset($_GET['button_2']) && !isset($_SESSON['zalogowany'])){

echo "Nie jesteś zalogowany. Aby zagłosować<br>zaloguj się";
}
mysql_close();
?>

wookieb
Ostatni raz proszę o wstawienie bbcode.
jerry100
No właśnie nadal nie bardzo to rozumiem.
Spróbowałem wyrzucić z kodu cału fragment dotyczący buttona oraz pierwszy element pętli if - czyli
Kod
isset($_GET['button_2']

i kod działa poprawnie. Dobija do bazy głos po uruchomieniu skryptu.
Natomiast kiedy pojawia się button i jego warunek w if kod nie działa.
jerry100
Fifi przecież mysql_num_rows() zwraca liczbę wierszy w wyniku i ta liczba przypisana jest zmiennej $nie_chk1.
Właśnie dlatego jest ten zapis, aby sprawdzał w tabeli czy już istnieje wpis (tj. czy zalogowany użytkownik oddał głos na człowieka o numerze q).

Ponieważ jednak uczymy się całe życie, usunąłem z if warunek sprawdzenia wpisu $nie_chk1. Niestety nadal kod nie pracuje poprawnie.
Tak więc kłopot musi tkwić w innym miejscu.
Fifi209
Cytat(jerry100 @ 17.07.2011, 09:57:16 ) *
Fifi przecież mysql_num_rows() zwraca liczbę wierszy w wyniku i ta liczba przypisana jest zmiennej $nie_chk1.

Koniec picia wieczorami. biggrin.gif Co do liczby rekordów znacznie lepiej używać count po stronie bazy.
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.