Seite 1 von 2

Hilfe beim Coden: Favoriten abfrage in die page_header?

Verfasst: 20.05.2003 21:05
von JumpinJack
Also jeder kennt von euch die Page_header.php.
Nun benötige ich in dieser, eine DB-Abfrage um die Favoriten (intern und extern) auszugeben.
Als beispiel nehme ich hier nur die externen.

Wie bekomme ich den code da richtig rein? Muss ich was anpassen?
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_INDEX);
init_userprefs($userdata);
//
// End session management


// USER EINGELOGGT ? START
if( !$userdata['session_logged_in'] )
{
header("Location: " . append_sid("login.$phpEx?redirect=favorites_ext.$phpEx", true));
exit;
}
// USER EINGELOGGT ? ENDE


// EINTRAG LÖSCHEN START
if ( isset($HTTP_GET_VARS['mode']) )
{
$mode = ($HTTP_GET_VARS['mode']);

if ( $mode == 'remove' )
{
if ( isset($HTTP_GET_VARS['t']))
{
$fav_id = (intval($HTTP_GET_VARS['t']));
$user_id = ($userdata['user_id']);
$sql = "DELETE FROM " . $table_prefix . "favorites_ext WHERE user_id = '$user_id' AND fav_id = '$fav_id'";

if ( !($result = $db->sql_query($sql)) )
{
message_die(GENERAL_ERROR, $lang['remove_fav_data'], '', __LINE__, __FILE__, $sql);
}
}
if ( !(isset($HTTP_GET_VARS['t'])) )
{
message_die(GENERAL_MESSAGE, $lang['no_fav_topic']);
exit;
}
$header_location = ( @preg_match("/Microsoft|WebSTAR|Xitami/", getenv("SERVER_SOFTWARE")) ) ? "Refresh: 0; URL=" : "Location: ";
header($header_location . append_sid("favorites_ext." . $phpEx, true));
exit;
}
}
else
{
include($phpbb_root_path . 'includes/page_header.'.$phpEx);
$user_id = ($userdata['user_id']);
// EINTRAG LÖSCHEN ENDE




$template->set_filenames(array(
'body' => '../fav_ext_body.tpl')
);



// EXTERNE URL EINTRAGEN START
if ($submit_update)
{
$user_id = ($userdata['user_id']);
$sql = "INSERT INTO " . $table_prefix . "favorites_ext (fav_id, user_id, ext_id, ext_name) VALUES (NULL, '$user_id', '$ext_id', '$ext_name')";
if ( !($result = $db->sql_query($sql)) )
{
message_die(GENERAL_ERROR, $lang['insert_fav_data'], '', __LINE__, __FILE__, $sql);
}
}
// EXTERNE URL EINTRAGEN ENDE



$template->assign_vars(array(
'U_INDEX' => append_sid("index.$phpEx"),
'L_INDEX' => $lang['Index'],
"ext_id" => $ext_id,
"ext_name" => $ext_name,
"L_SUBMIT" => $lang['Submit'],
'L_DELETE' => $lang['Delete'])
);


// AUSGABE DER URLs:
// $sql = "SELECT * FROM " . $table_prefix . "favorites_ext fe WHERE fe.user_id = '" . $userdata['user_id'] . "' ORDER BY fav_id";
$sql = "SELECT * FROM " . $table_prefix . "favorites_ext fe WHERE fe.user_id = '" . $userdata['user_id'] . "' ORDER BY ext_name";
if ( !($result = $db->sql_query($sql)) )
{
message_die(GENERAL_MESSAGE, 'Could not get extern favorites data', '', __LINE__, __FILE__, $sql);
}

while ( $row = $db->sql_fetchrow($result) )
{
$template->assign_block_vars("topicrow", array(
'ext_id' => $row['ext_id'],
'ext_name' => $row['ext_name'],
'L_REMOVE' => $lang['Delete'],
'U_REMOVE' => append_sid("favorites_ext.$phpEx?mode=remove&t=" . $row['fav_id']))
);
}



$template->pparse('body');
include($phpbb_root_path . 'includes/page_tail.'.$phpEx);
}
?>
Also fakt ist das ich nur die Linknamen und die Link-href´s brauche. Ich benötige keine funktionen. Also habe ich mal die Stellen grün gemacht, wo ich meine das ich diese Passagen noicht benötige. Rot sind die passagen welche wahrscheinlich angepast werden müssen.

Irgendwie mekkert der aber bei mir wegen der tenplate.php auf zeile 30

Code: Alles auswählen

