@dimavfox

Как вывести переменную из if?

session_start();

	$db = mysqli_connect('localhost', 'root', '', 'register');
	

	$name = $_SESSION['name'];
	$password = $_SESSION['password'];


	
	$select = $_POST['his-wal'];
	$con = mysqli_query($db, "SELECT * FROM users WHERE name='$name' ");
	$row = mysqli_fetch_array($con);
	$get_btc = $row['btc'];
	$get_eth = $row['eth'];
	$get_bch = $row['bch'];

	if(isset($_POST['transfer_to'])){
		
		$amount = $_POST['history-amount'];
		$amount_com = $_POST['history-comission'];
		$addres = $_POST['history-address'];
		

		if($select == 1)
		{
			$dif = $get_btc - $amount_com;
		}
		elseif ($select == 2) 
		{
			echo $get_eth;
		}
		elseif($select == 3)
		{
			echo $get_bch;
		}
		
	}

<input type="text" id="history-address" class="form-control fields-item" name="history-address" value="<?php echo $dif; ?>" style="text-align: left;">


При таком выводе пишет: Notice: Undefined variable: dif in D:\xampp\htdocs\chartrade\www\transfer.php
Я понимаю что эта переменная видна только в if. Как ее вывести?
  • Вопрос задан
  • 643 просмотра
Пригласить эксперта
Ответы на вопрос 3
ThunderCat
@ThunderCat Куратор тега PHP
{PHP, MySql, HTML, JS, CSS} developer
Я понимаю что эта переменная видна только в if. Как ее вывести?

Дело не в том что она "видна" в иф, дело в том что если иф не выполняется, то эта переменная вообще не будет существовать, соответственно вывод ее ниже выдаст варнинг - нет переменной. Вариантов 2:
1) более правильно все используемые переменные определять перед исполнением скриптов(как советует Михаил Братеньков). Нормальные редакторы(пхпсторм например) такие куски кода определяет сразу.
2) Более кривое решение - в месте использования переменной для вывода проверять ее существование(более менее правильный вариант), или "засобачить" переменную(<?php echo @$dif; ?> - совсем кривой подход), такой подход оправдан только в ограниченном ряде случаев, например если много переменных могут быть не определены и код нужно рефакторить, но некогда.
Ответ написан
У вас переменная dif объявлена в скоупе if. Объявите её в самом начале
$dif = 0;
Ответ написан
@alex994
Начинающий Web разработчик php
Могу ошибаться, но можно попробовать return;
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы