Temos pavadinimas: WordPress, Shopify ir PHPFusion programuotojų bendruomenė :: Topo sudarymas

Parašė Todamach· 2011 Vas. 2 15:02:18
#1

Man reikia pagal vieną "fieldą" fusion_users lentelėj, sudaryti top 10. Sukūriau fieldą user_taskai:

dbquery("SELECT * FROM ".DB_USERS." GROUP BY user_id ORDER BY user_taskai DESC LIMIT 0 , 10");

user_taskai type parinkau varchar(4). Pasakau, nes, nežinau, gali būt blogai.

Aš kadangi visiškai žalias ant php, tai man nelabai ir gaunasi. Aš noriu, kad išrikiuotų top 10 vartotojų su top 10 taškų.

Būčiau žiauriai dėkingas už pagalbą.

Parašė Gugiss· 2011 Vas. 2 16:02:30
#2

user_taskai padaryk int
kam tas group by? Be to gal pasakysi kokia klaida rodo? Ir ydek cia visa koda ne tik uzklausa

Redagavo Gugiss· 2011 Vas. 2 16:02:37

Parašė Todamach· 2011 Vas. 2 16:02:19
#3

group by likęs, nes dariau iš top_shouters_panel panelės. labai fainai atvaizduoja, todėl pasidariau ir top_posters_panel, sunku nebuvo. bet dabar čia truputį kitoks variantas.


<?php
/*-------------------------------------------------------+
| <span style="border-bottom: 1px dotted black;">PHP</span>-Fusion Content Management System
| Copyright © 2002 - 2008 Nick Jones
| <a href='http://www.php-fusion.co.uk/' target='_blank'><span style='color:005C5B'>http://www.php-fusion.co.uk/</span></a>
+--------------------------------------------------------+
| Filename: new_infusion_panel.php
| Author: INSERT NAME HERE
+--------------------------------------------------------+
| This program is released as free software under the
| Affero GPL license. You can redistribute it and/or
| modify it under the terms of this license which you
| can read by viewing the included agpl.txt or online
| at <a href='http://www.gnu.org/licenses/agpl.html.' target='_blank'><span style='color:005C5B'>www.gnu.org/licenses/agpl.html.</span></a> Removal of this
| copyright header is strictly prohibited without
| written permission from the original author(s).
+--------------------------------------------------------*/
if (!defined("IN_FUSION")) { die("Access Denied"); }
 
if (file_exists(INFUSIONS."top_pk/locale/".$settings['locale'].".php")) {
	include INFUSIONS."top_pk/locale/".$settings['locale'].".php";
} else {
	include INFUSIONS."top_pk/locale/English.php";
}
 
$shoutQuery = dbquery("SELECT * FROM ".DB_USERS." GROUP BY user_id ORDER BY user_taskai DESC LIMIT 0 , 10");
openside($locale['tsp_001']);
echo "<table width='100%' cellpadding='0' cellspacing='1' class='tbl-border'>\n<tr class='tbl2' align='center'>\n";
echo "<td width='10'><span class='small'><strong>".$locale['tsp_002']."</strong></span></td>\n";
echo "<td width='50'><span class='small'><strong>".$locale['tsp_003']."</strong></span></td>\n";
echo "<td width='50'><span class='small'><strong>".$locale['tsp_004']."</strong></span></td>\n";
echo "</tr>\n";
$count = 1;
$i = 0;
while($shoutData = dbarray($shoutQuery)) {
	if ($shoutData['user_taskai'] != '0') {
		$shoutuserQuery = dbquery("SELECT * FROM ".DB_USERS." WHERE user_id='".$shoutData['user_taskai']."'");
		while ($shoutuserData=dbarray($shoutuserQuery)) {
			$i % 2 == 0 ? $rowclass="tbl1" : $rowclass="tbl2";
			echo "<tr class='".$rowclass."'>\n";
			echo "<td><span class='small'><strong>".$count."</strong></span></td>\n";
			echo "<td>&nbsp;<span class='small'><a href='".BASEDIR."profile.php?lookup=".$shoutuserData['user_id']."'>".$shoutuserData['user_name']."</a></span></td>\n";
			echo "<td><center><span class='small'>".$shoutData['count(*)']."</center></span></td>\n";
			echo "</tr>\n";
			$i++;
			$count++;
		}//while ($user=db
	} else {
		echo "<tr class='tbl1'>\n";
		echo "<td colspan='3'><span class='small'><strong>".$locale['tsp_005']."</strong></span></td>\n";
		echo "</tr>\n";
	}
 
}
echo "</table>\n";
closeside();
?>


klaidos:

Notice: Undefined index: count(*) in /home/todamach/domains/rsbots.lt/public_html/administration/custom_pages.php(88) : eval()'d code on line 67

