PDA

View Full Version : PHP Help with widgets


Amit86
02-26-2010, 06:00 PM
Hey all,
im trying to code something that will echo text and vars into a widgts, while using echo it works but it outputs at the begining of the page instead of inside th wigit it self,
could you try and assit me in altering the code so it would work?

$Hostname = "SERVER";
$Username = "USER";
$Password = "PASS";
$CharacterDatabase = 'characters';
$RealmDatabase = 'realmd';
$WorldDatabase = 'world';
$CharacterDatabaseEncoding = 'utf8';
$toutput='';
$conn = mysql_connect($Hostname, $Username, $Password);

mysql_select_db($CharacterDatabase, $conn);

$sql = "SELECT * FROM `characters` WHERE `online` = 1 ORDER BY `name`";
$result = mysql_query($sql, $conn);

$count = 0;



$realm_db = mysql_connect($Hostname, $Username, $Password);
mysql_select_db($RealmDatabase, $realm_db);
$db_result = mysql_query("SET NAMES $CharacterDatabaseEncoding", $realm_db);

$world_db = mysql_connect($Hostname, $Username, $Password, TRUE);
mysql_select_db($CharacterDatabase, $world_db);
$db_result = mysql_query("SET NAMES $CharacterDatabaseEncoding", $world_db);

$uptime_query = mysql_query("SELECT * FROM $RealmDatabase.`uptime` ORDER BY `starttime` DESC LIMIT 1", $realm_db);
$uptime_results = mysql_fetch_array($uptime_query);
$maxplayers = $uptime_results['maxplayers'];
if ($uptime_results['uptime'] > 86400) { //days
$uptime = round(($uptime_results['uptime'] / 24 / 60 / 60),2)." ימים";
}
elseif($uptime_results['uptime'] > 3600) { //hours
$uptime = round(($uptime_results['uptime'] / 60 / 60),2)." שעות";
}
else { //minutes
$uptime = round(($uptime_results['uptime'] / 60),2)." דקות";
}

$player_query = mysql_query("SELECT (SELECT COUNT(guid) FROM $CharacterDatabase.`characters` WHERE race IN(2,5,6,8,10) AND `online`='1') as horde, (SELECT COUNT(guid) FROM $CharacterDatabase.`characters` WHERE race IN(1,3,4,7,11) AND `online`='1') as alliance FROM $CharacterDatabase.`characters`", $world_db);
$player_results = mysql_fetch_array($player_query);
$horde = $player_results['horde'];
$alliance = $player_results['alliance'];
$total = $horde + $alliance;

echo "<table width=\"100%\" border=0 cellspacing=0 cellpadding=3 class=\"alt2\">
<tr>
<td class=\"alt2\">פעילות:</td>
<td class=\"alt2\">$uptime</td>
<tr>
<td class=\"alt2\">מחוברים:</td>
<td class=\"alt2\">$total</td>
</tr>
</tr>
<tr>
<td class=\"alt2\">אלליאנס:</td>
<td class=\"alt2\">$alliance</td>
</tr>
<tr>
<td class=\"alt2\">הורד:</td>
<td class=\"alt2\">$horde</td>
</tr>
</table>";

Lynne
02-26-2010, 06:17 PM
You cannot use echo in the widget. You need to assign all your output to the variable $output.

Amit86
02-26-2010, 11:43 PM
so how do i assign those to a var and still keep the things i want to disaply inside dynamic?

Lynne
02-27-2010, 03:18 AM
Not sure what you mean - like this?

$output .= "<td class=\"alt2\">".$uptime."</td>";

Vaupell
02-27-2010, 09:38 AM
well i would if i was you 2 ways i see this done

1)
create all the var's in the widget as php then register them into a array
and instead of using the default template, i would create my own then
use that to display the var's.

2)
create all the output as lynne said, and you add each line one at a time
then in the end you assign it all to output then it displays in the default template
but it takes ALOT of repetetive codeing.

Personally i do both, but i made the WoW recruitment widget i used option 2,
i created it all in php in the widget then at the end i turned it over to $output
then it will get rendered on default template, but it requires all formatting to be
done in php before $output.

-----

Maybe you should download some widgets first and see how they are buildt..
There are several doing what your trying to achive there, just using other data
than wow online players..

Amit86
02-27-2010, 10:05 AM
Thanks!
i was able to use $output and it worked perfect!