Итак, у меня есть базовый сайт PHP, который выводит список продавцов с сервера MySQL, когда отправляется выбор из выпадающего списка. Я настроил кнопку, которая будет отображаться рядом с каждым результатом, и я хочу, чтобы скрипт php запускался при нажатии кнопки с использованием данных MySQL из этого конкретного результата. Все работает, кроме кнопки, которая запускает второй запрос MySQL. Вот пример таблицы после первого запроса:
<table border="1">
<tr>
<td>Last name</td>
<td>First Name</td>
<td>Job Title</td>
<td>City</td>
<td>Client List</td>
</tr>
<tr>
<td>Bondur</td>
<td>Gerard</td>
<td>Sale Manager (EMEA)</td>
<td>Paris</td>
<td>
<form method="POST" action="empLookup.php">
<input type="submit" name="empLookup" value="Look up clients"</td>
</tr>
</table>
Нажав на кнопку, я запустил бы команду MySQL, например «ВЫБРАТЬ клиентов ИЗ БЛАГДА ГДЕ employeeNumber =?»
У меня нет проблем с этим, за исключением передачи значения из кнопки в скрипт PHP.
Вот как выглядит мой PHP-код для обработки отправки формы и отображения результатов. Соответствующие кнопки находятся в таблице HTML в цикле foreach.
<?php #this is the default php file for looking up Employees
$page_title = 'Our Associates by City';
require ('./pdoConn.php');
$sql = "SELECT DISTINCT city from Offices";
echo '<h1>Our Associates by City</h1>';
Type in a Name to view Years</a><br>';
//create the form
echo 'Please select a year: <br>';
echo '<form action="index.php" method="post">';
echo '<select name= "city">';
foreach($conn->query($sql) as $row)
{
//each option in the drop down menu is each and every year
//brought up by the query
echo '<option value ="'. $row['city'].' ">'. $row['city']. '</option>';
} //end of foreach
echo '</select>'; //end drop down menu
//now to create the submit button
echo '<br><input type="submit" name="submit" value="List"><br>';
echo '</form>'; //end of form
//This if statement runs when the submit button is clicked
if ($_SERVER[REQUEST_METHOD] == 'POST')
{
$flit = $_POST[city]; //the city variable from the HTML form will be used
echo '<br><br>';
$sql2 = "SELECT employeeNumber,lastName,firstName,jobTitle,city
FROM Employees,Offices
WHERE Employees.officeCode = Offices.officeCode AND city = ?";
$stmt = $conn->prepare($sql2);
$stmt->execute(array($flit));
$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
echo 'Contact any of our local staff: <br>';
//create a table of employees
echo '<table border="1"><tr><td>Last name</td><td>First Name</td>';
echo '<td>Job Title</td><td>City</td></tr>';
//time to populate the table, this loop runs for each entry
foreach($rows as $r)
{
echo '<tr><td>'.$r[lastName].'</td><td>'.$r[firstName].'</td><td>';
echo $r[jobTitle].'</td><td>'.$r[city].'</td><td>';
echo '<form method="POST" action="empLookup.php">';
//now to make the button which will search the employee's client list
echo '<input type="submit" name="empLookup" value="Look up clients"</td></tr>';
} //end foreach
echo '</table>';
} //end if server request post thing
?>
Я не совсем понял ваше точное требование, но я думаю, что вы хотите ввести номер сотрудника в свою кнопку, если это ваше требование, то вы можете просто проверить этот код
`echo '<input type="submit" name="empLookup" value="'.$r['emp_id_from_database'].'"</td></tr>';`
Из вашего HTML-кода ваша форма выглядит пустой.
Вам необходимо добавить данные в вашу HTML-форму. Если вы хотите, чтобы пользователь не видел, вы можете использовать поля. Как было сказано в комментариях, используйте $ variableName вместо? в вашем запросе. Не забудьте использовать \ «$ variableName \», чтобы избежать инъекций mysql.
Я еще раз прочитал ваш код: вы действительно должны полностью прочитать книгу php, прежде чем приступить к программированию для продуктивных веб-сайтов компании. В вашем коде есть ошибки новичка. И некоторые ошибки начинающих приводят к небезопасным веб-сайтам. Надеюсь, это выглядит не оскорбительно, а как совет.