Porównywanie zmiennych przez if

0

Cześć

Mam problem.
Pobieram z formularza liczbę i zapisuję jako zmienną.
Następnie wyszukuję w bazie danych rekord odpowiadający pobranej z formularza zmiennej.
Chciałbym następnie porównać pobraną z formularza zmienną z pobranym rekordem i w zależności czy się zgadzają podjąć odpowiednie instrukcje.
Z bazy pobieram: $wynik = mysqli_query($baza,"SELECT * FROM kody WHERE kod = '$kod' ");
Znajduje rekord.
Tworzę zmienne $a i $b zawierające pobraną wartość z formularza i $b zawierającą odszukany w bazie rekord.

Potem próbuję porównać:

if ($a==$b){
    echo 'ok';
}
if ($a!=$b){
    echo 'not ok';
}

Gdy odnajdzie pasujący rekord w bazie, wypisuje mi "ok" i gdy celowo wpiszę w formularzu niepasujący numer, również wypisuje mi "ok".

Co jest nie tak zrobione ?

Łukasz

PS:

kod:

$kod = $_GET["kod"];

$baza=mysqli_connect("localhost","user","pass","kody");

if (mysqli_connect_errno())

{echo "Wystąpił błąd połączenia z bazą";}

$wynik = mysqli_query($baza,"SELECT * FROM kody WHERE kod = '$kod' ");

while($row = mysqli_fetch_array($wynik))

{echo $row['id'] . " " . $row['kod']; echo "<br>"; 

    $a = trim($kod);
    $b = trim($row['kod']);
}
mysqli_close($baza);



if ($a == $b) {
    echo 'ok';
}
else {
    echo 'not ok';
}

0
lukasz_prog napisał(a):
if ($a==$b){
    echo 'ok';
}
if ($a!=$b){
    echo 'not ok';
}

Pierwsza rzecz, użyj else

if ($a == $b) {
    echo 'ok';
}
else {
    echo 'not ok';
}

Co do samego pytania:

lukasz_prog napisał(a):

Gdy odnajdzie pasujący rekord w bazie, wypisuje mi "ok" i gdy celowo wpiszę w formularzu niepasujący numer, również wypisuje mi "ok".

Nie da rady stwierdzić, jak nie pokażesz całego kodu.

0

Zastosowałem z else.
W dalszym ciągu pokazuje jedynie "ok".
Jeśli to ma znaczenie, to przed wywołaniem if, wrzucam zmienne do funkcji trim:
$a = trim($kod);
$b = trim($row['kod']);

Co jeszcze może być źle ?

0

A czemu nie użyjesz do tego SQL i nie dasz warunków dodatkowych poza samym id/kodem?
Wtedy wystarczy sprawdzić czy ilość zwróconych wierszy przez zapytanie SQL jest większa od zera.
Poza tym staraj się używać potrójnego porównania np. === bo możesz mieć nie przewidziane zachowania przy automatycznym porównaniu różnych typów.

0

Przed ifem zrób var_dump obu zamiennych to pewnie zobaczysz co jest nie tak.
W pętli na pewno nadpisujesz sobie wartości i porownwujesz tylko ostatnie przypisanie z tego while($row)

0

Po pobraniu numeru z bazy, zastosowałem:

$ilosc_wierszy = mysqli_num_rows($wynik);

i teraz:

    echo 'ok';
}
else {
    echo 'not ok';
}

działa !

1 użytkowników online, w tym zalogowanych: 0, gości: 1