2015-11-03 3 views
-1

Это первое поле, в котором веб-посетитель войдет в submit «имя карты» и будет перенаправлен на другую страницу (dashboard2.php), где появится только его или ее контент.Получение пользовательских данных на основе их информации

Enter your cardname to access your content<br> 
<form action='dashboard2.php'> 
<input type='text' name='cardname'/><input type='submit' value='retrieve card'/> 
</form> 
</body> 

Следующая страница представляет собой страницу, которая направлена ​​после ввода пользователем «cardname» из первого поля ввода. Тем не менее, я хочу, чтобы эта вторая страница отображала информацию, основанную на введенном имени карты. Прямо сейчас, он показывает каждое имя карты, вопрос, ответ из этой таблицы.

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

// Create connection 
$conn = new mysqli($servername, $username, $password, $dbname); 
// Check connection 
if ($conn->connect_error) { 
    die("Connection failed: " . $conn->connect_error); 
} 

$sql = "SELECT cardname, questionone, answerone FROM cards"; 
$result = $conn->query($sql); 

if ($result->num_rows > 0) { 
    // output data of each row 
    while($row = $result->fetch_assoc()) { 
     echo "<br> ". $row["cardname"]. " ". $row["questionone"]. " " . $row["answerone"] . "<br>"; 
    } 
} else { 
    echo "0 results"; 
} 

$conn->close(); 

?> 
+0

Как @JayBlanchard сказал и добавить 'метод = «пост» 'к вашей форме тега –

+0

А теперь, когда вы будете принимать $ _POST и использовать его в вашем SQL-запросе, я бы рекомендовал использовать подготовленные операторы. –

+1

Вы ничего не делаете с вашей формой. –

ответ

-1

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

Я положил это вместе немного быстро, но мы надеемся, что это помогает ...

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

// Create connection 
$conn = new mysqli($servername, $username, $password, $dbname); 

// escape the string to avoid SQL injections 
$searchEscaped = $conn->real_escape_string($_POST['cardname']); 

// Check connection 
if ($conn->connect_error) { 
    die("Connection failed: " . $conn->connect_error); 
} 

$sql = "SELECT cardname, questionone, answerone FROM cards WHERE cardname = '$searchEscaped' "; 
$result = $conn->query($sql); 

if ($result->num_rows > 0) { 

    if($result->num_rows == 1){ 
     // only one result found, show just that 
     $row = $result->fetch_assoc() 
     echo "<br> ". $row["cardname"]. " ". $row["questionone"]. " " . $row["answerone"] . "<br>"; 
    }else{ 
     // multiple rows found, show them all 
     while($row = $result->fetch_assoc()) { 
      echo "<br> ". $row["cardname"]. " ". $row["questionone"]. " " . $row["answerone"] . "<br>"; 
     } 
    } 

} else { 
    echo "0 results"; 
} 

$conn->close(); 

?> 
+0

Хороший ответ, но нет смысла делать 'if ($ result-> num_rows> 0) { if ($ result-> num_rows == 1) {' - Одного хватит. –

+0

здесь есть синтаксическая ошибка: $ row = $ result-> fetch_assoc() '. либо отсутствующую полуточку, либо цикл while. –

+0

fred -ii- это semi-colon сделал очарование! Спасибо. – atokad5

2

Вы должны изменить запрос, чтобы принять предложение WHERE. Например, WHERE cardname = mysqli_real_escape_string($conn, $_GET['cardname']) (Метод по умолчанию для любой формы - GET, если вы не указали method="post".).

Вы должны узнать о заявлениях prepared для MySQLi и, возможно, рассмотреть возможность использования PDO, it's really not hard.

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