Skocz do zawartości


- - - - -

Strona główna + Forum = współpraca


52 odpowiedzi w tym temacie

#31 DawPi

    ...a wy Pragnienie™

  • Manager
  • 49517 postów
  • Wersja:IP.Board 3.2.3

Napisano 03 marzec 2010 - 00:57

Najlepiej pobierz ID tematów - zapisz do jakiejś tablicy, a potem wykonaj drugie zapytanie pobierające wszystkie posty z tabeli posts. Reszta to już PHP i połączenie tego w całość. Z pomocą przyjdą Ci na pewno tablice wielowymiarowe ( tablice w tablicach ).
intermedia - profesjonalne rozwiązania Invision Power Board

#32 Bellum

  • Użytkownik
  • 131 postów
  • Wersja:IP.Board 3.1.4

Napisano 20 marzec 2010 - 14:22

Wyświetl postUżytkownik DawPi dnia 03 marzec 2010 - 00:57 napisał

Najlepiej pobierz ID tematów - zapisz do jakiejś tablicy, a potem wykonaj drugie zapytanie pobierające wszystkie posty z tabeli posts. Reszta to już PHP i połączenie tego w całość. Z pomocą przyjdą Ci na pewno tablice wielowymiarowe ( tablice w tablicach ).
Witam, miałem problemy z serwerem co opóźniło mnie o ładne 2 tygodnie, jednak powyższy problem został rozwiązany:
SELECT t.title, p.post FROM posts p JOIN topics t ON p.topic_id = t.tid WHERE t.forum_id IN (14) AND p.author_id IN (2)"
Wyświetl tytuły i posty z kategorii o id 14 i tylko autorstwa użytkownika id 2 :D
A teraz napiszę nowy temat, tego proszę jeszcze nie zamykać, gdyż będę kontynuował wątek zmiennych.

Pozdrawiam

#33 Bellum

  • Użytkownik
  • 131 postów
  • Wersja:IP.Board 3.1.4

Napisano 20 marzec 2010 - 23:33

Jako, że jest to forum o IPB 3 a ja mam pytania z dziedziny pokrewnej, to brnę dalej :D

Kod odpowiadający za wyświetlenie podkategorii z kategorii Artykuły, co w rezultacie tworzy menu. Ułożyłem je w identyczny sposób w jaki były wyświetlane na forum oraz przypisałem im ich ID(kategorii)


<?php
	//Baza danych
	
	include"inc/mysql_access.php";
	
	//Wyświetlanie menu
	
	$mysql = "SELECT name, id FROM forums WHERE parent_id IN (4) ORDER BY position ASC";
	$wykonaj = @mysql_query($mysql) or die('<br />Niepoprawny wiersz bądź kolumna<br />'.mysql_error());
	echo '<div id="nav">
			<dl>
				<dt>Kategorie</dt>';
	while ($wiersz = mysql_fetch_row($wykonaj)) 
		{
	echo('<dd><A HREF=\"index.php?id='.$wiersz[1].'\">'.$wiersz[0].'</A></dd>');
		}	
		echo '</dl>
					</div>';
	mysql_close($connection);
?>
Miło byłoby gdyby odnośniki te (po kliknięciu odpowiedniego odnośnika) wyświetlały w centrali strony listę odpowiednich tematów.
Sztywny proces wyświetlania postów+tytuł znam, oto kod:


Wyświetl tytuły i posty z kategorii o id 14 i tylko autorstwa użytkownika id 2
<?php
	include"inc/mysql_access.php";
	
	//Wyświetlanie menu
	
	$mysql = "SELECT t.title, p.post FROM posts p JOIN topics t ON p.topic_id = t.tid WHERE t.forum_id IN (11) AND p.author_id IN (2)";
	$wykonaj = @mysql_query($mysql) or die('<br />Niepoprawny wiersz bądź kolumna<br />'.mysql_error());
		echo '<table>';
	while ($wiersz = mysql_fetch_row($wykonaj)) 
		{
      echo '<tr><td style="background: #1d3652; padding: 5px 5px 5px 5px; color: #fff; font-weight: bold;">'. parsebbcode($wiersz[0]) .'</td></tr>' . '<tr><td style="background: #e4ebf2; padding: 5px 5px 5px 5px;">'. parsebbcode($wiersz[1]) .'</td></tr>';
		}	
		echo '</table>';
	mysql_close($connection);
