Jump to content
  • 0

вывод данных из таблицы


necro
 Share

Question

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

Вот код страницы тем, если нужен:

<?
if (isset($_SESSION['id'])|| $_SESSION['type']== 'admin') {
$date_today = date("d.m.y");
$today = date("H:i");
echo("<div class='date'>Здравствуйте, $login.<br/> Сегодня: $date_today - $today</div>");
echo('<table class="forumtable" cellpadding="0" cellspacing="0" border="1">
<tbody>
<tr>
<th width="55%" height="25" nowrap="nowrap">Тема</th>
<th width="10%" class="thTop" nowrap="nowrap">Статус темы</th>
<th width="12%" class="thCornerR" nowrap="nowrap">Автор</th>
<th width="18%" class="thCornerR" nowrap="nowrap">Обновления</th>
</tr>');
mysql_query('SET NAMES UTF8');
$themes = mysql_query("SELECT * FROM themes WHERE author_id = {$_SESSION ['id']} ORDER BY time_create DESC");
if (mysql_num_rows($themes) > 0) {
while ($myrow = mysql_fetch_assoc($themes)) {
echo
('<tr height="50">
<td width="55%" valign="middle" align="center"><span class=""><b><a href="messages.php">'.$myrow['name_themes'].'</a></b></span>
</td>
<td width="10%" class="row2" valign="middle" align="center">'.$myrow['status'].'
</td>
<td width="12%" valign="middle" align="center"><span>'.$myrow['author_name'].'</span>
</td>
<td width="18%" valign="middle" align="center" ><span>'.$myrow['time_create'].'</span>
</td>
</tr>');
}
}


echo ('</tbody>
</table>
<a href="themescreate.php" class="spritethemes"></a>');
}
else
{
echo ("Для просмотра информации пожалуйста <a href='index.php'>авторизуйтесь</a>");
}
?>

Вот одна из нерабочих версий messages.php

<?
if (isset($_SESSION['id'])|| $_SESSION['type']== 'admin') {
$date_today = date("d.m.y");
$today = date("H:i");
echo("<div class='date'>Здравствуйте, $login.<br/> Сегодня: $date_today - $today</div>");
if(isset($_GET['uid_themes']))
{
$result=mysql_query("SELECT * FROM themes WHERE id_themes='".$_GET['uid_themes']."'");
if($myrow=mysql_fetch_array($result))
{
echo("<div class='wrapper'>
<div class='topic'>
<span class='topic_title'>".$name_themes."
</span>
</div>
</div>");
}
}
}
?>

Помогите люди добрые, правильно написать запрос, спасибо.

Link to comment
Share on other sites

14 answers to this question

Recommended Posts

  • 0

в ссылке передавать id темы и на другой странице ее отлавливать и в условии запроса писать типа:


$themes = mysql_query("SELECT * FROM `themes` WHERE `author_id` = {$_SESSION ['id']} && `id_themes` = {$_GET['id']} ORDER BY time_create DESC");

только подумайте еще и о защите от sql инъекций ;)

UPD: и да, откуда у вас в messages.php взялась $name_themes?

Link to comment
Share on other sites

  • 0

Ну суть такая, когда я создаю новую тему, я указываю имя темы и первое сообщение, ну как на любом форуме. Но все это я кидаю не в разные таблицы, а в одну - темы. Получается у меня там поля название темы, первое сообщение и тд. А все остальные сообщения уже будут храниться в другой таблице. Ну вот поэтому сначала мне нужно обратиться к одной таблице, чтобы вывести имя темы и первое сообщение, а потом ко второй, чтобы вывести остальные сообщения. Знаю муть, но и программист пхп с меня ещё никакой)

А по сабжу, получается, что мой код более менее правильные, просто нужно на странице тем в ссылке ещё передать айдишник темы?

Link to comment
Share on other sites

  • 0

1) для начала нужно грамотно продумывать структуру таблиц в бд, типа:

темы (таблица themes):


id_thems | root_id_themes
1 | 0
2 | 1
3 | 1
4 | 2
5 | 2

сообщения (таблица mess):


id_mess | root_id_mess
1 | 1
2 | 1
3 | 1
4 | 2
5 | 2
6 | 2
7 | 3
8 | 3
9 | 3

2) ну и запрос на вывод сообщения для определенной темы:


