SamPowers Ответов: 1

Почему это ввод пустых строк в базу данных?


tester.php (форма)
<html>
<head>
</head>
<body>
 <?php

if(isset($_POST['search']))
{
    $valueToSearch = $_POST['valueToSearch'];
    // search in all table columns
    // using concat mysql function
    $query = "SELECT * FROM `students` WHERE CONCAT(`FName`, `LName`) LIKE '%".$valueToSearch."%'";
    $search_result = filterTable($query);
    
}
 else {
    $query = "SELECT * FROM `students`";
    $search_result = filterTable($query);
}

// function to connect and execute the query
function filterTable($query)
{
    $connect = mysqli_connect("localhost", "root", "Summer$2000", "attendence");
    $filter_Result = mysqli_query($connect, $query);
    return $filter_Result;
}

?>
	<table border="1" align="center">
		<tr>
			<th>First Name</th>
			<th>Last Name</th>
			<th>Mark</th>
		</tr>
		<?php while($row = mysqli_fetch_array($search_result)):?>
		<tr>
			<td><?php echo $row['FName'];?></td>
			<td><?php echo $row['LName'];?></td>
			<td>
			<form action="submit.php">
				<table >
					<tr>
						<td>
							<input type="submit" value="Present">
						</td>
						<td>
							<input type="submit" value="Absent">
						</td>
						<td>
							<input type="submit" value="Tardy">
						</td>
					</tr>
				</table>
			</form>
			</td>
		</tr>
		<?php endwhile;?>
	</table>
</body>
</html>


submit.php
<?php
/*
Attempt MySQL server connection. Assuming you are running MySQL
server with default setting (user 'root' with no password)
*/
$link = mysqli_connect("localhost", "root", "Summer$2000", "attendence");
 
// Check connection
if($link === false){
    die("ERROR: Could not connect. " . mysqli_connect_error());
}
 
// Escape user inputs for security
$FName = mysqli_real_escape_string($link, $_POST['FName']);
$LName = mysqli_real_escape_string($link, $_POST['LName']);
$Mark = mysqli_real_escape_string($link, $_POST['Mark']);
 
// attempt insert query execution
$sql = "INSERT INTO attendence (FName,LName,Mark) VALUES ('$FName','$LName','$Mark')";


if(mysqli_query($link, $sql)){
    echo "Records added successfully.";
} else{
    echo "ERROR: Could not take attendence " . mysqli_error($link);
}
 
// close connection
mysqli_close($link);
?>


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

Я переписал сценарий пару раз, чтобы просмотреть синтаксис, и уже задал вопрос о stackoverflow без ответов в течение недели.

Sinisa Hajnal

Вы проверили, что ваши переменные действительно содержат значения? Кажется, что некоторые из ваших одинарных кавычек перевернуты (возможно, это просто артефакт разбора текста доски, но проверьте свой код).

1 Ответов

Рейтинг:
0

FrankNight

Привет,

Я понимаю, что вы хотите отметить человека "присутствующим, отсутствующим или опоздавшим".
Ваш поиск может выдать более одного результата, и с помощью этих 3 кнопок вы хотите выбрать значение для соответствующего человека. верно?

Если это так, то этот код никогда не будет работать по многим причинам.

Во-первых, тег формы не содержит никакого значения для отправки.
значение, которое вы ожидаете в submit.php

$_POST['FName']

никогда не прибывает на сервер, пока вы не поставите в форму что-то вроде
<input type="text" name="Fname" value="some value"></input>


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

удачи.
Ф.