2015-11-30 2 views
0

Я пытаюсь запросить mysql через PHP, чтобы получить список имен классов из таблицы. Затем я хочу, чтобы пользователь нажимал на одно из этих имен классов для перенаправления на страницу, на которой отображается список классов для любого класса. Реестры генерируются «на лету» из другой таблицы в базе данных, прямо сейчас я хочу просто сохранить имя класса в качестве переменной сеанса, а затем на странице roster.php эту переменную запросить для правильного списка. .Создание динамической кнопки через PHP

ех)

класс а -click-> roster.php

->echo (// roster 'a' as <ol> from table);

класс б -click-> roster.php

->echo (// roster 'b' as <ol> from table);

класс a -click-> roster.php

->echo (// roster 'c' as <ol> from table);

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

Вот код, который я написал для создания реестров из базы данных.

$sql = "SELECT firstname, lastname FROM student_Data WHERE classs =" . $_SESSION['classname']; 
$result = $conn->query($sql); 

if ($result->num_rows > 0) { 
    // output data of each row 
    echo("<div id=\"list1\">") 
    while($row = $result->fetch_assoc()) { 
     echo ("<li><h4 class=\"list-group-item-heading\">". $row["firstname"]. " " . $row["lastname"] . "</h4></li>"); 
    } 
    echo("</div>"); 
} else { 
    echo (""); 
} 

Примечание стороны: Это личный проект, так что я довольно быстро производить код более эффективного кода. Вот почему я в порядке с сессионными варами.

+1

Какой запрос вы хотите запускать на roaster.php? Проблема достаточно проста, но неясно, какие данные важны для запроса на следующей странице - запрос в вашем коде, похоже, получает данные о студентах (имя и фамилия), но ваш вопрос спрашивает о именах классов. – Steve

+0

Если у вас есть список классов, не можете ли вы просто перебрать этот список и вывести ссылку для каждого из них? Это почти идентично тому, что вы делаете сейчас, за исключением того, что вы выведете тег 'a' в свой цикл. – David

+0

@Steve Я бы использовал предоставленный код, чтобы получить реестры на roster.php. На этой странице будут отображаться имена учеников. Тем не менее, существует несколько разных классов, поэтому мне нужно будет также передать, какой класс запрашивается на этой странице roster.php. – Christopher

ответ

0

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

while($row = $result->fetch_assoc()) { 
    echo ("<a href=\"class.php?id=" . $row["id"] . "\">" . $row["name"] . "</a>"); 
} 

Так получающиеся ссылки будут выглядеть примерно так:

<a href="class.php?id=1">Class A</a> 
<a href="class.php?id=2">Class B</a> 
<a href="class.php?id=3">Class C</a> 

Затем в следующей странице , вы можете получить идентификатор из строки запроса с $_GET["id"]. Примечание, конечно, что это значение может быть изменено пользователем. Итак, вы не используете, чтобы использовать его непосредственно в SQL-запросе, как вы сейчас это делаете со своим значением сеанса. (На самом деле вы тоже не должны делать.) Вместо этого используйте подготовленный оператор и привяжите его как значение вместо его выполнения как код.

+0

Спасибо, Дэвид. Я уже давно отметил ваш комментарий к SQL-инъекции. Как указано, для этого проекта это не проблема. Это просто маленькая игровая площадка для меня, чтобы изучить веревки :) Это решение работает для меня. – Christopher

0

Вы можете использовать параметр строки запроса:

Показать кнопки Страница:

$sql = "SELECT id, classname FROM classes"; 
$result = $conn->query($sql); 

if ($result->num_rows > 0) { 
    // output data of each row 
    echo "<ul id='list1'>"; 
    while($row = $result->fetch_assoc()) { 
     echo sprintf("<li><a href='roaster.php?classId=%s'>%s</a></li>", $row['id'], $row['classname']); 
    } 
    echo "</ul>"; 
} 

запекания страница

$sql = "SELECT firstname, lastname FROM student_Data WHERE classid =" . $_GET['classId']; 

Обратите внимание, что вы хотите с отсутствующими/недействительные идентификаторы, и правильно защищать от SQL-инъекций, используя подготовленные запросы.Это не показано выше для критерия

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