• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

if sie wykonuje mimo ze warunek jest falszywy. Mysql i PHP

Object Storage Arubacloud
–1 głos
432 wizyt
pytanie zadane 15 lutego 2016 w Inne języki przez gab123 Mądrala (5,230 p.)

Chodzi mi o to ze w ifach mam rozne zapytania mysql-insert i update. Które się nie wykonują mimo ze kod wykonuje wszystkie tak jakby wszystko było ok. Z zapytaniami wszystko jest ok bo sprawdzałam w PHPmyadmin, ze zmiennymi chyba tez po za tym nie pokazuja się żadne bledy. Pomozecie ?

<?php 

session_start() ;

if(!isset($_SESSION['login'])){
	header('Location:index.php') ;
}
if(!isset($_SESSION['idkursu'])){
	header('Location:profil.php') ;
	exit() ;
}
require_once "connect.php" ;
$polaczenie = @new mysqli($host, $db_user, $db_password, $db_name) ;

if($polaczenie->connect_errno == 0 ) {
//sprawdzamy czy osoba ma wystarczajaco pieniedzy 
$login = $_SESSION['login'] ;
if($r1 = $polaczenie->query("SELECT pieniadze FROM uzytkownicy WHERE login = '$login'")) {
$zmienne1 = $r1->fetch_assoc() ;

$idkursu = $_SESSION['idkursu'] ;
if($r2 = $polaczenie->query("SELECT koszt,logintworcy FROM kursy WHERE id = '$idkursu'"))
$zmienne2 = $r2->fetch_assoc() ;
$logintworcy = $zmienne2['logintworcy'] ;

if($zmienne1['pieniadze'] >=$zmienne2['koszt'] ) {
		
	$koszt = $zmienne2['koszt'] ;
	
	if($polaczenie->query("UPDATE uzytkownicy SET pieniadze = pieniadze - '$koszt' WHERE  login = '$login'")){
	
	$polaczenie->query("UPDATE uzytkownicy SET pieniadze = pieniadze + '$koszt' WHERE  login = '$logintworcy'");
	
	if($polaczenie->query("INSERT INTO zapisykurs (loginUzyt, idkursu) VALUES('$login','$idkursu')")) {
		header('Location:ogldKurs.php');
		exit();
	}else echo "Blad";
	}

}
else 
	echo "Sory ale masz za malo kasy.. " ;
}

}

else 
	echo "Blad polaczenia z serwerem " ;
?>

Wpisywalam elsy po każdym tutaj je usunelam by caly kod się zmiescil.

Pozdrawiam.

1 odpowiedź

+1 głos
odpowiedź 15 lutego 2016 przez Piotr Karasiński Mądrala (6,360 p.)
Masz zły operator porównania.

masz " if($r1 = $polaczenie->query("SELECT pieniadze FROM uzytkownicy WHERE login = '$login'")) {"

co zawsze zwróci true - ponieważ nie sprawdzasz a przypisujesz coś do zmienniej $r1

operator porównania to ==

powinieneś najpierw (przed if) przypisać wynik zapytania do zmiennej a potem sprawdzić czy coś w niej jest.
komentarz 15 lutego 2016 przez gab123 Mądrala (5,230 p.)
Ale jest dobry ja przypisuj do zmiennej r1 wynik zapytania i sprawdzam czy operacja się udala. Robilam tak wiele razy.
komentarz 15 lutego 2016 przez writen Nałogowiec (29,060 p.)
Zapytanie się wykona, bo czemu miałoby się nie wykonać? Musisz jeszcze sprawdzić czy zwróciło jakieś wyniki, bo chyba o to ci chodzi.
komentarz 15 lutego 2016 przez gab123 Mądrala (5,230 p.)
Tak chodzi mi o te 2 ostatnie i o to ze if przeszedł mimo ze w phpmyadmin wszystko caly czas wygląda tak samo.
komentarz 15 lutego 2016 przez Piotr Karasiński Mądrala (6,360 p.)

Spróbuj insert wywołać tak:

if ($conn->query($sql) === TRUE) {
    echo "New record created successfully";
} else {
    echo "Error: " . $sql . "<br>" . $conn->error;
}

Tak jak to jest opisane w http://www.w3schools.com/php/php_mysql_insert.asp

Wydaje mi się że insert coś zwraca a if to coś co nie jest false ani null traktuje jako true

komentarz 15 lutego 2016 przez efiku Szeryf (75,160 p.)
Linkuj do manuala, a nie do durnego w3schools. Nie tolerujemy tu tej strony.

Podobne pytania

0 głosów
1 odpowiedź 301 wizyt
pytanie zadane 27 lipca 2017 w PHP przez Adam Ostrogórski Obywatel (1,070 p.)
+1 głos
2 odpowiedzi 238 wizyt
pytanie zadane 26 lutego 2016 w PHP przez dxq31 Początkujący (290 p.)
–1 głos
1 odpowiedź 236 wizyt
pytanie zadane 27 sierpnia 2016 w PHP przez EasyPeasy Użytkownik (550 p.)

92,620 zapytań

141,471 odpowiedzi

319,803 komentarzy

62,003 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...