class Template {
Keine ahnung warum da. Die datei hab ich nit verändert. Bitte helft mir rin wenig.

Verfasst: 20.05.2003 21:53
von AWSW
Hallo,
wenn ich Dich richtig verstanden habe, glaube ich eine Lösung gefunden zu haben:

[ externes Bild ]

[ externes Bild ]

Realisiert habe ich das lokal im Moment für die externen Favoriten ?

Der Nachteil bei dieser Art der Darstellung ist, wie er PN schon geschrieben, dass der länsgte Eintrag auch die Breite des Menüs vorgibt... ;)

Sag bescheid, ob Du das so meinst, dann schreib ich eine kleine Anleitung dazu... Kompliziert ist es IMHO nicht...

HTH :)

Verfasst: 20.05.2003 22:12
von AWSW
Hallo,
versuch Dich mal damit - ich hab sonst leider heute keine Zeit mehr ;)

## Suche in /includes/page_header.php ganz am Ende nach:
header ('Cache-Control: private, pre-check=0, post-check=0, max-age=0');
header ('Expires: ' . gmdate('D, d M Y H:i:s', time()) . ' GMT');
header ('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT');
## Davor einfügen:
//
// EXTERNE FAVORITEN AUSGABE DER URLs START
//
$sql = "SELECT * FROM " . $table_prefix . "favorites_ext fe WHERE fe.user_id = '" . $userdata['user_id'] . "' ORDER BY ext_name";
if ( !($result = $db->sql_query($sql)) )
{
message_die(GENERAL_MESSAGE, 'Could not get extern favorites data', '', __LINE__, __FILE__, $sql);
}
while ( $row = $db->sql_fetchrow($result) )
{
$template->assign_block_vars("topicrow", array(
'ext_id' => $row['ext_id'],
'ext_name' => $row['ext_name']));
}
//
// EXTERNE FAVORITEN AUSGABE DER URLs ENDE
//

## Öffene (in jedem Template) die overall_header.tpl und suche nach:
</head>
## Davor füge ein:
<script language="JavaScript">
<!--
function P7_JumpMenu(selObj,restore){ //v1.3 by Project Seven
var theFullString = selObj.options[selObj.selectedIndex].value;
if (restore) selObj.selectedIndex=0;
var theLength = theFullString.length;
var endPos = theFullString.lastIndexOf("~");
var theUrl, theTarget, theParent;
if (endPos > 0) {theUrl = theFullString.substring(0,endPos);}
else {theUrl = theFullString;}
endPos++
if (endPos < theLength) {theTarget = theFullString.substring(endPos,theLength)}
else {theTarget = "window:Main";}
if (theTarget == "window:New") {window.open(theUrl);}
else if (theTarget == "window:Main") {eval("parent.location='"+theUrl+"'");}
else {eval("parent.frames[\'"+theTarget+"\'].location='"+theUrl+"'");}
}
//-->
</script>
## Am Ende unterhalb der anderen Links suche nach:
Sieht bei einem neuen phpbb204 so aus...

<tr>
<td height="25" align="center" valign="top" nowrap="nowrap"><span class="mainmenu">&nbsp;<a href="{U_PROFILE}" class="mainmenu"><img src="templates/subSilver/images/icon_mini_profile.gif" width="12" height="13" border="0" alt="{L_PROFILE}" hspace="3" />{L_PROFILE}</a>&nbsp; &nbsp;<a href="{U_PRIVATEMSGS}" class="mainmenu"><img src="templates/subSilver/images/icon_mini_message.gif" width="12" height="13" border="0" alt="{PRIVATE_MESSAGE_INFO}" hspace="3" />{PRIVATE_MESSAGE_INFO}</a>&nbsp; &nbsp;<a href="{U_LOGIN_LOGOUT}" class="mainmenu"><img src="templates/subSilver/images/icon_mini_login.gif" width="12" height="13" border="0" alt="{L_LOGIN_LOGOUT}" hspace="3" />{L_LOGIN_LOGOUT}</a>&nbsp;</span></td>
</tr>
## Darunter füge den Code für das Menü an:
<!-- BEGIN switch_user_logged_in -->
<tr>
<td align="center" valign="top" nowrap="nowrap"><span class="mainmenu">
<center>
<table border="0" cellspacing="0" cellpadding="0">
<tr>
<td class="mytext"> <br><br>
<form name="form1">
<select name="AWSWMenue" onChange="P7_JumpMenu(this,1)" class="mainmenu">
<option value="~" selected> > > > > > > > FAVORITEN < < < < < < < </option>
<!-- END switch_user_logged_in -->
<!-- BEGIN topicrow -->
<option value="{topicrow.ext_id}~">{topicrow.ext_name}</option>
<!-- END topicrow -->
<!-- BEGIN switch_user_logged_in -->
</select>
</form>
</td>
<td>&nbsp;&nbsp;</td>
</tr>
</table>
</center>
</span></td>
</tr>
<!-- END switch_user_logged_in -->
Danach sollte es IMHO klappen... ;)