$query = mysql_query("SELECT * FROM `mess` as A,
`themes` as B WHERE A.root_id_mess = B.id_thems AND
A.id_mess = '".intval($_GET['id_mess'])."'");

не проверял, но что-то типа того...

Link to comment
Share on other sites

  • 0

Ну это вообще потом, для начала мне бы разобраться с первой проблемой и выводом названия темы и первого сообщения конкретной темы, а с сообщениями уже потом буду разбираться

Link to comment
Share on other sites

  • 0

Что-то химичу и вообще не выходит, была ранее у меня похожая ситуация, сделал по аналогии, только все равно выводить не хочет.

themes.php


<?
if (isset($_SESSION['id'])|| $_SESSION['type']== 'admin') {
$date_today = date("d.m.y");
$today = date("H:i");
echo("<div class='date'>Здравствуйте, $login.<br/> Сегодня: $date_today - $today</div>");
echo('<table class="forumtable" cellpadding="0" cellspacing="0" border="1">
<tbody>
<tr>
<th width="55%" height="25" nowrap="nowrap">Тема</th>
<th width="10%" class="thTop" nowrap="nowrap">Статус темы</th>
<th width="12%" class="thCornerR" nowrap="nowrap">Автор</th>
<th width="18%" class="thCornerR" nowrap="nowrap">Обновления</th>
</tr>');
if($_POST['uid_themes'])
{
mysql_query('SET NAMES UTF8');
$themes = mysql_query("SELECT * FROM themes WHERE author_id = {$_SESSION ['id']}&& id='".$_POST['uid_themes']."' ORDER BY time_create DESC");
if (mysql_num_rows($themes) > 0) {

echo
('<tr height="50">
<td width="55%" valign="middle" align="center"><span class=""><b><a href="messages.php?uid='.$myrow['id_themes'].'">'.$myrow['name_themes'].'</a></b></span>
</td>
<td width="10%" class="row2" valign="middle" align="center">'.$myrow['status'].'
</td>
<td width="12%" valign="middle" align="center"><span>'.$myrow['author_name'].'</span>
</td>
<td width="18%" valign="middle" align="center" ><span>'.$myrow['time_create'].'</span>
</td>
</tr>');
}
}
else {
mysql_query('SET NAMES UTF8');
$themes = mysql_query("SELECT * FROM themes WHERE author_id = {$_SESSION ['id']}");
if (mysql_num_rows($themes) > 0) {
while ($myrow = mysql_fetch_assoc($themes)) {
echo
('<tr height="50">
<td width="55%" valign="middle" align="center"><span class=""><b><a href="messages.php?uid='.$myrow['id_themes'].'">'.$myrow['name_themes'].'</a></b></span>
</td>
<td width="10%" class="row2" valign="middle" align="center">'.$myrow['status'].'
</td>
<td width="12%" valign="middle" align="center"><span>'.$myrow['author_name'].'</span>
</td>
<td width="18%" valign="middle" align="center" ><span>'.$myrow['time_create'].'</span>
</td>
</tr>');
}
}
}

echo ('</tbody>
</table>
<a href="themescreate.php" class="spritethemes"></a>');
}
else
{
echo ("Для просмотра информации пожалуйста <a href='index.php'>авторизуйтесь</a>");
}
?>

messages.php


<?
if (isset($_SESSION['id'])|| $_SESSION['type']== 'admin')
{
$date_today = date("d.m.y");
$today = date("H:i");
echo("<div class='date'>Здравствуйте, $login.<br/> Сегодня: $date_today - $today</div>");
if(isset($_POST['uid_themes']))
{
$result=mysql_query("SELECT * FROM themes WHERE id_themes='".$_POST['uid_themes']."'");
if($myrow=mysql_fetch_array($result))
{
echo "<div class='wrapper'>
<div class='topic'>
<span class='topic_title'>".$row['name_themes']."</span>
</div>
</div>";
}
}
}
?>

в messages пустой экран, не хочет ничего выводить, хелп.

Link to comment
Share on other sites

  • 0

Так я учу, я понимаю, что ошибки, потому что ничего не работает, поэтому и пишу сюда, чтоб сказали, как правильно) А код не копировал) Только 3 строчки написал по аналогии с тем, что писал на другой странице, а тот код да мне на этом форуме написали, а так все сам пытаюсь.

Link to comment
Share on other sites

  • 0

обратите уже свое внимание на эту запись: if($myrow=mysql_fetch_array($result))

почему вы тут присваиваете переменной $myrow массив, а главное для чего? условие if тут тоже не понятно, что вы этой проверкой хотите добиться?

цикл while вам о чем-нибудь говорит?

и на эту: ".$row['name_themes']."

откуда тут вообще взялась переменная $row?

вот когда вы ответите себе на эти вопросы и почитаете об этом, что-то должно у вас проясниться.

Link to comment
Share on other sites

  • 0

Хорошо, тогда можете сказать от чего тут отталкиваться, я повторюсь, делал по аналогии, вот код из другого куска. Там принцип такой, сначала выводится список всех пользователей, нажимая на пользователя открывается новая страница и выводится инфа о нем. Вот код, он полностью рабочий, когда писал эту часть отталкивался от него. Просто я не вижу разницу.


if($_SESSION['type'] =='admin')
{
if(isset($_GET['uid']))
{
$result=mysql_query("SELECT * FROM user WHERE id='".$_GET['uid']."'");
if($myrow=mysql_fetch_array($result))
{
print('<center><h3>Пользователь:<br/>'.$myrow['site'].'<br /><a href="userinfo.php?uid='.$myrow['id'].'" style="margin-left:40px; margin-bottom:20px;">Вся инфа</a><hr/></h3></center>');
}
}
else
{ echo "<center><h1>Здравствуйте, администратор</center></h1>";
echo "<center><H3>Просмотр всех зарегистрированных</H3></center>";
$result=mysql_query("SELECT * FROM user");
while ($myrow=mysql_fetch_array($result))
{
print('<center><h3>Пользователь:<br/>'.$myrow['site'].'<br /><a href="userinfo.php?uid='.$myrow['id'].'" style="margin-left:40px; margin-bottom:20px;">Вся инфа</a><hr/></h3></center>');
}
}


$result=mysql_query("SELECT * FROM user WHERE id='".$_GET['uid']."'");
if($myrow=mysql_fetch_array($result))
{
print('<center><h3>Пользователь:<br/></h3></center>');
print ('<center><span class="userinfo">WWW: '.$myrow['site'].'</span></center>');
if($myrow['naimenovanie']!='')
{
print('<center><span class="userinfo">Наименование Юр. лица: '.$myrow['naimenovanie'].'<br /></span></center>');
}
}

Edited by necro
Link to comment
Share on other sites

  • 0

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

Edited by necro
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy