Переменная PHP не будет отображаться в поле ввода формы - PullRequest
0 голосов
/ 26 июня 2019

Я пытаюсь выбрать переменную PHP из базы данных и вставить ее в HTML-форму ввода.Я предполагаю, что мой вопрос заключается в том, как сохранить запрос в переменную, а затем вызвать эту переменную в виде HTML?Кроме того, форма расположена на отдельной странице из файла действий формы.Почему он не определен, если он определен в файле PHP?Желаемый вывод - когда я загружаю html-страницу, значение из базы данных для псевдонима автоматически заполняет это поле формы.

error: Уведомление : Неопределенная переменная: псевдоним в C: \ xampp \ htdocs \ Client-Projects \ Crossfire \ templates \ CoinSubmission.html on line 45

CoinSubmission.html

<form autocomplete="off" action="AdminCoinSub_Code.php" method="POST">
    <p>
        <input type="text" name="Nickname" id="Nickname" value="<?php echo htmlspecialchars($Nickname); ?>" />
    </p>
</form>

AdminCoinSub_Code.php

<?php {
$servername = "localhost";
$username = "root";
$password = "password";
$dbname = "administrator_logins";

try {
    $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
    // set the PDO error mode to exception
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    // prepare sql and bind parameters
    $stmt = $conn->prepare("INSERT INTO coin (ProfileID, Store, Position, 
        Nickname, ContactNumber, MachineCount, CutOffDate, Coins, location, LastSubmission, Rank) 
        VALUES (:ProfileID, :Store,:Position, :Nickname,:ContactNumber,:MachineCount,:CutOffDate, :Coins,:location,:LastSubmission,:Rank)");

    $stmt->bindParam(':ProfileID', $_POST['ProfileID']);
    $stmt->bindParam(':Store', $_POST['Store']);
    $stmt->bindParam(':Position', $_POST['Position']);
    $stmt->bindParam(':Nickname', $_POST['Nickname']);
    $stmt->bindParam(':ContactNumber', $_POST['ContactNumber']);
    $stmt->bindParam(':MachineCount', $_POST['MachineCount']);
    $stmt->bindParam(':CutOffDate', $_POST['CutOffDate']);
    $stmt->bindParam(':Coins', $_POST['Coins']);
    $stmt->bindParam(':location', $_POST['location']);
    $stmt->bindParam(':LastSubmission', $_POST['LastSubmission']);
    $stmt->bindParam(':Rank', $_POST['Rank']);

    $stmt->execute();

      echo "Success";
    }
catch(PDOException $e)
    {
      echo "Error: " . $e->getMessage();
    }
$conn = null;
}

$conn=mysqli_connect($servername,$username,$password,$dbname);
if (mysqli_connect_errno($conn))
{
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
}

$query = "SELECT `Nickname` FROM `adminlogin` WHERE `ProfileID` = ':ProfileID'";
$Nickname = $conn->query($query);  // This is where the query is executed
$fetcher = $Nickname->fetch_assoc();
while($row = mysqli_fetch_array($Nickname))
if (mysqli_num_rows($Nickname) > 0) {
    echo 'User name exists in the table.';
} else {
    echo 'User name does not exist in the table.';
}

?>

Ответы [ 2 ]

1 голос
/ 26 июня 2019

Прежде всего, ваша html-страница должна иметь расширение .php , а не .html , чтобы она могла интерпретировать ваш php-код внутри html-файла, не беспокойтесь это не нарушит HTML.

почему он не определен, если он определен в файле php.

Это потому, что каждый php-скрипт запускается отдельно, если вы не соедините их вместе. Я бы порекомендовал вам прочитать немного больше о том, как работает php.

Чтобы этот пример работал, я бы сделал это так.

CoinSubmission.php

<?php //This goes at the top of the file
 include_once('AdminCoinSub_Code.php') //If they are in the same dir else you will need to set the path properly. 
?>

<form autocomplete="off" action="AdminCoinSub_Code.php" method="POST">
 <p>
  <input type="text" name="Nickname" id="Nickname" value="<?php echo 
   htmlspecialchars($Nickname); ?>">
 </p>
</form>

Включение вверху «вставит» ваш код AdminCoinSub_Code в файл CoinSubmission и будет обрабатывать его как один файл. Таким образом, переменная будет доступна для нее.

Примечание: мое объяснение упрощенно, не совсем так, как оно работает, но должно понять его суть.

Ответ Алаа Морада, если он также действителен, но не забудьте изменить .html на .php

Happy Coding:)

0 голосов
/ 26 июня 2019

Это потому, что $Nickname не будет установлено, если Зарегистрировать глобалы выключено, ведь это нормальная вещь!

Глобальные регистры УСТАРЕЛО с PHP 5.3.0 и УДАЛЕНО с PHP 5.4.0

, поэтому используйте $_POST

<input type="text" name="Nickname" id="Nickname" value="<?php echo htmlspecialchars($_POST['Nickname']); ?>">
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...