Seite 1 von 3

[Erledigt] Bewertung von nickpage mod in Nickpageliste

Verfasst: 09.10.2006 23:39
von mark2
Ich habe auf meinem testboard die nickpage.php und header.tpl ( also die nickpageheader ) so weit zusammengekürzt dass nur noch die Anzeige der Bewertung übrig geblieben ist. Die unten stehen codes laufen ohne Fehler und die Bewertung wird richtig angezeigt.
Wenn ich nun den php code in meine andere Datei Einbau funktioniert die Anzeige der Bewertung nicht. Bekomme aber auch keine Fehlermeldung.
Ich werde aus der Sache einfach nicht schlau.
Es gibt in meiner Datenbank schon mal gar keinen VOTES_TABEL dennoch findet er seine Daten mit den Original codes. Warum werden die Daten dann nicht gefunden wenn ich die exakten codes in eine andere php rein schreibe ?
Von welchem Table und Spalte läd er sich die Daten denn rein wenn keine klare Angabe gemacht wurde?

nickpage.php

Code: Alles auswählen

<?
define('IN_PHPBB', true);
$phpbb_root_path = './';
include($phpbb_root_path . 'extension.inc');
include($phpbb_root_path . 'common.'.$phpEx);
//
// Start session management
//
$userdata = session_pagestart($user_ip, PAGE_NICKPAGE);
init_userprefs($userdata);
//
// End session management
//
//template laden
//
$template->set_filenames(array('header' => '../nickpage/header.tpl',));
//
//Anzeige der nickpage
//
{
	//Userid
	$sql = "SELECT user_id FROM ".USERS_TABLE." WHERE username = '".$HTTP_GET_VARS['user']."'";
	if( !($result = $db->sql_query($sql)) )
         {
		message_die(GENERAL_ERROR, 'Konnte UID nicht bestimmen!<br><br>Could not get user id!', '', __LINE__, __FILE__, $sql);
	}
	$row = $db->sql_fetchrow($result);
	{
		$uid = $row['user_id'];
		}
	//
	//Bewertung der nickpage
	$sql = "SELECT SUM(c.vote) AS vote, COUNT(d.uid) AS votes FROM ".VOTES_TABLE." AS c, ".VOTES_TABLE." AS d WHERE c.uid='".$uid."' AND d.uid='".$uid."'";
	if( !($result = $db->sql_query($sql)) )
	{
		message_die(GENERAL_ERROR, 'Konnte Vote Ergebnisse nicht auslesen!<br><br>Could not querrie voting!', '', __LINE__, __FILE__, $sql);
	}
	$row = $db->sql_fetchrow($result);
	$votes = $row['votes'];
	$faktor = @($row['vote']/$votes);
	if($faktor >= 4.5)
	{
		$votepic = "5.gif";
	}
	elseif($faktor >= 3.5)
	{
		$votepic = "4.gif";
	}
	elseif($faktor >= 2.5)
	{
		$votepic = "3.gif";
	}
	elseif($faktor >= 1.5)
	{
		$votepic = "2.gif";
	}
	elseif($faktor >= 1.0)
	{
		$votepic = "1.gif";
	}
	if($faktor >= 1.0)
	{
		$template->assign_block_vars('Vote_pic',array(
		));
	}
	//Static
	$template->assign_vars(array(
		'Bewertung' => '<img src="templates/nickpage/'.$votepic.'" alt="'.$votes.'  '.$lang['NP_VOTES'].'">',
                 'test1' => $votes,
                 'test2' => $faktor,
	));
	$template -> pparse('header');
	}
?>
/templates/nickpage/header.tpl ( dort wird die Bewetung mit Sternen angezeigt )

Code: Alles auswählen

<table width="650" cellpadding="0" cellspacing="3" align="center" class="forumline">
	<tr>
		<td class="row2" width="100%">
			<table width="100%" cellpadding="3" cellspacing="0">
				<tr>
					<th height="25" nowrap="nowrap" class="thCornerL" width="100%" align="left">{Bewertung}<br>inhalt von Datenabnkspalte votes = {test1}<br>inkalt von variable faktor = {test2}
					</th>
				</tr>
			</table>
					</td>
					<td valign="top" width="*">

Verfasst: 10.10.2006 17:28
von Miriam
Der Alias "VOTES_TABLE" wird in der constants.php aufgelöst. In Deinen Scripten benutzt Du entweder diese Datei oder DU musst den wirklichen Namen der Tabelle hinschreiben.

Verfasst: 10.10.2006 22:35
von mark2
Gut das habe ich gefunden. In der constants.php ist für den .VOTES_TABLE. die Tabelle NICKPAGEVOTES hinterlegt. Diese gibt es.
die Tabelle NICKPAGEVOTES hat drei Spalten
uid / von / vote
Wenn ich in der constants.php den Eintrag lösche kommt ein Fehler dass der Table nicht existiert. Also passt die Anweisung .VOTES_TEBLE. in meiner neuen php.
Der Table wird also gefunden. Dennoch werden keine Daten ausgelesen. Ist alles Null.
Kann es sein dass ich nicht festgelegt habe welcher Eintrag welchem user zugeteilt ist ?

Verfasst: 10.10.2006 23:24
von Miriam
mark2 hat geschrieben:Dennoch werden keine Daten ausgelesen.
Können keine Daten ausgelesen werden, weil keine da sind?
mark2 hat geschrieben:Ist alles Null.
Ist das Ergebnis der Abfrage Null oder der Spalteninhalt?
mark2 hat geschrieben:Kann es sein dass ich nicht festgelegt habe welcher Eintrag welchem user zugeteilt ist ?
Möglich ist alles.... Ich kann Deinen Scriptcode nicht erraten...:)

Verfasst: 11.10.2006 00:10
von mark2
Doch es sind schon Daten in der Tabelle NICKPAGEVOTES drin.
Hier der Inhalt der mir mit myphpadmin angezeigt wird

Code: Alles auswählen

uid   /  von    /    vote
2     /   3     /     2
13   /    7     /     1
13   /    8     /     1
Was die Angaben bedeuten habe ich noch nicht herausgefunden. Nur so viel. Es wurden erst 2 von insgesamt 9 Nickpages bewertet. Es sind aber 3 Zeilen.
Habe einen Test mit der zusammengekürzten nickpage.php und header.tpl gemacht, indem ich in der php das hier noch eingefügt habe.

Code: Alles auswählen

$test3 = $row['vote'];  
'test1' => $votes,
'test2' => $faktor,
'test3' => $test3,
Dann noch in der tpl die variablen test1, test2 und test3 aufgeführt und ich erhalte folgende Ergebnisse

Code: Alles auswählen

Nickpage eins
$votes = 1
$faktor = 2
die zeile vote der Tabelle = 2
_______________________
Nickpage zwei 
$votes = 4
$faktor = 1
die zeile vote der Tabelle = 4
Keine Ahnung wie die Zahlen zustande kommen, denn in der Tabelle steht keine einzige 4.
Füge ich meine Test variablen in meine eigene php Datei ein ist der inhalt aller Variablen 0

Verfasst: 11.10.2006 19:04
von Miriam
Aber wie $votes und $faktor in der originalen nickpage.php betimmt werden ist Dir soweit schon klar? :D

Verfasst: 06.01.2007 19:49
von mark2
Nein leider noch immer nicht.
Ich habe jetzt endlich eine nickpageliste in einem anderen Forum gefunden wo die Bewertung integriert ist. Doch leider komme ich an die php Datei oder zumindest den Quellcode nicht ran. Den Admin der Seite habe ich auch schon angeschrieben ob er mir nicht die Datei zusenden könnte. Er Antwortet aber nicht.

Verfasst: 01.06.2007 10:24
von Miriam
Wie rufst Du denn Deinen neue NP auf? Kann ich da mal einen Link sehen?
Irgendwie habe ich da schon eine Idee, wieso das nicht so richtig funktioniert. 8)

Verfasst: 01.06.2007 17:52
von mark2
Gute frage. Ich hatte ja aus der Original nickpage.php und header.tpl alles was nichts mit der Bewertung zu tun hat herausgelöscht und dann einfach ganz normal die Nickpage eines users aufgrufen. Da hatte ich dann die richtige Anzeige bekommen.
Das was dann in den beiden Dateien übrig blieb hab ich dann in meine nickpagelist.php und nickpagelist.tpl übenommen. Diese rufe ich einfach aus dem header mit http://www.meinedomain/pfad/nickpagelist.php auf.
Ich glaube das Problem ist dass nicht zugeordnet wird welche Bewertung zu welcher nickpage gehört. Denn in der nickpage.tpl (php) steht ja nur eine nickpage. Eben die des users den man ausgewählt hat. In der nickpageliste stehen aber mehrere nickpages verschiedener users.

Nachtrag:
Ich habe auf meinem TestBoard die Testfiles wieder hochgeladen. Die Nickpageliste kannst du Hier anschauen. Wenn du eine nickpage aufrufst siehst du eine weiße Seite die lediglich die Bewertung anzeigt da ich sie komplett entrümpelt habe. Zusätzlich lese ich noch die direkten Zahlenwerte des Tables "phpbb_nickpagevotes" aus und lasse sie mir anzeigen.

Verfasst: 02.06.2007 00:07
von Miriam
Es ist also doch, was ich vermutet habe zumindest im Ansatz:

Code: Alles auswählen

$HTTP_GET_VARS['user']
Du müsstest die PHP Datei mit Parameter user=<ID> aufrufen...also bspw. nickpage.php?user=Bora
Du hast doch aber schon den Namen des Users in der Liste, benutze den doch gleich für die NP: