|
|
|
| Здравствуйте. Подскажите пожайлуста вот есть таблица
CREATE table meseges (
id_text auto_increment primary key,
post_subject text,
post_body text,
id_user int(11),
id_forum tinytext,
putttime datetime,
flag enum ('show','hide') default 'hide'
);
|
Как выводить записи я разобрался. А вот как сделать так чтобы при выводе post_subject образовывалась
ссылка на вывод post_body соответственно. Никак не могу придумать :0) | |
|
|
|
|
|
|
|
для: Sin
(10.11.2004 в 23:41)
| | Хм... вывод записей у вас происходит наверняка в цикле? Тогда при формировании ссылки следует использовать первичный ключ (так как он уникален) можно поставить ссылку fullpost.php?id_text=15, где параметр id_text - номер первичного ключа для поста в таблице meseges. В скрипте fullpost.php осуществить запрос к таблице по этому ключу
SELECT post_body FROM meseges WHERE id_text=$id_text
|
| |
|
|
|
|
|
|
|
для: Sin
(10.11.2004 в 23:41)
| | Хм, а какая логика работы должна быть? ... Не очень ясно.
Сначало выводятся списки названия (post_subject ) списком. А по ссылке на название выводится сообщение (post_body )? Причем именно то, на которое щелкнули. Это имеется ввиду или другое? | |
|
|
|
|
|
|
|
для: glsv (Дизайнер)
(10.11.2004 в 23:59)
| | Да-да. Что то на подобии форума. Нажимаешь по теме и выводятся посты. Только у меня в место постов статьи будут, которые хранятся в post_body, а названия в post_subject. B вот щелкая по названию должна открываться сама статья. | |
|
|
|
|
|
|
|
для: Sin
(11.11.2004 в 00:15)
| | cheops в общем то об этом и написал.
Можно организовать так. У вас будут 2 страницы
1 страница - список тем
<?
$query="SELECT * FROM meseges";
$art = mysql_query($query);
if ($art)
{
while($articles = mysql_fetch_array($art))
{
echo "<h2><a href=article.php?id_text=".$articles['id_text '].">".
$articles['post_subject ']."</a></h2>";
}
}
?>
|
Здесь формируем ссылки на страницу article.php и передаем ей параметр статьи id_text=".$articles['id_text ']
Страница article.php отображает конкретную статью.
<?
$query="SELECT post_body FROM meseges WHERE id_text=".$_GET['id_text'];
$art = mysql_query($query);
if ($art)
{
$body = mysql_fetch_array($art);
// Выводим содержимое статьи
echo $body['post_body '];
}
?>
|
| |
|
|
|
|
|
|
|
для: glsv (Дизайнер)
(11.11.2004 в 01:14)
| | Ага вот сделал.
<?php
include ("includ/myaql.php");
if($id)
{
sql_connect(); //открываем соединение с базой
$sql_query="Select post_body FROM meseges WHERE id_text='".@$_POST['id']."'";
sql_execute();// Посылаем запрос
if($sql_res)
{
$body = mysql_fetch_array($sql_res);
echo $body['post_body'];
}
else { echo ("Ошибка"); }
sql_close();//закрываем соединение с базой
}
else { echo ("ошибка id"); }
?>
|
Только вот он почемуто выдает белый экран. Ни ощибки ни чего просто белый экран. Не могу понять почему? | |
|
|
|
|
|
|
|
для: Sin
(11.11.2004 в 13:54)
| | Дело происходит на локальной машине? Посмотрите в конфигурационном файле php.ini значение директивы display_errors, несущее ответственность за отображение ошибок в окно браузера - в новых версиях PHP она отключена, если это так включите её
| |
|
|
|
|
|
|
|
для: cheops
(11.11.2004 в 14:10)
| | Ага спасиба, я так разобрался. Просто вместо $_post['id'] написал $_GET['id'] и все пошло почемуто. Но вот опять появилась новая проблема. плохо когда мало знаешь, спасибо хоть вы помогаете. А дело в том
<?php
sql_connect();
$sql_query="select * from forums";
sql_execute();
$sql_ress=$sql_res;
while ($row = mysql_fetch_array($sql_ress)) {
$sql_query="select meseges.* from meseges WHERE meseges.id_forum=forums.id_forum";
sql_execute();
$res=mysql_num_rows($sql_res);
echo (" //текст страницы
".$row['name_forum']."
//текст страницы
".$res.");
|
Я тут пытаюсь найти количество тем (статей) в разделе форума Тойсть название форума (раздела) и на против сколько статей он содержит. Названия форумов находятся в таблицы forums, а статьи в meseges. они связаны ключом id_forum
так вот у меня вылазиют ошибки то что запрос не осуществился. Хотя первый прошел удачно и названия разделов появляются. | |
|
|
|
|
|
|
|
для: Sin
(11.11.2004 в 23:55)
| | >$_POST['id'] написал $_GET['id']
1) Это массивы для двух способов передачи - GET это передача в строке запроса, вы будете видить свои параметры в URL, как у нас на форуме, что-то вроде
answer.php?id_forum=3&id_theme=738&id_post=5572
|
При передаче методом POST - данные передаются через заголовки и не видны в строке запроса. Метод передачи задаётся параметром method формы (тэг <form>)
2) Вы пытаетесь осуществить многотабличный запрос, в этом случае, после оператора FROM должны быть перечислены все используемые таблицы:
SELECT meseges.*
FROM meseges, forums
WHERE meseges.id_forum=forums.id_forum
|
3) На самом деле в вашем случае удобнее обойтись одним запросом
<?php
sql_connect();
$sql_query="SELECT forums.name_forum AS name_forum, COUNT(meseges.id_forum) AS total
FROM forums, meseges
WHERE meseges.id_forum=forums.id_forum
GROUP BY name";
sql_execute();
$sql_ress=$sql_res;
while ($row = mysql_fetch_array($sql_ress))
{
echo (" //текст страницы
".$row['name_forum']."
//текст страницы
".$row['total']);
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(12.11.2004 в 00:11)
| | Ага все получилось.
Только вот меня заинтересовал вот этот запрос
<?php
$sql_query="SELECT forums.name_forum AS name_forum, COUNT(meseges.id_forum) AS total
FROM forums, meseges
WHERE meseges.id_forum=forums.id_forum
GROUP BY name";
|
Я его понял так, выбераем Name_forum из forums как name_forum и считаем кол. такогоже id_forum в meseges как total и все это дело выберается из таблиц forums и meseges где meseges.id_forum=forums.id_forum А вот для чего нужно GROUP BY name видемо имелось не name а name_forum я так и не понял | |
|
|
|
|
|
|
|
для: Sin
(12.11.2004 в 23:05)
| | Так как выборка производится из двух таблиц, БД не знает сколько записей вы хотите получить и выдаёт по максимуму кол-во записей в forums умноженное на количество записей в messages - декартово произведение. GROUP BY позволяет указать, что нам нужно лишь число записей равное числу записей в таблице forum (всю эту кучу записей группируем по именам форумов). | |
|
|
|
|
|
|
|
для: Sin
(11.11.2004 в 23:55)
| | А у Вас запрос неправильный.
select meseges.* from meseges WHERE meseges.id_forum=forums.id_forum
|
Для получения количества статей в форуме используйте следующий запрос
<?
$sql_query ="SELECT count(*) FROM 'paragraphes' WHERE id_article=".$row['id_forum'];
?>
|
| |
|
|
|