2013-12-10 3 views
0

У меня есть код, который запрашивает базу данных SQL и отображает всех пользователей в таблице, что все работает нормально, оттуда вы можете щелкнуть любого пользователя и отобразить другую таблицу который содержит всю их информацию, которая также отлично работает.Как поместить переменную php в HTML-форму

Проблема, с которой я столкнулся, находится на странице, отображающей таблицу выбранной информации о пользователях. На этой странице у меня есть кнопка, которая позволяет редактировать информацию пользователя и обновлять БД.

Вот код для кнопки:

print "<form method='post' action='adminedituser.php'> 
<input type='hidden' name='id' value='$id' /> 
<input type='submit' value='Click here to edit this user' /> 
</form>"; 

Когда я нажимаю это он принимает меня к странице с полем ввода, который необходимо отобразить текущее имя пользователя и позволяют пользователю ввести в новом значении и представить.

Я пытаюсь вызвать переменную PHP внутри формы HTML у меня есть:

<?php 

$id = filter_input(INPUT_POST, "id"); 
//Make db connection 
$conn=mysql_connect("localhost","root","")or die(mysql_error()); 

//Step 2: select your db to use 
mysql_select_db("final",$conn); 

//Step 3: Write the sql that we want to run against the database 
$result = mysql_query("select id, firstname, lastname, email, phone, username, password, favchar, bio from user where id=$id"); 

$username = $result["username"]; 

?> 


<form method='post' id='myForm' name='input' action='adduser.php'> 
Username: <input type='text' value="<?php echo ($username); ?>" id='uName' name='uName'> 
<input type='submit'> 
</form> 

Проблема заключается в том, что переменная $ имя пользователя не отображается в качестве значения текстового поля.

Что я делаю неправильно?

+0

Добавьте следующее в конец вашего mysql_query: или умереть (mysql_error()). Расскажите нам, что возвращается, если угодно. – smcjones

ответ

0

Форма код shuld быть изменен на:

<input type='hidden' name='id' value='<?= $id ?>' /> 

Вы забыли значение $ ID "печать".

и код adminedituser.php:

$id = filter_input(INPUT_POST, "id"); 

Получить "ID" поле из запроса POST из формы.

+0

Нет кубиков, я не могу получить значение для отображения в форме myForm. – user3038431

+0

Это не тянет скрытое значение $ id с предыдущей страницы. – user3038431

3

Во-первых, если я не говорю, что это кто-то другой: используйте mysqli вместо mysql. Вы все равно можете использовать процедурный стиль, если хотите (хотя я могу сказать из первых рук, что очень просто изучить стиль объекта), вам просто нужно сделать быструю кисть на mysqli. Mysql устарел, поэтому его бесполезно использовать. В конце концов вам придется это узнать, поэтому, когда вы создаете новую программу, это может быть проще всего.

Переходя к тому, что вы делаете неправильно, это то, что вы на самом деле ничего не набрали. MySQL предоставит вам объект, а затем вам нужно отсортировать строки.

Итак, что вам нужно сделать, это тянуть mysql_fetch_array.

Вы можете сделать это так:

while($row = mysql_fetch_array($result)) { 
    $username = $row["username"]; 
} 
+0

Чтобы использовать «имя пользователя» в качестве индекса, вам не нужно выбирать как ассоциативный массив, как в 'mysqli_fetch_array ($ result, MYSQLI_ASSOC)'? – mseifert

+1

Технически, нет. 'mysql_fetch_array' возвращает одновременно числовые и ассоциативные ключи. Но, ради чистого кода, я предпочитаю 'mysql_fetch_assoc', который возвращает только ассоциативный массив – Machavity

+0

Я также думаю, что mysql_fetch_row очень удобен, когда вы извлекаете только один результат. Или mysql_fetch_object, если вам нравится стиль объекта. Возможности безграничны! – smcjones

Смежные вопросы