Я пытаюсь использовать PHP
для передачи данных формы HTML в MYSQL
данных MYSQL
и возврата данных в браузер. Предоставляя проверенные разрешения ( M1
, M2
, MN1
..), я хочу отобразить имена инструкторов, имеющих эти разрешения. Теперь, пожалуйста, скажите мне, что не так с кодом:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Untitled Document</title> </head><body> <form action="akcja.php" method="post"> <br /><br /><br /> <table> <tr><th><br/><input type="checkbox" id="check" name="M1" value="M1,">m1</th> <th><br/><center><input type="checkbox" id="check" name="M2" value="M2,">m2</center></th> <th><br/><center><input type="checkbox" id="check" name="MN1" value="MN1,"> mn1 </center></th> </tr></table> <input type="submit" name="submit" value="Search Database" /> </form> </body> </html> <?php $query = mysql_query("SELECT * FROM permissions WHERE m LIKE '".$_POST['M1']."' OR m LIKE '".$_POST['M2']."' OR mn LIKE '".$_POST['MN1']."' "); if($query) while($permissions = mysql_fetch_assoc($query)){ $query2 = mysql_query("SELECT name_surname FROM instruktorzy WHERE instruktor_id='".$permissions['instruktor_id']."'"); while($Mdwa = mysql_fetch_assoc($query2)){ echo "<p style=\"font-size: 14px; font-family: Helvetica; background-color: #FFFFFF\"> ".$Mdwa['name_surname']."<br />" ; "</p>" ; } } ?>
Вот как я вижу более чистый способ ориентации вашего кода. Я должен отметить, что это было быстро удалено вместе без каких-либо инструментов, поэтому не копируйте и не вставляйте.
$connection = new PDO('mysql:host=localhost;dbname=db', 'awesome_user', 'love123', array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES \'UTF8\'')); $query_obj = $connection->prepare("SELECT permissions.*, instruktorzy.name_surname FROM permissions LEFT JOIN instruktorzy ON instruktorzy.instruktor_id = permissions.instruktor_id WHERE permissions.m IN (:m1, :m2) OR permissions.mn LIKE :mn1 LIMIT 100"); $query_obj->setFetchMode(PDO::FETCH_ASSOC); // You will need something a little more complex here to deal with missing data, // I am just putting in what is required to get it working if the // entire $_POST is set $query_obj->bindValue(':m1', isset($_POST['M1']) ? $_POST['M1'] : null); $query_obj->bindValue(':m2', isset($_POST['M2']) ? $_POST['M2'] : null); $query_obj->bindValue(':mn1', isset($_POST['MN1']) ? $_POST['MN1'] : null); $query_obj->execute(); foreach($query_obj as $k => $row){ echo '<p style="font-size: 14px; font-family: Helvetica; background-color: #FFFFFF"> '.$row['name_surname'].'<br /></p>' ; }
Это должно помочь вам правильно заняться написанием лучшего кода; с надеждой.
Следующий код – более чистый способ делать что-то. Это было долгое время с тех пор, как я использовал его таким образом, но это может помочь вам решить вашу проблему, поскольку, вероятно, это связано с тем, что вы используете queryloop в queryloop. (не уверен, но не повредит, если вы сделаете это, как я.
$permissions = Array(); $query = mysql_query("SELECT * FROM permissions WHERE m LIKE '" . $_POST['M1'] . "' OR m LIKE '" . $_POST['M2'] . "' OR mn LIKE '" . $_POST['MN1'] . "' "); if ($query) { while ($row = mysql_fetch_assoc($query)) { array_push($permissions, $row); } } foreach ($permissions AS $key => $permission) { $query = mysql_query("SELECT name_surname FROM instruktorzy WHERE instruktor_id='" . $permission['instruktor_id'] . "'"); if ($query) { while ($row = mysql_fetch_assoc($query2)) { echo "<p style=\"font-size: 14px; font-family: Helvetica; background-color: #FFFFFF\"> ".$Mdwa['name_surname']."<br />" ; "</p>" ; } } }