Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Tieto kannasta ulos PHP:lla

uralrane [14.01.2007 22:53:47]

#

Pyöritän keskustelufoorumia (MySQL -pohjainen) ja nyt lisäsin eri kantaan MySQL-pohjaisen chatin, phpMyChatin. En ala integroimaan noita, mutta ihan mukava olisi jos foorumin etusivulta näkisi jos joku on samaan aikaan chatissa.

Aloittelijana ja huonosti php:ta ymmärtävänä olen koettanut ratkaista ongelmaa yritys-erehdys -menetelmällä. Laihoin tuloksin. Chatista on chatin etusivulle näyttö joka ilmaisee chatin kirjautuneet. Ajattelin että tuo sama php voisi siirtää tiedon myös foorumille. Foorumin etusivuhan on php joka muotoillaan templatella. Lisäksi on etusivun uutisfader jolle kelpaisi html.

Olen parhaan ymmärrykseni mukaan tonkinut koodia ja paras arvaukseni on tässä.

Chatin etusivua:

<p class="ChatP1">
Viestit ovat näkyvissä 12 tuntia ja nimet 4 minuuttia ...</p>
<p class="ChatP1">Tällä hetkellä chatissa on <a href="http://terveyskeskus.net/chat/chat/users_popupL.php?From=../index.php&amp;L=finnish" class="ChatLink" onclick="users_popup(); return false" target="_top">0 käyttäjää</a> .</p>


Ja se php:

<?php
// ** Build users list **
if(isset($NbUsers) && $NbUsers > 0)
{
	if($DbLink->query("SELECT DISTINCT room FROM ".C_MSG_TBL." WHERE type = 1 ORDER BY room"))
	{
		if($DbLink->num_rows() > 0)
		{
			$Users = new DB;
			while(list($Other) = $DbLink->next_record())
			{
				if($Users->query("SELECT username, latin1, status FROM ".C_USR_TBL." WHERE room = '".addslashes($Other)."' ORDER BY username"))
				{
					if($Users->num_rows() > 0)
					{
						echo("<B>".htmlspecialchars($Other)."</B><SPAN CLASS=\"small\"><BDO dir=\"${textDirection}\"></BDO>&nbsp;(".$Users->num_rows().")</SPAN><BR>");
						while(list($Username,$Latin1,$status) = $Users->next_record())
						{
							echo("-&nbsp;".special_char($Username,$Latin1,$status)."<BR>");
						}
					}
				}
				$Users->clean_results();
				echo("</P><P>");
			}
		}
	}
}
else
{
	echo("<CENTER>".L_NO_USER."</CENTER>");
}

$DbLink->close();
?>
</P>

Olen koettanut apinoida tuota html:ää jotta saisin saman tiedon foorumin etusivulle, mutta jokin tökkii. Olen tehnyt myös tyhjän sivun josta yritin saada tuon tiedon ulos. Siis riittäisi jos etusivulle saisi tiedon: chatissa on loggautuneena x -käyttäjää. Olenko edes jäljillä?

Tietty tuohon voi tehdä oman php -tiedoston.. mutta ajattelin että jos sama tieto kahteen paikkaan onnistuisi?

ajv [15.01.2007 13:21:17]

#

uralrane kirjoitti:

Siis riittäisi jos etusivulle saisi tiedon: chatissa on loggautuneena x -käyttäjää.

Mikäli nyt oikein tuota koodia tulkitsin, niin tuo pitäisi onnistua simppelillä kyselyllä:

<?php
$sql = "SELECT COUNT(*) AS LoggedUsers FROM ".C_USR_TBL;
//ajat kyselyn kantaan ja tulostat, yksinkertaisimmillaan näin:
//kommentoi "or die..." pois kun saat toimimaan
$result = mysql_query($sql) or die(mysql_error(). " SQL: ".$sql);
list($loggedUsers) = mysql_fetch_array($result);
echo "chatissa on loggautuneena  ".$loggedUsers." käyttäjää.";
?>

uralrane [15.01.2007 19:43:41]

