Изкарване на информация от 2 таблици

proba

Registered
Здравейте.
Хич не ги разбирам join заявките в mysql , затова ще ви помоля да помогнете.
Целта е да изкарам последни 8 теми/мнения във форума (смесено).
Смисъл примерно пускам тема в 01:23 а в 01:25 пускам мнение , след това в 01:40 пак пускам мнение.
Да изкара най-отолу темата а после 2те мнения.
Форумът не е готов а съм го писал аз.
Да речем че имам 2 таблици

temi и otgovori

в таблицата temi има полета id , zaglavie , text , author
в таблицата otgovori има полета id , tid, text, author
като tid е id-то на темата към която е отговора.
Предполагам ще трябва да направя по още едно поле time с запис time();
Вие ще кажете това.
Въпросът е да изкарам последни 8 писания във форума.
Без значение дали е тема или мнение да ги изкара всичките.
Ще се радвам да помогнете. ;)
 
$result = mysql_query("SELECT каквото искаш да вземеш FROM temi as t LEFT OUTER JOIN otgovori as o ON t.tid = o.id WHERE t.tid = '".$_GET['edi si kakvo']."'");

така обединяваш двете таблици като,t.tid = o.id са равни а за клуч използваш някаква проблемлива идваща от гет
 
Искам да изкарва така:

<tr><td>id</td><td>zaglavie</td><td>author</td></tr>

ще може ли да го направиш понеже не разбрах какво да пиша на "каквото искаш да вземеш" и как да изкарам другите.
8 записа да е лимита.
10х ;)

Никой ли неможе да помогне ???
 
Код:
$result = mysql_query("SELECT t.id, t.zaglavie, t.author FROM temi as t LEFT OUTER JOIN otgovori as o ON t.tid = o.id WHERE t.tid = '".$_GET['edi si kakvo']."'"); 

while($row = mysql_fetch_array($result)){
     echo "<tr><td>".$row['id']."</td><td>".$row['zaglavie']."</td><td>".$row['author']."</td></tr> ";
}

ПП: това е само пример, много лоша практика е да смесваш PHP и HTML по този начин. Също така може да се добави stripslashes() на текстовите полета.
 
proba каза:
WHERE t.tid = '".$_GET['edi si kakvo']."'

Tова какво да го правя ?

махни го :)

Ако искаш да сортираш по теми - най-новата тема най-отгоре:

Код:
ORDER by t.id desc

ако искаш да сортираш по отговори - темата с най-нов отговор най-отгоре, тогава трябва и заявката да промениш малко, като включиш id на отговора (не ти знам структурата на таблицата с отговорите и импровизирам):

Код:
$result = mysql_query("SELECT o.id, t.id, t.zaglavie, t.author FROM temi as t LEFT OUTER JOIN otgovori as o ON t.tid = o.tid ORDER by o.id desc");

Всъщност в предишните примери в ON клаузата е имало грешка, вместо:

ON t.tid = o.id

трябва да е това:

ON t.tid = o.tid
 
Ето така извеждаш резултатите:

Код:
	<?php
		$query = mysql_query("SELECT * FROM `инето на таблицата` ORDER BY `id` DESC LIMIT 0, 7");
		while($row = mysql_fetch_array($query))
		{
	?>
<style type="text/css">
.zaglavie
{
	
}
</style>
						<div class="zaglavie"><font color="#000">Размер:</font><br /><?php echo htmlspecialchars_decode ( nl2br($row[size])); ?></div><br />
						<div class="opis"><font color="#000">Заглавие:</font><br /><?php echo ( nl2br($row[zaglavie])); ?></div><br />
	<?php
		}
	?>

Тази функция nl2br ти извежда резултатите така, както си ги въвел, т.е. редовете иначе показва текста на един ред и след ограничението минава на вторият. Аз съм ти го нагласил така че да си го стилизираш направо, незная колко добре съм ти го обяснил :roll: .
 
Коко, с кода който си показал, със всеки ред, който извеждаш от базата данни, дефинираш отново и отново CSS клас zaglavie !!!

Заглавието го слагаш в див? h-таговете какво ги правиме?

<font color="#000"> - годината е 2010, почти 2011

nl2br при показване на заглавие? нов ред в заглавие?

Хубаво е да помагаш, но да вземеш някакъв код от някъде, който въобще не е по темата, и да го плеснеш тук, не помагаш.
 
exec каза:
Коко, с кода който си показал, със всеки ред, който извеждаш от базата данни, дефинираш отново и отново CSS клас zaglavie !!!

Заглавието го слагаш в див? h-таговете какво ги правиме?

<font color="#000"> - годината е 2010, почти 2011

nl2br при показване на заглавие? нов ред в заглавие?

Хубаво е да помагаш, но да вземеш някакъв код от някъде, който въобще не е по темата, и да го плеснеш тук, не помагаш.

Да, кода го взех от някъде, но той си е мой, просто го взех от моята система и го обясних тук, аз така си правя нещата слагам и CSS и на текста си променям цвета с html тагове, незная защо го правя това, така съ м свикнал.
 
@Еxec сега ще видя кода който си дал.
Идеята е да изкарам последни теми и мнения като се сортират по време на писане.
И общия лимит да е 8.
Ако примерно сега напиша 8 теми без мнение да изкара 8те теми.
Ако напиша 2 теми и 6 мнения в тях , да изкара пак 8 резултата , като първите 2 са темите а другите мненията.
Сега ще видя какво ще стане ;)
 
Не се получава.
Оф искам просто да изкарам id-тата от 2те таблици с лимит 8 като ги сортирам по time.
В полето time се записва time();
Т.е. примерно:

таблица temi със записи
id = 1
time = 1291750302

id = 5
time = 1291750304

таблица otgovori със записи
id = 18
time = 1291750303

Трябва като сортира по time резултатите да бъдат така:

id 1 , time = 1291750302
id 18 , time = 1291750303
id 5 , time = 1291750304

Надявам се най-накрая да ме разбере някой и да помогне.
 

Back
Горе