Verfasst: 20.05.2003 22:20
von JumpinJack
Man das sieht prima aus. Sowas ähnliches will ich haben.
Aber wie gesagt. Das sind nicht statische favoriten sondern die, die in den favintern und favextern mod angelegt werden.

Guck mal bitte auf meiner Seite. Ich benötige die einbindung in page_header.php. Und vielleicht nachher das in der overall_header.tpl.

Aber mein Javascript sieht anders aus. Ich hab nen Hooverfeld. Find die lösung schöner.
Wenn du das haben möchtest....schick ich dir das.

http://gis-portal.com

Ich hab da in der grauen menüleiste ein Beispiel eingefügt "Test Favoriten"
Thanks for help

Verfasst: 20.05.2003 22:21
von JumpinJack
Oh das war ja schnell....mein orb ist. Ich hab am ende nur nen anderen Code:

Code: Alles auswählen

//
// Login box?
//
if ( !$userdata['session_logged_in'] )
{
	$template->assign_block_vars('switch_user_logged_out', array());
}
else
{
	$template->assign_block_vars('switch_user_logged_in', array());

	if ( !empty($userdata['user_popup_pm']) )
	{
		$template->assign_block_vars('switch_enable_pm_popup', array());
	}
}

// Work around for "current" Apache 2 + PHP module which seems to not
// cope with private cache control setting
if (!empty($HTTP_SERVER_VARS['SERVER_SOFTWARE']) && strstr($HTTP_SERVER_VARS['SERVER_SOFTWARE'], 'Apache/2'))
{
	header ('Cache-Control: no-cache, pre-check=0, post-check=0, max-age=0');
}
else
{
	header ('Cache-Control: private, pre-check=0, post-check=0, max-age=0');
}
header ('Expires: ' . gmdate('D, d M Y H:i:s', time()) . ' GMT');
header ('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT');

$template->pparse('overall_header');

?>
btw: Ich denke den Code hab ich richtig eingesetzt. Hab ja nur 1 Zeile weniger. Aber da verhaut der sich in der Foren ermittlung beim portal.

Verfasst: 20.05.2003 22:25
von AWSW
Hallo,
füge das mal vor

header ('Expires: ' . gmdate('D, d M Y H:i:s', time()) . ' GMT');

in der page_header.php ein...

Ja schick mal das Menü als ZIP per Mail...

Verfasst: 20.05.2003 22:48
von JumpinJack
Mail sit unterwegs...
Ja das hab ich eben schon gemacht. Ich glaube der Aufruf kappt. Ich muss nur noch das in der overall_header.tpl ändern.

Aber durch den code wird trotzdem irgendwas in deinem portal.php zerschossen.
Ich mach mal nen image:

http://gis-portal.com/files/fehler.JPG

btw: Also dein Mod klappt. Also mit deinem dropdownmenue. Aber der fehler wie oben is auch da drinne.
leider

Verfasst: 20.05.2003 23:00
von JumpinJack
Mein Menü klappt im prinzip auch...aber nur im prinzip.

Einen eintrag bekomme ich abgefragt.
<!-- BEGIN topicrow -->
menu[5][1] = new Item('{topicrow.ext_name}', '{topicrow.ext_id}', '', defLength, 0, 0);
<!-- END topicrow -->
Also das prob ist halt das er die rote 1 fortschreiben muss. Also beim ersten link soll da 1 stehen beim zweiten 2. da bin ich noch nit weiter.

Aber der weg is richtig und wir sind da auf dem richtigen weg. Also prima. Vielen dank schon mal.
Jute nacht und bis morjen

Verfasst: 20.05.2003 23:05
von AWSW
Hallo,
muss ich mir morgen mal ansehen - hab da heute keinen Kopf mehr für - was auch meinen Flüchtigkeitsfehler ein wenig entschuldigen soll ;)

YKYBHTLW

In dem oben neu geposteten Code suche und ersetze alle
topicrow
mit:
topicrow1
in der .php und .tpl :roll:

Dann geht das Portal wieder (topicrow wurde dort als Variable für ein Array auch verwendet...)

PS: Hab Deinen Beitrag mit dem Screenshot mal editiert, damit der Beitrag hier nicht überbreit wird ;)

Verfasst: 20.05.2003 23:23
von JumpinJack
Kein problem. hab mir schon gedacht das das am zweiten topicrow liegt.

Klappt jetzt. Wie gesagt das mit der roten 1 bleibt zwar, aber ich bleib da noch dran.

Habs mal bis jetzt mit der fav_id versucht. Aber is noch nit erfolgreich. Mal schaun.

muss ich mir morgen mal ansehen
Kein problem. Lass dir zeit.
YKYBHTLW
Sag mal kennst du alle abkürzungen oder guckst du die immer in deinem board nach. Lekko mio!!! :D