[Erledigt] Bewertung von nickpage mod in Nickpageliste

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
Benutzeravatar
mark2
Mitglied
Beiträge: 454
Registriert: 22.02.2006 23:05
Wohnort: Kempten

[Erledigt] Bewertung von nickpage mod in Nickpageliste

Beitrag 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="*">
Zuletzt geändert von mark2 am 04.07.2007 17:14, insgesamt 2-mal geändert.
Benutzeravatar
Miriam
Mitglied
Beiträge: 12310
Registriert: 13.10.2004 07:18
Kontaktdaten:

Beitrag 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.
Gruss, Miriam.
Ich schmeiß' alles hin und...
... lasse es liegen
Benutzeravatar
mark2
Mitglied
Beiträge: 454
Registriert: 22.02.2006 23:05
Wohnort: Kempten

Beitrag 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 ?
Benutzeravatar
Miriam
Mitglied
Beiträge: 12310
Registriert: 13.10.2004 07:18
Kontaktdaten:

Beitrag 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...:)
Gruss, Miriam.
Ich schmeiß' alles hin und...
... lasse es liegen
Benutzeravatar
mark2
Mitglied
Beiträge: 454
Registriert: 22.02.2006 23:05
Wohnort: Kempten

Beitrag 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
Benutzeravatar
Miriam
Mitglied
Beiträge: 12310
Registriert: 13.10.2004 07:18
Kontaktdaten:

Beitrag von Miriam »

Aber wie $votes und $faktor in der originalen nickpage.php betimmt werden ist Dir soweit schon klar? :D
Gruss, Miriam.
Ich schmeiß' alles hin und...
... lasse es liegen
Benutzeravatar
mark2
Mitglied
Beiträge: 454
Registriert: 22.02.2006 23:05
Wohnort: Kempten

Beitrag 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.
Benutzeravatar
Miriam
Mitglied
Beiträge: 12310
Registriert: 13.10.2004 07:18
Kontaktdaten:

Beitrag 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)
Gruss, Miriam.
Ich schmeiß' alles hin und...
... lasse es liegen
Benutzeravatar
mark2
Mitglied
Beiträge: 454
Registriert: 22.02.2006 23:05
Wohnort: Kempten

Beitrag 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.
Gruß Markus
Benutzeravatar
Miriam
Mitglied
Beiträge: 12310
Registriert: 13.10.2004 07:18
Kontaktdaten:

Beitrag 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:
Gruss, Miriam.
Ich schmeiß' alles hin und...
... lasse es liegen
Antworten

Zurück zu „Coding & Technik“