У меня есть код if
используемый в моем коде, но логика кода не работает так, как хотелось бы, так это то, что когда пользователь вводит название города без ввода названия района, система должна отображать сообщение об ошибке
и когда пользователь вводит название города и название района, не входя в lat и долго, система должна отображать сообщение об ошибке.
то, что он имеет в моем коде, заключается в том, что даже если пользователь входит в город и долгое время система выводит сообщение об ошибке, сообщите пользователю, чтобы ввести lat и long
if($_POST['city']) { $city = $_POST['city']; $lat = $_POST['lat']; $long = $_POST['long']; if($_POST['dist'] =="") { $errorMSG = "you can not add city without having relation with district"; } if($lat || $long ==""){ $errorMSG = "You can not add village Without its coordination";} else { $sql = mysql_query("INSERT INTO village (id, village_name, district_id, lattitude, longitude)VALUES('', '$city', , '$lat', '$long')")or die(mysql_error()); echo $city; } }
if($lat || $long =="")
должно быть, if($lat=="" || $long =="")
Измените это: –
if($lat || $long =="")
в
if($lat =="" || $long =="")
Объяснение: –
То, что вы делали, – это проверка того, что $ lat не пуст или $ long пуст. Узнайте о приоритете операторов. == имеют более высокий приоритет, чем ||
Ваш код уязвим для SQL-инъекции.
И в этом есть некоторые логические ошибки.
Правильный код с использованием PDO будет
if($_POST['city']) { $errorMSG = ''; $city = $_POST['city']; $lat = $_POST['lat']; $long = $_POST['long']; $dist = $_POST['dist'] if(!$dist) { $errorMSG .= "you can not add city without having relation with district"; } if(!$lat || !$long) { $errorMSG .= "You can not add village Without its coordination"; } if (!$errorMSG) { $sql = "INSERT INTO village VALUES(NULL, ?, ?, ?, ?)"; $pdo->prepare($sql); $pdo->execute(array($city,$dist,$lat,$long)); } }