#

Tyssäsi siihen että tuo kyseinen php käyttää toista filua, joka jakaa oikeudet (eli salasana, käyttäjä etc.).

Luin jopa Putkan php-opasta. :)

Polku ei ole kaiketi kunnossa.

Lisäsin tuohon esimerkin kyselyyn rivit jotka antavat ne oikeudet.

Voisin tietty floodata koko php:n tänne, mutta lieneekö tuo suotavaa? On parisataa riviä käsittävä eepos. Tietty voisin linkittää, mutta oikeastihan parasta olisi oppia itse käsittämään miten homma menee.

Warning: require(./home/xxxx/public_html/chat/config/config.lib.php) [function.require]: failed to open stream: No such file or directory in /home/xxxx/public_html/chat/koe.php on line 14

Fatal error: require() [function.require]: Failed opening required './home/xxxx/public_html/chat/config/config.lib.php' (include_path='.:/usr/lib/php:/usr/local/lib/php­') in /home/xxxx/public_html/chat/koe.php on line 14

ajv [16.01.2007 08:35:16]

#

Ainakin sulla on ylimääräinen piste tuossa polun alussa. Toiseksi systeemisi todennäköisesti hoitaa tietokanta-kommunikoinnin jonkun luokan kautta, jolloin asia ei ehkä alottelijalle enää ole niin yksiselitteinen. Pastea koodi vaikka Mureakuhan pastebiniin, voin yrittää jossain vaiheessa katsoa sitä hieman.

uralrane [16.01.2007 18:57:43]

#

Öh. Taidan tästä joutua putkaan, mutta tunnustan silti. Olen syyllinen.

Kun tutustuin kunnolla aineistoon (suosittelen muillekin) löytyi chatista template josta tieto loggautuneista lähtee ulospäin vaivatta. Jopa minä sain sen toimimaan. Tosin muotoilu vielä puuttuu http://terveyskeskus.net/chat/paikalla.php

Mutta jos siirrän nuo rivit sinne foorumin hakemistoon, saan virheilmoituksen kuten yllä. Tällä kertaa ilman ylimääräisiä pisteitä.

Foorumi sijaitsee (public_html)/forum ja chatti samaan tapaan (public_html)/chat -hakemistossa.

Voinko hakea tuon loggautuneiden tiedon jollain html-lauseella foorumin uutisfaderiin? http://terveyskeskus.net/forum/ Siihen kun kelpaa html. Tai sitten polku kuntoon ja upottaa tuo allaoleva vaikkapa boardindex.template.php sisälle.

<?php

// polku chatille
$ChatPath = "chat/";

// HTML link to launch the chat (used by constants below)
$ChatLaunch = "<A HREF=\"phpMyChat.php\" TARGET=\"_self\">chatissa</A>";

$ShowPrivate = "0";     // 1 to display users even if they are in a private room,
						// 0 else

$DisplayUsers = "1";    // 0 to display only the number of connected users
                        // 1 to display a list of users

define("NB_USERS_IN","käyttäjää on ".$ChatLaunch." tällä hetkellä.");	// used if $DisplayUsers = 0
define("USERS_LOGIN","Käyttäjä ".$ChatLaunch." tällä hetkellä:");			// used if $DisplayUsers = 1
define("NO_USER","Kukaan ei ole ".$ChatLaunch." tällä hetkellä.");

require("./${ChatPath}/lib/connected_users.lib.php");
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>

<HEAD>
<TITLE>Otsikko</TITLE>
</HEAD>

<BODY>

		<?php
		display_connected($ShowPrivate,$DisplayUsers,($DisplayUsers ? USERS_LOGIN : NB_USERS_IN),NO_USER);
		?>
	</TD>
</TR>
</TABLE>
</BODY>

</HTML>

uralrane [20.01.2007 16:08:36]

#

Ongelma ratkesi siten, että vaihdoin chatin sellaiseen mihin on olemassa valmis integraatio. Jäi kyllä vaivaamaan tuo hakemistopolkujuttu. Case closed.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta