IF ElseIF in phpbb

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.
Antworten
Benutzeravatar
Lenox82
Mitglied
Beiträge: 429
Registriert: 03.02.2004 00:40
Wohnort: Apolda
Kontaktdaten:

IF ElseIF in phpbb

Beitrag von Lenox82 »

Wollte mal fragen wenn ich eine Abfrage starte:

Beispiel:

ICQ Abfrage ob eine Nummer enthalten ist

Wenn eine Nummer inthalten ist so solle er diese anzeigen
Ist diese aber nicht vorhanden solle dastehen: Nicht angegeben oder keine Angaben

Wie müsste ich das dann machen?
Benutzeravatar
Leuchte
Ehemaliges Teammitglied
Beiträge: 9179
Registriert: 26.05.2003 14:57
Wohnort: Duisburg
Kontaktdaten:

Beitrag von Leuchte »

Zum Beispiel so

Code: Alles auswählen

if(empty($userdata['user_icq']))
{
	$template->assign_block_vars('user_hat_kein_icq', array());
}
else
{
	$template->assign_block_vars('user_hat_icq', array());
}
In der dazugehörigen Template-Datei dieses

Code: Alles auswählen

<!-- BEGIN user_hat_kein_icq -->
Du hast kein ICQ
<!-- END user_hat_kein_icq -->
<!-- BEGIN user_hat_icq -->
Sei stolz, du hast ICQ
<!-- END user_hat_icq -->
Benutzeravatar
Lenox82
Mitglied
Beiträge: 429
Registriert: 03.02.2004 00:40
Wohnort: Apolda
Kontaktdaten:

Beitrag von Lenox82 »

Versteh nicht richtig

Also muss ich in den teilen:

Code: Alles auswählen

if(empty($userdata['user_icq']))
{
   $template->assign_block_vars('$icq', array());
}
else
{
   $template->assign_block_vars('$icq_no', array());
}
Oder wie?
Benutzeravatar
Leuchte
Ehemaliges Teammitglied
Beiträge: 9179
Registriert: 26.05.2003 14:57
Wohnort: Duisburg
Kontaktdaten:

Beitrag von Leuchte »

Um bei meinem Beispiel zu bleiben.
Ist die Bedingung

Code: Alles auswählen

if(empty($userdata['user_icq']))
wahr, wird der Block

Code: Alles auswählen

<!-- BEGIN user_hat_kein_icq --> 
Du hast kein ICQ 
<!-- END user_hat_kein_icq --> 
angezeigt, ansonsten der andere.
Variablen haben dort nichts zu suchen.
Benutzeravatar
Lenox82
Mitglied
Beiträge: 429
Registriert: 03.02.2004 00:40
Wohnort: Apolda
Kontaktdaten:

Beitrag von Lenox82 »

Und wie müsste es dann korrekt dargelegt werden damit

a) Die ICQ-Nummer wenn vorhanden angezeigt wird

b) Wenn nicht vorhanden, die Meldung "Keine Nummer angegeben"

?

Als beispiel hab ich das mal so:

Code: Alles auswählen

			$icq = $row['user_icq'];
			$icq_no = "Keine Angaben";

			if(empty($userdata['user_icq']))
			{
   				$template->assign_block_vars('$icq_no', array());
			}
			else
			{
   				$template->assign_block_vars('$icq', array());
			}
Benutzeravatar
Lenox82
Mitglied
Beiträge: 429
Registriert: 03.02.2004 00:40
Wohnort: Apolda
Kontaktdaten:

Beitrag von Lenox82 »

Also damit jemand weiss was ich meine und vorhab:

Ich habe vor auf einer extra seite nur die ICQ und MSN auflisten zu lassen dazu noch die UserID und den Username

Das anzeigen der Usernamen und der Userid´s ist nicht das Problem nur häng ich da an dem Problem das wenn ICQ gefüllt ist soll er es ausgeben (Das selbe mit MSN) ist das nicht der Fall soll halt eben Nicht Angegeben da stehen (das selbe auch bei MSN)

Ich hoffe ihr wisst jetzt was ich vorhab!
Jensemann
Ehemaliges Teammitglied
Beiträge: 2549
Registriert: 25.02.2002 01:00

Beitrag von Jensemann »

Bitte merken:
Leuchte hat geschrieben:Variablen haben dort nichts zu suchen.
Das bezog sich auf das 1. Argument von assign_block_vars. Alle Variablen die du an das Template übergeben willst, packst du in das array().

Code: Alles auswählen

if(empty($userdata['user_icq']))
{
   $template->assign_block_vars('user_hat_kein_icq', array());
}
else
{
   $template->assign_block_vars('user_hat_icq', array(
       'ICQ_NUMMER' => $userdata["user_icq"]));
}
Bei Bedarf wirst du den Namen der Variable $userdata anpassen müssen, wir wissen ja nicht wo du den Code einbauen willst.

Und das zugehörige Template:

Code: Alles auswählen

<!-- BEGIN user_hat_kein_icq -->
Du hast kein ICQ
<!-- END user_hat_kein_icq -->
<!-- BEGIN user_hat_icq -->
{user_hat_icq.ICQ_NUMMER}
<!-- END user_hat_icq -->
Benutzeravatar
Lenox82
Mitglied
Beiträge: 429
Registriert: 03.02.2004 00:40
Wohnort: Apolda
Kontaktdaten:

Beitrag von Lenox82 »

Hmm.... irgendwie bekomme ich es nicht gebacken

Hier die php:

Code: Alles auswählen

<?php
define('IN_PHPBB', true);
$phpbb_root_path = './';
include($phpbb_root_path . 'extension.inc');
include($phpbb_root_path . 'common.'.$phpEx);

$userdata = session_pagestart($user_ip, PAGE_INDEX);
init_userprefs($userdata); 

$page_title = 'ICQ/MSN Liste'; 
include($phpbb_root_path . 'includes/page_header.'.$phpEx);

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

//* ICQ/MSN ANFANG *//

	$icqmsn = "SELECT username, user_id, user_icq, user_msnm FROM " . USERS_TABLE . " WHERE user_id > 1 ORDER by user_id ASC";

if( !($result = $db->sql_query($icqmsn)) )

{
	message_die(GENERAL_ERROR, 'Could not query users', '', __LINE__, __FILE__, $sql);
}

if ( $row = $db->sql_fetchrow($result) )

{
	$i = 1;
	do
	{
			$username = $row['username'];
			$userid = $row['user_id'];
			$posts = $row['user_posts'];
			$icq_no = $row['<b><font color=\"red\">Nicht Angegeben</font></b>'];
			$msn_no = $row['<b><font color=\"red\">Nicht Angegeben</font></b>'];
			$icq = $row['user_icq'];
			$msn = $row['user_msnm'];

			if(empty($row['user_icq']))
			{
   				$template->assign_block_vars('icq_no', array('ICQ_NO' => $row['<b><font color=\"red\">Nicht Angegeben</font></b>']));
			}
			else
			{
   				$template->assign_block_vars('icq', array('ICQ' => $row['user_icq']));
			}

		$row_color = ( !($i % 2) ) ? $theme['td_color1'] : $theme['td_color2'];
		$row_class = ( !($i % 2) ) ? $theme['td_class1'] : $theme['td_class2'];

		$template->assign_block_vars('posterrow', array(
			'ROW_COLOR' => '#' . $row_color,
			'ROW_CLASS' => $row_class,
			'USERNAME' => $username,
			'USERID' => $userid,
			'ICQ_NO' => $icq_no,
			'ICQ' => $icq,
			'MSN_NO' => $msn_no,
			'MSN' => $msn,		
			'U_VIEWPROFILE' => append_sid("profile.$phpEx?mode=viewprofile&" . POST_USERS_URL . "=$userid"))
		);

		$i++;
	}
	while ( $row = $db->sql_fetchrow($result) );
	$db->sql_freeresult($result);
}

//* ICQ/MSN ENDE *//

$template->pparse('body');

include($phpbb_root_path . 'includes/page_tail.'.$phpEx);
?>

hier die TPL:

Code: Alles auswählen

<table class="forumline" align="center" width="80%" cellspacing="0" cellpadding="0" border="0">
 <tr>
    <td class="catHead" align="center"><b><a href="icq_msn.php" class="nav">ICQ/MSN - Liste</a></b></span></td>
    </tr>
  </table><br />
<table width="80%" align="center" cellpadding="3" cellspacing="1" border="0" class="forumline">
 <tr>
    <th class="thTop" align="center" colspan="4">ICQ/MSN - Liste der D-W-S "Deutsche Waffen Schmiede"</th>
    </tr>
 <tr>
    <th class="thTop" align="center"><b>UserID:</b></th>
    <th class="thTop" align="center"><b>Username:</b></th>
    <th class="thTop" align="center"><b>ICQ:</b></th>
    <th class="thTop" align="center"><b>MSN:</b></th>
    </tr>
	<!-- BEGIN posterrow -->
	<tr>
	  <td class="{posterrow.ROW_CLASS}" align="center"><span class="gen">{posterrow.USERID}</span></td> 
	  <td class="{posterrow.ROW_CLASS}" align="center"><span class="gen"><a href="{posterrow.U_VIEWPROFILE}" title="Zum Profil von {posterrow.USERNAME}"><b>{posterrow.USERNAME}</b></a></span></td>
	  <!-- BEGIN icq_no -->
	  <td class="{posterrow.ROW_CLASS}" align="center"><span class="gen">{posterrow.ICQ_NO}</span></td>
	  <!-- END icq_no -->
	  <!-- BEGIN icq -->
	  <td class="{posterrow.ROW_CLASS}" align="center"><span class="gen">{icq.ICQ}</span></td>
	  <!-- END icq -->
	  <td class="{posterrow.ROW_CLASS}" align="center"><span class="gen">{posterrow.MSN}</span></td>
	</tr>
	<!-- END posterrow -->
  </table><br />
<table class="forumline" align="center" width="80%" cellspacing="0" cellpadding="0" border="0">
 <tr>
    <th class="thTop" align="center"><b>ICQ/MSN - Liste Alpha v1 &copy; 2006 by D-W-S</b></th>
    </tr>
  </table><br />
Also irgendwie komm ich nicht klar
Jensemann
Ehemaliges Teammitglied
Beiträge: 2549
Registriert: 25.02.2002 01:00

Beitrag von Jensemann »

Gut gemeinter Rat:

Lerne PHP, dann lerne wie man die Template-Klasse einsetzt.

Da ist sowohl unnötiger Code drin, wie auch Code wo ich mich frage ob du überhaupt Basis-PHP Kenntnisse hast, wie etwa:

Code: Alles auswählen

$icq_no = $row['<b><font color=\"red\">Nicht Angegeben</font></b>'];
Von diesem komischen if/while-do Konstrukt einmal abgesehen.

Das ist wirklich nicht böse gemeint, aber mal eben sagen wo der Fehler liegt, ist da kaum möglich, weil die ganze Datei von Fehlern und unsinnigem Code nur so wimmelt.
Antworten

Zurück zu „Coding & Technik“