?>

Ja natomiast jestem w takim miejscu, że stoję na środku pola i nie wiem w którą stronę pójść, gdyż i tak wracam w to samo miejsce.
Co mam zrobić aby w centrali strony była wyświetlana zawartość odpowiednich odnośników, pobierać id z odnośnika, zastosować funkcje $_GET, której nie potrafię zastosować w przypadku pętli, jak i funkcji if. Wiem, że można rozpisać drugi kod, tylko, że nie wiem nawet za co się zabrać.


#34 DawPi

    ...a wy Pragnienie™

  • Manager
  • 49517 postów
  • Wersja:IP.Board 3.2.3

Napisano 21 marzec 2010 - 11:53

Nie rozumiem pytania. :D
intermedia - profesjonalne rozwiązania Invision Power Board

#35 Bellum

  • Użytkownik
  • 131 postów
  • Wersja:IP.Board 3.1.4

Napisano 21 marzec 2010 - 13:26

Wyświetl postUżytkownik DawPi dnia 21 marzec 2010 - 11:53 napisał

Nie rozumiem pytania. :D
Bez paniki, to się zdarza najlepszym!
W tym temacie w pierwszym poście opisuję, to co zamierzam zrobić:
Zrobiłem dynamiczne menu tak, że wyświetla subkategorię z kategorii Artykuły, a wygląda to tak:


Załączony plik  wwwmenuitp.jpg   170,92 KB   6 Ilość pobrań
Pierwszy kod odpowiada za wyświetlanie menu, pobiera z bazy danych subkategorie z działu artykuły i wyświetla je w postaci listy (ułożonej identycznie jak na forum) dzięki czemu przypisałem im również ich (ID) - w efekcie otrzymuję menu - pozostało zrobić by działało.
Działało w sposób taki, że jeżeli kliknę odpowiedni link w menu, to w środkowej części strony zostanie wyświetlona lista tematów z tej podkategorii, coś jak z menu w case, switch, GET_id, tyle, że tutaj wszystko jest w bazie danych a nie w plikach.

Drugi kod, odpowiada za sztywne wyświetlanie listy tematów z postami - dodaję go jako wzór, bądź przykład, chodzi o to, że można go zmodyfikować, jeżeli kliknę w menu odpowiedni link, który posiada odpowiednie ID, wtedy zmienna ta jest przekazywana do miejsca gdzie wyświetlany ma być spis tematów, i w efekcie wyświetla ten odpowiedni spis. Najprościej rzec ujmując kliknięcie odpowiedniego odnośnika w menu, który posiada unikalne id, przekazuję jego id do

$mysql = "SELECT t.title, p.post FROM posts p JOIN topics t ON p.topic_id = t.tid WHERE t.forum_id IN (11) AND p.author_id IN (2)";

t.forum_id IN (11)<== miejsca między te 2 nawiasy, dzięki czemu kliknięcie odpowiedniego odnośnika zmienia, tą wartość wklepując w nią odpowiednie ID odnośnika, który został kliknięty. Dzięki czemu wyskakuję lista odpowiednich tematów z odpowiedniego odnośnika.

Użytkownik Bellum edytował ten post 21 marzec 2010 - 13:30


#36 DawPi

    ...a wy Pragnienie™

  • Manager
  • 49517 postów
  • Wersja:IP.Board 3.2.3

Napisano 21 marzec 2010 - 13:38

t.forum_id IN (intval($this->request['fid']))

Oczywiście wyżej musisz tę zmienną sprawdzić, 'zabezpieczyć' etc. A w linku dodawaj zmienną &fid=X.
intermedia - profesjonalne rozwiązania Invision Power Board

#37 Bellum

  • Użytkownik
  • 131 postów
  • Wersja:IP.Board 3.1.4

Napisano 21 marzec 2010 - 14:17

Wyświetl postUżytkownik DawPi dnia 21 marzec 2010 - 13:38 napisał

t.forum_id IN (intval($this->request['fid']))

Oczywiście wyżej musisz tę zmienną sprawdzić, 'zabezpieczyć' etc. A w linku dodawaj zmienną &fid=X.
A mogę prosić o starszą wersję, gdyż w tym przypadku wyskakuję mi błąd:
Fatal error: Using $this when not in object context in D:\Program Files\WebServ\httpd\db\index.php on line 27
Prosiłbym coś w kierunku bez $this
Skrypt menu.php wygląda tak(poniżej) i zaznaczam, że jest on includowany do index.php:
Zmiany, to:

echo('<dd><A HREF="index.php?&fid='.$wiersz[1].'">'.$wiersz[0].'</A></dd>');
Wiersz[1] odpowiada za przydzielanie subkategorii ich własnemu ID.
<?php
	//Baza danych
	
	include"inc/mysql_access.php";
	
	//Wyświetlanie menu
	
	$mysql = "SELECT name, id FROM forums WHERE parent_id IN (4) ORDER BY position ASC";
	$wykonaj = @mysql_query($mysql) or die('<br />Niepoprawny wiersz bądź kolumna<br />'.mysql_error());
	echo '<div id="nav">
			<dl>
				<dt>Kategorie</dt>';
	while ($wiersz = mysql_fetch_row($wykonaj)) 
		{
	echo('<dd><A HREF="index.php?&fid='.$wiersz[1].'">'.$wiersz[0].'</A></dd>');
		}	
		echo '</dl>
					</div>';
	mysql_close($connection);
?>
W index.php umieściłem następujący kod:
Zmiany, to:

$mysql = "SELECT t.title, p.post FROM posts p JOIN topics t ON p.topic_id = t.tid WHERE t.forum_id IN (intval($this->request['fid'])) AND p.author_id IN (2)";
<?php
	include"inc/mysql_access.php";
	
	//Wyświetlanie menu
	
	$mysql = "SELECT t.title, p.post FROM posts p JOIN topics t ON p.topic_id = t.tid WHERE t.forum_id IN (intval($this->request['fid'])) AND p.author_id IN (2)";
	$wykonaj = @mysql_query($mysql) or die('<br />Niepoprawny wiersz bądź kolumna<br />'.mysql_error());
		echo '<table>';
	while ($wiersz = mysql_fetch_row($wykonaj)) 
		{
      echo '<tr><td style="background: #1d3652; padding: 5px 5px 5px 5px; color: #fff; font-weight: bold;">'. parsebbcode($wiersz[0]) .'</td></tr>' . '<tr><td style="background: #e4ebf2; padding: 5px 5px 5px 5px;">'. parsebbcode($wiersz[1]) .'</td></tr>';
		}	
		echo '</table>';
	mysql_close($connection);
?>


#38 DawPi

    ...a wy Pragnienie™

  • Manager
  • 49517 postów
  • Wersja:IP.Board 3.2.3

Napisano 21 marzec 2010 - 14:30

t.forum_id IN (intval($_GET['fid']))

:D
intermedia - profesjonalne rozwiązania Invision Power Board

#39 Bellum

  • Użytkownik
  • 131 postów
  • Wersja:IP.Board 3.1.4

Napisano 21 marzec 2010 - 14:33

Wyświetl postUżytkownik DawPi dnia 21 marzec 2010 - 14:30 napisał

t.forum_id IN (intval($_GET['fid']))

:D
Już tak próbowałem i dostaję błąd:
Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in D:\Program Files\WebServ\httpd\db\index.php on line 27
:D

#40 DawPi

    ...a wy Pragnienie™

  • Manager
  • 49517 postów
  • Wersja:IP.Board 3.2.3

