Jawanaut Ответов: 1

Показать данные на основе отправки формы


У меня есть база данных mySQL и страница формы на php. Мне нужен лучший способ извлечения данных из базы данных на основе пользовательского ввода в форму. Теперь форма ограничит ввод пользователя целым числом, которое ему будет дано перед рукой. Целое число будет находиться в базе данных в виде числа автоматического приращения, которое будет называться "rep ID". Пользователь введет "идентификатор представителя", чтобы отобразить информацию об этом представителе.

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

Представленный код-это только последнее, что я пробовал. Однако это не сработало, как несколько раньше. Любые предложения будут очень оценены, и мне просто очень нужно направление, чтобы двигаться дальше. Я совершенно запутался в том, что, как мне казалось, будет относительно легко, и все больше расстраиваюсь. Заранее спасибо.

Что я уже пробовал:

<?php 
 $host = 'myhost';
 $user = 'myuser';
 $pass = 'mypassword';
 $db = 'mydatabase';

	$con = mysqli_connect("$host", "$username", "$password") or die("Error connecting to database: ".mysqli_error());
	mysqli_select_db($con, "$db") or die(mysqli_error());

    $query = $_GET['query']; 

	$sql = "SELECT * FROM 'repData' WHERE 'repID' = $query";
	$result = $con->query($sql);

	if ($result->num_rows > 0) {
		echo "";

		while($row = $result->fetch_assoc()) {
			echo "";
		}
		echo "<table><tbody><tr><th>ID</th><th>Name</th></tr><tr><td>".$row["repID"]."</td><td>".$row["repName"]." ".$row["repBio"]."</td></tr></tbody></table>";
	} else {
		echo "<br><h1 align="center">Sorry that ID could not be found in our database.<br>
		Verify the number and try again.</h1>";
	}

	$con->close();
	?>

W∴ Balboos, GHB

Вот вам подсказка:

 $array = mysqli_fetch_row ($result); 


Что такое $result?

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

1 Ответов

Рейтинг:
8

Jochen Arndt

Для версии 2 вопроса:

while($row = $result->fetch_assoc()) {
    echo "";
}
echo "<table><tbody><tr><th>ID</th><th>Name</th></tr><tr><td>".$row["repID"]."</td><td>".$row["repName"]." ".$row["repBio"]."</td></tr></tbody></table>";

Сначала распечатайте заголовок таблицы, затем содержимое строки в цикле while и, наконец, закрывающие теги таблицы:
echo "<table><tbody><tr><th>ID</th><th>Name</th></tr>";
while($row = $result->fetch_assoc()) {
    echo "<tr><td>".$row["repID"]."</td><td>".$row["repName"]." ".$row["repBio"]."</td></tr>";
}
echo "</tbody></table>";

Поскольку вы фильтруете для одного идентификатора, печать заголовков вне цикла while здесь на самом деле не требуется. Но вы должны получить доступ $row внутри цикла, потому что он находится вне области действия при использовании его после цикла while. Даже когда $row объявляется вне цикла если не будет работать потому что это так NULL когда цикл завершится.


Jawanaut

Это действительно имеет смысл для отображения содержимого строки в цикле. Не знаю, почему я об этом не подумал. Тем не менее, я все еще вытаскиваю свой оператор "else" (Извините, что ID...) при выполнении запроса. Это странно, в основном потому, что в базе данных есть только один идентификатор (на данный момент).

Jochen Arndt

Затем попробуйте протестировать запрос
SELECT * FROM 'repData'

Вы также можете дифференцировать между !$result (запрос не удался) и $result->num_rows == 0 (соответствующие наборы записей не найдены).

Jawanaut

Потрясающе!!! Вы молодцы! Это работает, и мой месяц борьбы закончился. Спасибо за помощь!