Notice: Undefined index: count(*) in /home/todamach/domains/rsbots.lt/public_html/administration/custom_pages.php(88) : eval()'d code on line 67

Notice: Undefined index: count(*) in /home/todamach/domains/rsbots.lt/public_html/administration/custom_pages.php(88) : eval()'d code on line 67

Notice: Undefined index: count(*) in /home/todamach/domains/rsbots.lt/public_html/administration/custom_pages.php(88) : eval()'d code on line 67
o po apačia atvaizduoja lentelę su 4 pirmais vartotojais pagal id, po jų eina dar 6 tuščios eilutės su 0 prie #.

Parašė Todamach· 2011 Vas. 2 17:02:01
#4

Padėkit, prašau, labai reikia.

Parašė Todamach· 2011 Vas. 2 18:02:47
#5


openside(TOP);
$result = dbquery("SELECT user_name, user_id, user_srank FROM ".$db_prefix."users ORDER BY user_srank DESC LIMIT 0,5");
 
while ($data = dbarray($result)) {
	echo "<table width='100%' cellpadding='0' cellspacing='0' class=''>
		<tr><td class='small' align='left'><a href='".BASEDIR."profile.php?lookup=".$data['user_id']."'>".$data['user_name']."</a>
		<td class='small2' align='right'>".$data['user_srank']."</td></tr>";
}
 
echo '</table>';
closeside();


Pasidariau va taip, bet ant mano dizaino, labai negražiai atvaizduoja.

Kas galėtų padaryt vat va taip:



čia naudoja tbl1 ir tbl2 iš .css, tai man ir reiktų su tais # Narys ir šiuo atveju Taškai.
Tam +11 tikrai nepagailėčiau.

Būčiau žiauriai dėkingas c|

Parašė Sharkie· 2011 Vas. 2 22:02:32
#6

Nepagavau. User_srank tai čia kas, taškai?

Parašė Sharkie· 2011 Vas. 2 22:02:51
#7

Nesupratau, user_srank tai čia kas, taškai?

Parašė Todamach· 2011 Vas. 3 01:02:47
#8

taip. Dabar, su tuo panelės kodu, kurį parašiau viršuj atrodo taip:



Man reikia, taip gražiai įsiformintų kaip čia:



Ir šitos Forumo Top panelės kodas, jeigu padės:

<?php
/*-------------------------------------------------------+
| <span style="border-bottom: 1px dotted black;">PHP</span>-Fusion Content Management System
| Copyright © 2002 - 2008 Nick Jones
| <a href='http://www.php-fusion.co.uk/' target='_blank'><span style='color:005C5B'>http://www.php-fusion.co.uk/</span></a>
+--------------------------------------------------------+
| Filename: new_infusion_panel.php
| Author: INSERT NAME HERE
+--------------------------------------------------------+
| This program is released as free software under the
| Affero GPL license. You can redistribute it and/or
| modify it under the terms of this license which you
| can read by viewing the included agpl.txt or online
| at <a href='http://www.gnu.org/licenses/agpl.html.' target='_blank'><span style='color:005C5B'>www.gnu.org/licenses/agpl.html.</span></a> Removal of this
| copyright header is strictly prohibited without
| written permission from the original author(s).
+--------------------------------------------------------*/
if (!defined("IN_FUSION")) { die("Access Denied"); }
 
if (file_exists(INFUSIONS."top_shouters_panel/locale/".$settings['locale'].".php")) {
	include INFUSIONS."top_shouters_panel/locale/".$settings['locale'].".php";
} else {
	include INFUSIONS."top_shouters_panel/locale/English.php";
}
 
$shoutQuery = dbquery("SELECT shout_name, count(*) FROM ".DB_SHOUTBOX." GROUP BY shout_name ORDER BY `count(*)` DESC LIMIT 0 , 10");
openside($locale['tsp_001']);
echo "<table width='100%' cellpadding='0' cellspacing='1' class='tbl-border'>\n<tr class='tbl2' align='center'>\n";
echo "<td width='10'><span class='small'><strong>".$locale['tsp_002']."</strong></span></td>\n";
echo "<td width='50'><span class='small'><strong>".$locale['tsp_003']."</strong></span></td>\n";
echo "<td width='50'><span class='small'><strong>".$locale['tsp_004']."</strong></span></td>\n";
echo "</tr>\n";
$count = 1;
$i = 0;
while($shoutData = dbarray($shoutQuery)) {
	if ($shoutData['shout_name'] != '0') {
		$shoutuserQuery = dbquery("SELECT * FROM ".DB_USERS." WHERE user_id='".$shoutData['shout_name']."'");
		while ($shoutuserData=dbarray($shoutuserQuery)) {
			$i % 2 == 0 ? $rowclass="tbl1" : $rowclass="tbl2";
			echo "<tr class='".$rowclass."'>\n";
			echo "<td><span class='small'><strong>".$count."</strong></span></td>\n";
			echo "<td>&nbsp;<span class='small'><a href='".BASEDIR."profile.php?lookup=".$shoutuserData['user_id']."'>".$shoutuserData['user_name']."</a></span></td>\n";
			echo "<td><center><span class='small'>".$shoutData['count(*)']."</center></span></td>\n";
			echo "</tr>\n";
			$i++;
			$count++;
		}//while ($user=db
	} else {
		echo "<tr class='tbl1'>\n";
		echo "<td colspan='3'><span class='small'><strong>".$locale['tsp_005']."</strong></span></td>\n";
		echo "</tr>\n";
	}
 
}
echo "</table>\n";
closeside();
?>

