В этом коде много ошибок.
1) Вы пытаетесь отправить первичный ключ таблицы двумя разными способами в main.php: в сеансе и по пути URL,Это просто плохая практика - причина того, что у вас есть доступ к различным каналам для передачи данных, заключается в том, что все они имеют разную семантику, но даже тогда, отправляя одну и ту же вещь дважды, всегда существует риск того, что принимающая сторона может увидеть разные значенияи поэтому должен иметь способ устранения несоответствия.
2) Вы используете сеанс для передачи элемента транзакционных данных.Это плохая идея - элемент данных относится к определенному переходу, а не к сеансу.$ _SESSION следует использовать только для хранения данных, относящихся к сеансу, а не к навигации или транзакциям.
3) Другой канал, который вы указали для передачи элемента данных, - это добавление его в путь в URL-адресе.Хотя в некоторых случаях этот подход имеет свои преимущества, он также имеет сложности, характерные для веб-сервера, на котором реализован код - вы не предоставили никакого объяснения того, почему вы используете это apporach вместо обычной переменной $ _GET или $ _POST.
Причина, по которой ваш код дает сбой, состоит в том, что вы можете хранить только одно значение в $ _SESSION ['projectname'].Даже если вы сохранили массив значений в сеансе, у веб-сервера не будет механизма узнать, какое из этих значений было выбрано при доставке кода в браузер.
Ваш HTML плохо структурирован и плохо отформатировантоже.
Код, который вы показали, не соответствует описанию, которое вы дали (он не отображает название проекта).
Ваш код также широко открыт для атак с использованием SQL-инъекций.
Измените его так, чтобы в main.php:
echo "<div id=\"links\">\n";
echo "<ul>\n";
while($row2 = mysql_fetch_assoc($result2)){
echo "<li> <a href=\"fullproject.php?project=\""
. urlencode($row2['projectname']) . "\">"
. htmlentities($row2['projectname']) . "</a>\n";
echo "<br /><em>" . $row2['description'] . "</em></li>";
}
echo "</ul>";
echo "</div>";
И в fullproject.php
<?php
session_start();
require ("connect.php");
$projectname= mysql_real_escape_string($_GET['projectname']);