Napisano 21 marzec 2010 - 14:47

Pokaż cały kod.
intermedia - profesjonalne rozwiązania Invision Power Board

#41 Bellum

  • Użytkownik
  • 131 postów
  • Wersja:IP.Board 3.1.4

Napisano 21 marzec 2010 - 14:52

Wyświetl postUżytkownik DawPi dnia 21 marzec 2010 - 14:47 napisał

Pokaż cały kod.
index.php
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
	<head>
		<meta http-equiv="content-type" content="text/html; charset=UTF-8">
		<link href="css/scss.css" rel="stylesheet" type="text/css" />		
		<link href="css/niftyCorners.css" rel="stylesheet" type="text/css" />
		<script type="text/javascript" src="js/niftycube.js"></script>
		<script type="text/javascript" src="js/niftyLayout.js"></script>
	</head>
<body>
<div id="logo">Awangarda Niedźwiedzia</div>
<div id="menu">W dniu dzisiejszym nastąpi <a href="#">Terefere</a> mmm niedźwiedź. <-- pasek do informacji 
	</div>

<div id="tpage">tutututututu
	</div>
<?php include_once"inc/menu.php" ?> #### Tu jest includowane to menu#######
<div class="page_header">heheheheh
	</div>
	
<div class="page">
<?php
function parsebbcode($text)
	{
	$array=array(

	'[b]' => '<b>', 

	'[/b]' => '</b>',

	'[i]' => '<i>',

	'[/i]' => '</i>', 

	'[u]' => '<u>',

	'[/u]' => '</u>',

	'[center]' => '<center>',

	'[/center]' => '</center>',

	'[big]' => '<h1>',

	'[/big]' => '</h1>',

	'[nl]' => '<br>',
	
	'[size=(.*?)]' => '<span style="font-size:(.*?)px\">',
	
	'[/size]' => '</span>',
	
		//Akapit
	
	'[indent]' => '<p style="margin: 50px; margin-top: 0px; margin-bottom: 0px;">',	
	'[/indent]' => '</p>',
	
		//Stopka artykułu
	
	'[info]' => '<p style="margin: 50px; margin-top: 0px; margin-bottom: 0px;">', 	
	'[/info]' => '</p>',

	);
	$newtext = str_replace(array_keys($array), array_values($array), $text);
	return $newtext;
	}

	include"inc/mysql_access.php";
	
	//Wyświetlanie artow
	
	$mysql = "SELECT t.title, p.post FROM posts p JOIN topics t ON p.topic_id = t.tid WHERE t.forum_id IN (intval($_GET['fid'])) AND p.author_id IN (2)";
	$wykonaj = @mysql_query($mysql) or die('<br />Niepoprawny wiersz bądź kolumna<br />'.mysql_error());
		echo '<table>';
	while ($wiersz = mysql_fetch_row($wykonaj)) 
		{
      echo '<tr><td style="background: #1d3652; padding: 5px 5px 5px 5px; color: #fff; font-weight: bold;">'. parsebbcode($wiersz[0]) .'</td></tr>' . '<tr><td style="background: #e4ebf2; padding: 5px 5px 5px 5px;">'. parsebbcode($wiersz[1]) .'</td></tr>';
		}	
		echo '</table>';
	mysql_close($connection);
?>
	</div>
	<?php include_once"inc/add_art.php" ?>
	
<?php include_once"inc/footer.php" ?>
oraz menu.php
<?php
	//Baza danych
	
	include"inc/mysql_access.php";
	
	//Wyświetlanie menu
	
	$mysql = "SELECT name, id FROM forums WHERE parent_id IN (4) ORDER BY position ASC";
	$wykonaj = @mysql_query($mysql) or die('<br />Niepoprawny wiersz bądź kolumna<br />'.mysql_error());
	echo '<div id="nav">
			<dl>
				<dt>Kategorie</dt>';
	while ($wiersz = mysql_fetch_row($wykonaj)) 
		{
	echo('<dd><A HREF="index.php?&fid='.$wiersz[1].'">'.$wiersz[0].'</A></dd>');
		}	
		echo '</dl>
					</div>';
	mysql_close($connection);