Parašė marqs· 2011 Vas. 3 02:02:32
#9

Bandyk:


openside(TOP);
 
$result = dbquery("SELECT user_name, user_id, user_srank FROM ".$db_prefix."users ORDER BY user_srank DESC LIMIT 0,5");
 
 echo "<table width='100%' cellpadding='0' cellspacing='0' style='border: 1px solid #000'>";
 echo "<tr><td align='center' style='background-color:#d2af5c;'>Narys</td><td align='center' style='background-color:#d2af5c;'>Taškai</td></tr>";
 
while ($data = dbarray($result)) {
 
	echo "<tr><td style='background-color:#e1c175;' align='center'><a href='".BASEDIR."profile.php?lookup=".$data['user_id']."'>".$data['user_name']."</a></td>
		<td style='background-color:#e1c175;' align='center'>".$data['user_srank']."</td></tr>";
 
}
 
 
 
echo "</table>";
 
closeside();

Parašė Todamach· 2011 Vas. 3 06:02:49
#10

Labai ačiū, kad padedi, bet gaunasi truputį kitaip nei man reikia:


Parašė etr· 2011 Vas. 3 08:02:07
#11

table nuimkit jam kas, arba vakare pats galesiu, jei niekas iki tols nepades, dabar skubu.

Parašė Todamach· 2011 Vas. 3 12:02:24
#12

Ok, lauksiu vakaro, jeigu iki tol niekas nepadės ;)

Parašė Todamach· 2011 Vas. 3 20:02:50
#13

Na, tai kaip, atsiras kas galės padėti?

Parašė marqs· 2011 Vas. 3 23:02:27
#14

Tau reikia dar kad atvaizduotų kelinta vieta?

Bandyk šitą:

openside(TOP);
 
$result = dbquery("SELECT user_name, user_id, user_srank FROM ".$db_prefix."users ORDER BY user_srank DESC LIMIT 0,5"); 
 
 echo "<table width='100%' cellpadding='0' cellspacing='1' class='tbl-border'>";
 
 echo "<tr class='tbl2' align='center'><td width='10'><span class='small'>Narys</span></td><td width='10'><span class='small'>Taškai</span></td></tr>";
 
while ($data = dbarray($result)) {
 
 
	echo "<tr class='tbl1'><td><span class='small'><a href='".BASEDIR."profile.php?lookup=".$data['user_id']."'>".$data['user_name']."</a></td>
 
		<td><span class='small'>".$data['user_srank']."</span></td></tr>";
       } else {
 
	echo "<tr class='tbl2'><td><span class='small'><a href='".BASEDIR."profile.php?lookup=".$data['user_id']."'>".$data['user_name']."</a></td>		<td><span class='small'>".$data['user_srank']."</span></td></tr>";
                }
echo "</table>";
 
 
 
closeside();

Redagavo marqs· 2011 Vas. 4 00:02:09

Parašė Todamach· 2011 Vas. 4 13:02:41
#15

Taip man reikia, ir kad kelitna vieta atvaizduotų, ir kad 1 eilutė būtų tbl1 kita tbl2, po to vėl tbl1, tbl2. Nu taip pat kaip ta kur rodžiau.

O šitą kai įmetu, meta tokį erorą:
Parse error: syntax error, unexpected T_ELSE in /home/todamach/domains/rsbots.lt/public_html/administration/panel_editor.php(128) : eval()'d code on line 26

Parašė marqs· 2011 Vas. 4 14:02:51
#16

Tai pasikoreguok iš kitų turimų panelių, pvz: forumo top 10, juk tereikia užklausas ir atvaizdavimus pakeist.

Parašė Todamach· 2011 Vas. 4 14:02:03
#17

Tai va to jūsų ir prašau. Toj forumo top panelėj, kažkaip labai sudėtingai skaičiuoja postus, ir man tai yra per sudėtinga.

Parašė avice· 2011 Vas. 4 16:02:50
#18

