2016-01-27 3 views
-3

Форма HTML содержит 4 поля (имя, фамилия, мобильный и посещаемый). Это форма поиска, чтобы найти запись в таблице посещаемости mysql. Все эти поля являются необязательными с намерением быть тем, что чем больше полей вы вводите в форму, вы сужаете поиск. Я знаю, что проблема связана с первым SQL, поскольку он не учитывает все переменные.Выберите из MySQL на основе HTML-формы

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

Извините, если что-то неопределенное, но я понятия не имею, как подойти к этому, слишком долго смотрел на него!

Большое спасибо за помощь!

<html> 
<body> 
<table> 
<table border="1"> 
<tr><th>AttendeeID</th><th>Wristband</th><th>Firstname</th><th>Lastname</th><th>Telephone 
</th><th>Mobile</th><th>Address 1</th><th>Address 2</th><th>Town</th><th>Postcode</th><th> 
E-Mail</th><th>Medical Notes</th><th>Last Reader Tap</th></tr> 

<?php 

include "checkmysqlconnect.php"; 

$firstname = $_POST['firstname']; 
$lastname = $_POST['lastname']; 
$mobile = $_POST['mobile']; 
$attendid = $_POST['attendid']; 
$search = $_POST['search']; 

if ($search == "Search") { 
    if ($firstname == '' AND $lastname == '' AND $attendid == '' AND $mobile == '') { 
     header("Location: searchattendform.php?result=1"); 
     $error = true; 
    } 

    if ($error != true) { 

$sql = "SELECT * FROM `attend` WHERE `firstname` = '".$firstname."' OR `lastname` = '".$lastname."' OR `attendid` = '".$attendid."' OR `mobile` = '".$mobile."'"; 
$query = mysql_query($sql); 
$count = mysql_num_rows($query); 

$sql1 = "SELECT `readerid` FROM `taps` WHERE `attendid` = '".$attendid."' ORDER BY `time` DESC LIMIT 1"; 
$query1 = mysql_query($sql1); 

if ($count > 1) { 
    echo "More than one matching attendee. Entering more details will help narrow down results."; 
while($value = mysql_fetch_assoc($query)); 
while($value1 = mysql_fetch_assoc($query1)) { 
    echo "<tr><td>".$value['attendid']."</td><td>".$value['wristband']."</td><td>".$value['firstname']. 
    "</td><td>".$value['lastname']."</td><td>".$value['telephone']."</td><td>".$value['mobile']."</td><td>".$value['address1']. 
    "</td><td>".$value['address2']."</td><td>".$value['town']."</td><td>".$value['postcode']."</td><td>".$value['email']. 
    "</td><td>".$value['medical']."</td><td>".$value1['readerid']."</td></tr>"; 
} } else { 
    if ($count == 0) { 
     header("Location: searchattendform.php?result=2"); 
} else { 
    if ($count == 1) { 
     ($value = mysql_fetch_assoc($query)); 
      echo "<tr><td>".$value['attendid']."</td><td>".$value['wristband']."</td><td>".$value['firstname']. 
     "</td><td>".$value['lastname']."</td><td>".$value['telephone']."</td><td>".$value['mobile']."</td><td>".$value['address1']. 
     "</td><td>".$value['address2']."</td><td>".$value['town']."</td><td>".$value['postcode']."</td><td>".$value['email']. 
     "</td><td>".$value['medical']."</td><td>".$value1['readerid']."</td></tr>"; 
    } else { 
     echo "There was an issue searching attendees. Please contact SOFia Admin."; 
    } } 
} 
} 
} 

?> 

</table> 
</body> 
</html> 
+1

прекратить использование 'mysql_ *' функций и начать использовать pdo или mysqli, так как 'mysql_ *' устарел и имеет большой потенциал SQL-инъекции. – davejal

+1

[Ваш скрипт подвержен риску инъекций SQL.] (Http: // stackoverflow .com/questions/60174/how-can-i-prevent-sql-injection-in-php) –

+1

Пожалуйста, прекратите использование 'mysql_ *' функций (http://stackoverflow.com/questions/12859942/why-shouldnt -i-использование-MySQL-функции-в-PHP). [Эти расширения] (http://php.net/manual/en/migration70.removed-exts-sapis.php) были удалены в PHP 7. Узнайте о [подготовленном] (http://en.wikipedia.org/ wiki/Prepared_statement) для [PDO] (http://php.net/manual/en/pdo.prepared-statements.php) и [MySQLi] (http://php.net/manual/en/mysqli.quickstart .prepared-statements.php) и подумайте над использованием PDO, [это действительно довольно легко] (http://jayblanchard.net/demystifying_php_pdo.html). –

ответ

0

Посмотрите на свой внешний контур while($value = mysql_fetch_assoc($query));.

Разве это не должно быть while($value = mysql_fetch_assoc($query)){?

+0

не забывайте больше не использовать функции 'mysql_ *', поскольку они устарели, поэтому также не предлагайте их! – davejal

+0

Черт, правый. Вы, безусловно, должны избегать ввода пользователем или формы, чтобы избежать инъекций SQL. Ты действительно должен! – Bonscho

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