?>

Użytkownik Bellum edytował ten post 21 marzec 2010 - 15:00


#42 DawPi

    ...a wy Pragnienie™

  • Manager
  • 49517 postów
  • Wersja:IP.Board 3.2.3

Napisano 21 marzec 2010 - 15:13

Ojojo :D
WHERE t.forum_id IN (intval($_GET['fid']))
Zamień na:
WHERE t.forum_id IN (" . intval($_GET['fid']) . ")

Nie myślisz. :D :D
intermedia - profesjonalne rozwiązania Invision Power Board

#43 Bellum

  • Użytkownik
  • 131 postów
  • Wersja:IP.Board 3.1.4

Napisano 21 marzec 2010 - 15:25

Wyświetl postUżytkownik DawPi dnia 21 marzec 2010 - 15:13 napisał

Ojojo :D
WHERE t.forum_id IN (intval($_GET['fid']))
Zamień na:
WHERE t.forum_id IN (" . intval($_GET['fid']) . ")

Nie myślisz. :D :D
hmm, racja, próbowałem właśnie przez ten czas wkładać to w różnego rodzaju nawiasy itp. by zadziałało (gdyż domyśliłem się, że błąd leży gdzieś w tych ustawieniach), raz zmieniało w centrali na numerki jakie klikałem w menu :P; ale nie wpadłbym na to; że można zastosować tu "." :a:; cóż teraz wiem i jestem bogatszy o tą wiedzę.

Super :D działa wyśmienicie.


#44 DawPi

    ...a wy Pragnienie™

  • Manager
  • 49517 postów
  • Wersja:IP.Board 3.2.3

Napisano 21 marzec 2010 - 15:56

Wszystko jasne i temat wyczerpany? :D
intermedia - profesjonalne rozwiązania Invision Power Board

#45 Bellum

  • Użytkownik
  • 131 postów
  • Wersja:IP.Board 3.1.4

Napisano 21 marzec 2010 - 16:31

Wyświetl postUżytkownik DawPi dnia 21 marzec 2010 - 15:56 napisał

Wszystko jasne i temat wyczerpany? :D
Cóż, nie :D

Chciałbym teraz, dodać parametr if, else by po wejściu na stronę wyświetliła się domyślnie strona startowa, zrobiłem tak:
	include"inc/mysql_access.php";
	
	//Wyświetlanie artów
	
	$mysql = "SELECT t.title, p.post FROM posts p JOIN topics t ON p.topic_id = t.tid WHERE t.forum_id IN (" . intval($_GET['fid']) . ") AND p.author_id IN (2)";
	$wykonaj = @mysql_query($mysql) or die('<br />Niepoprawny wiersz bądź kolumna<br />'.mysql_error());
		echo '<table>';
	while ($wiersz = mysql_fetch_row($wykonaj)) 
		{
		if ($fid > 0) 
		{
		print '<tr><td style="background: #1d3652; padding: 5px 5px 5px 5px; color: #fff; font-weight: bold;">'. parsebbcode($wiersz[0]) .'</td></tr>' . '<tr><td style="background: #e4ebf2; padding: 5px 5px 5px 5px;">'. parsebbcode($wiersz[1]) .'</td></tr>';
		print '</table>';
		}
			else 
			{
			include"page/kolory.php";
			}			
		
}
	mysql_close($connection);
?>
	</div>
Jeżeli $fid, jest większe od 0, to wyświetla odpowiednie artykuły. Chciałbym natomiast by jeżeli $fid nie został wybrany (czyli wszedłem sobie po prostu na moją stronę i nie klikałem w menu), to wyświetla includowaną stronę. Wiem, że chodzi o elseif jednak nie wiem jaki nadać mu parametr.





Użytkownicy przeglądający ten temat: 1

0 użytkowników, 1 gości, 0 anonimowych