gal taip:

openside(TOP);
$result = dbquery("SELECT user_name, user_id, user_srank FROM ".$db_prefix."users ORDER BY user_srank DESC LIMIT 0,5");
echo "<table width='100%' cellpadding='0' cellspacing='0' style='border: 1px solid #000'>";
 echo "<tr><td align='center' class='tbl1'>Narys</td><td align='center' class='tbl1'>Taškai</td></tr>";
$i = 0;
while ($data = dbarray($result)) {
$i++;
$b = $i/2;
echo "<tr><td"; 
if (is_int($b)) {
echo "class='tlb1'";
}else{
echo "class='tbl2'";
}
echo "align='center'><a href='".BASEDIR."profile.php?lookup=".$data['user_id']."'>".$data['user_name']."</a></td>
<td";
if (is_int($b)) {
echo "class='tlb1'";
}else{
echo "class='tbl2'";
}
echo "align='center'>".$data['user_srank']."</td></tr>";
}
 
echo "</table>";
closeside();

Kitokiu budu as nezinau ...

Parašė Todamach· 2011 Vas. 4 17:02:32
#19

gaunasi taip:



be to, būdas kaip yra parodytas yra pardoytas 5 poste. Tik aš nemoku pritaikyt.

Parašė avice· 2011 Vas. 4 17:02:11
#20

padaryk html normalia lentele tada pameginsiu padaryt

Parašė Todamach· 2011 Vas. 4 17:02:45
#21

Normali lentelė padaryta čia:

openside(TOP);
 
 
 
$result = dbquery("SELECT user_name, user_id, user_srank FROM ".$db_prefix."users ORDER BY user_srank DESC LIMIT 0,5"); 
 
 
 
 echo "<table width='100%' cellpadding='0' cellspacing='1' class='tbl-border'>";
 
 
 
 echo "<tr class='tbl2' align='center'><td width='10'><span class='small'>Narys</span></td><td width='10'><span class='small'>Taškai</span></td></tr>";
 
 
 
while ($data = dbarray($result)) {
 
 
 
 
 
	echo "<tr class='tbl1'><td><span class='small'><a href='".BASEDIR."profile.php?lookup=".$data['user_id']."'>".$data['user_name']."</a></td>
 
 
 
		<td><span class='small'>".$data['user_srank']."</span></td></tr>";
 
       } else {
 
 
 
	echo "<tr class='tbl2'><td><span class='small'><a href='".BASEDIR."profile.php?lookup=".$data['user_id']."'>".$data['user_name']."</a></td>		<td><span class='small'>".$data['user_srank']."</span></td></tr>";
 
                }
 
echo "</table>";
 
 
 
 
 
 
 
closeside();


atrodo, kaip rodžiau 7 poste.

Parašė avice· 2011 Vas. 4 18:02:10
#22


openside(TOP);
$result = dbquery("SELECT user_name, user_id, user_srank FROM ".$db_prefix."users ORDER BY user_srank DESC LIMIT 0,5");
echo "<table width='100%' cellpadding='0' cellspacing='1' class='tbl-border'>
<tr class='tbl2' align='center'>
  <td width='18'><div align='center'><strong>#</strong></div></td><td width='373'><div align='center'><span class='small'><strong>Narys</strong></span></div></td>
  <td width='329'><div align='center'><span class='small'><strong>Ta&scaron;kai</strong></span></div></td>
</tr>";
$i = 0;
while ($data = dbarray($result)) {
$i++;
$b = $i/2;
if (is_int($b)) {
$class = "tlb1";
}else{
$class = "tbl2";
}
echo "<tr class='tbl1'>
  <td><strong>".$i."</strong></td>
<td>".$data['user_name']."</td>
<td>".$data['user_srank']."</td>
</tr>";
}
echo "</table>";
closeside();

nebandziau , bet gal veiks.

Parašė Todamach· 2011 Vas. 4 18:02:02
#23

Labai ačiū. Nevisiškai taip, bet labai panašu. Dar kart dėkui.

Parašė avice· 2011 Vas. 4 18:02:31
#24

vietoj class='tbl1' rasyk class='$class'
cia tam , kad keistusi kas 2 antrame spalva

Parašė Todamach· 2011 Vas. 4 18:02:37
#25

Gaunasi taip, tada:



EDIT: susitaisiau, buvo tlb vietoj tbl parašyta. Dėkui, dabar perfect!

Redagavo Todamach· 2011 Vas. 4 18:02:23

Parašė avice· 2011 Vas. 4 18:02:59
#26

klaida padariau tlb1 tui but tbl1 rodos
cia keisk:

$class = "tlb1";
 
}else{
 
$class = "tbl2";

Redagavo avice· 2011 Vas. 4 18:02:14