2014-11-19 6 views
0

Итак, у меня есть базовый PHP-сайт, который отображает список продавцов с сервера MySQL, когда представлен выбор из раскрывающегося списка. Я установил кнопку, чтобы появляться рядом с каждым результатом, и я хочу, чтобы скрипт php запускался при нажатии кнопки с использованием данных MySQL из этого конкретного результата. Все работает, кроме кнопки, которая запускает второй запрос MySQL. Вот пример таблицы после первого запроса:? Выбрать клиенты из бэ WHERE Employeenumber = 'Отправка SQL-команды одним нажатием кнопки HTML через PHP

<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, как

У меня нет проблем с этим, кроме передачи значения от кнопки к скрипту 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 
?> 
+0

Изменить '$ _POST [город]' в ' $ _POST [ 'город'] '. Является ли '?' В '$ sql2' тем, что вы хотите выяснить, как получить номер сотрудника? – Firedrake969

+0

Это нормально, мне просто нужно добавить значение к кнопке в цикле foreach. Все остальное проверено и работает нормально. $ Sql2 является частью первого запроса. Я хочу запустить второй после него, используя результаты первого (в частности, employeeNumber) – user3856804

ответ

0

Я не совсем понял ваше точное требование, но я думаю, что вы хотите, табельный номер в кнопке, если это ваше требование, то вы можете просто проверить этот код

`echo '<input type="submit" name="empLookup" value="'.$r['emp_id_from_database'].'"</td></tr>';` 
+0

Спасибо, это все, что я хотел сделать. – user3856804

0

От вашего html-кода ваша форма выглядит пустой.

Вам необходимо добавить данные в свою форму html. Если вы хотите, чтобы пользователь не видел, вы можете использовать поля. Как это было в комментариях сказано, используйте $ variableName вместо? в вашем запросе. Не забывайте использовать \ "$ variableName \", чтобы избежать инъекций mysql.

Я прочитал второй код: вы действительно должны прочитать php-книгу, прежде чем программировать материал для продуктивных веб-сайтов компании. В вашем коде есть ошибки начинающего. И некоторые ошибки начинающих приводят к небезопасным веб-сайтам. Надеюсь, это не выглядит обидным, но, как совет.

+0

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

+0

Общий синтаксис: $ varName = "x"; нет типов. Глобальные вары, такие как запросы на сервер, начинаются с $ _. Полезными являются: $ _REQUEST (сообщение и соединение), $ _GET $ _GET. Строки должны быть в строке или строке. Индексы массива часто являются строками типа $ _POST ['street'] (массив с индексной строкой «улица»). «string» отличается от «string» с $ vars. «$ var» будет печатать значение переменной. – stupidstudent

+0

Спасибо. Я в основном следую инструкциям PDO, так как мне действительно нужен PHP для работы с базами данных. – user3856804