"IF" - "BEGIN" Template Schleifen Problem

In diesem Forum kann man Fragen zur Programmierung stellen, die bei der Entwicklung von Mods für phpBB 3.0.x oder dem Modifizieren des eigenen Forums auftauchen.
Forumsregeln
phpBB 3.0 hat das Ende seiner Lebenszeit überschritten
phpBB 3.0 wird nicht mehr aktiv unterstützt. Insbesondere werden - auch bei Sicherheitslücken - keine Patches mehr bereitgestellt. Der Einsatz von phpBB 3.0 erfolgt daher auf eigene Gefahr. Wir empfehlen einen Umstieg auf die neuste phpBB-Version, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
Timily
Mitglied
Beiträge: 99
Registriert: 17.08.2009 15:36
Kontaktdaten:

"IF" - "BEGIN" Template Schleifen Problem

Beitrag von Timily »

Hallo,

ich hoffe mir kann jemand helfen, irgendwo im Code hat sich ein Fehler eingeschlichen, oder aber ich habe einen Denkfehler:

Abfrage 1

Code: Alles auswählen

      $res = $db->sql_query($sql);

      $groupArray = array();

      while($arr = $db->sql_fetchrow($res)) {

			$groupArray = array (
								'PM_USER'       => (in_array("19453",$groupArray) ? true : false),
								'PU_USER'       => (in_array("19455",$groupArray) ? true : false),
								'STANDARD_USER' => (!in_array("19453",$groupArray) && !in_array("19455",$groupArray) ? true : false )
								);

			$template->assign_block_vars('groupArray', $groupArray);
                 }
Abfrage 2

Code: Alles auswählen

$sql  = "SELECT f.`fb_to`, f.`fb_link`, f.`kauf_datum`, u.`username`, t.`topic_title`  FROM `ef_shmk_feedback` f, `ef_users` u, `ef_topics` t ";
$sql .= " WHERE `fb_from` = $user_id AND fb_date='0' AND fb_ip='0'";
$sql .= " AND f.`fb_to` = u.`user_id` AND f.`fb_link` = t.`topic_id`";
$result = $db->sql_query($sql);

$eigenebewertungen = array();

  while($bewertung = $db->sql_fetchrow($result)) {

  $time = $bewertung['kauf_datum'];
  $time = date("d.m.Y - H:i:s",$time);

  $time_bewertung = $bewertung['kauf_datum'] + 7776000;
  $time_bewertung = date("d.m.Y - H:i:s",$time_bewertung);

	$eigenebewertungen = array ('BEWERTUNG_AN'                => $bewertung['username'],
								'BEWERTUNG_LINK'              => $bewertung['fb_link'],
								'KAUF_DATUM'                  => $time,
								'TIME_BEWERTUNG'              => $time_bewertung,
								'BEWERTUNG_EIGENE'            => "<a href=http://www.eltern-flohmarkt.de/feedback.php?mode=add&user_id=".$bewertung['fb_to']."&topic_id=".$bewertung['fb_link']."> ".$bewertung['topic_title']." </a>",
								'IMAGE_ARTIKEL_BEZAHLT_JA'    =>"<img src=/images/verkauf/bezahlt.gif>",
								'IMAGE_ARTIKEL_BEZAHLT_NEIN'  =>"<img src=/images/verkauf/bezahlt_nein.gif>",
								'IMAGE_PAKET_ERHALTEN_JA'     =>"<img src=/images/verkauf/paket_erhalten.gif>",
								'IMAGE_PAKET_ERHALTEN_NEIN'   =>"<img src=/images/verkauf/paket_erhalten_nein.gif>",
								'IMAGE_PAKET_VERSENDET_JA'    =>"<img src=/images/verkauf/paket_versendet.gif>",
								'IMAGE_PAKET_VERSENDET_NEIN'  =>"<img src=/images/verkauf/paket_versendet_nein.gif>"
  					  		   );


   $template->assign_block_vars('eigenebewertungen', $eigenebewertungen);


Abfrage 3

Code: Alles auswählen

$sql  = "SELECT f.`fb_from`, f.`fb_link`, f.`kauf_datum`, u.`username`, t.`topic_title`  FROM `ef_shmk_feedback` f, `ef_users` u, `ef_topics` t ";
$sql .= " WHERE `fb_to` = $user_id AND fb_date='0' AND fb_ip='0'";
$sql .= " AND f.`fb_from` = u.`user_id` AND f.`fb_link` = t.`topic_id`";
$result = $db->sql_query($sql);

$nochoffenebewertungen = array();

  while($bewertung = $db->sql_fetchrow($result)) {

  $time = $bewertung['kauf_datum'];
  $time = date("d.m.Y - H:i:s",$time);

  $time_bewertung = $bewertung['kauf_datum'] + 7776000;
  $time_bewertung = date("d.m.Y - H:i:s",$time_bewertung);

  $nochoffenebewertungen = array ( 'BEWERTUNG_VON'     => $bewertung['username'],
  								   'BEWERTUNG_LINK'    => $bewertung['fb_link'],
  								   'KAUF_DATUM'        => $time,
  								   'TIME_BEWERTUNG'    => $time_bewertung,
  								   'BEWERTUNG_EIGENE'  => "<a href=http://www.eltern-flohmarkt.de/viewtopic.php?f=1130&t=".$bewertung['fb_link'].">".$bewertung['topic_title']."</a>"
  					  		     );


   $template->assign_block_vars('nochoffenebewertungen', $nochoffenebewertungen);

 }
$db->sql_freeresult($result);
Alle 3 werden an den Template übergeben.

Template

Code: Alles auswählen

<!-- IF groupArray.PU_USER -->

<table width="100%"  border="0" cellpadding="5" cellspacing="5">
  <tr>
     <td><font size ="2"><b>User</b></font></td>
     <td><font size ="2"><b>Bewertungslink</b></font></td>
     <td><font size ="2"><b>Datum des Kaufes</b></font></td>
     <td><font size ="2"><b>Zeit um zu bewerten</b></font></td>
     <td><font size ="2"><b>Artikel bezahlt</b></font></td>
     <td><font size ="2"><b>Paket versendet</b></font></td>
     <td><font size ="2"><b>Paket erhalten</b></font></td>
  </tr>
 <!-- BEGIN eigenebewertungen -->
  <tr>
     <td><font size ="2">{eigenebewertungen.BEWERTUNG_AN}<br></font></td>
     <td><font size ="2">{eigenebewertungen.BEWERTUNG_EIGENE}<br></font></td>
     <td><font size ="2">{eigenebewertungen.KAUF_DATUM}<br></font></td>
     <td><font size ="2">{eigenebewertungen.TIME_BEWERTUNG}<br></font></td>
     <td><font size ="2">{eigenebewertungen.IMAGE_ARTIKEL_BEZAHLT_JA} 05.10.2009<br></font></td>
     <td><font size ="2">{eigenebewertungen.IMAGE_PAKET_VERSENDET_JA} 05.10.2009<br></font></td>
     <td><font size ="2">{eigenebewertungen.IMAGE_PAKET_ERHALTEN_JA} 05.10.2009<br></font></td>
  </tr>
 <!-- END eigenebewertungen -->
</table>
<!-- ENDIF -->
Es geht kurz gesagt darum, das wenn einer User in PM_USER, PU_USER oder STANDARD_USER ist jeweils eine andere Ansicht sehen soll. Einzeln geht alles, es liegt also kein Fehler vor, aber das Verschachteln macht er nicht, wo ist mein Denkfehler?

Egal ob ich im Template <!-- IF groupArray.PU_USER --> oder <!-- IF groupArray.PM_USER --> etc eingebe, ich sehe immer alles, ob ich nur in einer der Gruppen drin bin.

Ich hoffe es versteht einer mein Problem.

LG,
aurora876
Ehemaliger Übersetzer
Beiträge: 1600
Registriert: 30.08.2008 20:41

Re: "IF" - "BEGIN" Template Schleifen Problem

Beitrag von aurora876 »

ehrlich gesagt nein.

was willst du damit erreichen, also was soll man denn sehen können bw. nicht sehen können?
There are 10 types of people in the world: Those who understand binary and those who don't. :D

Support Toolkit in Deutsch
Timily
Mitglied
Beiträge: 99
Registriert: 17.08.2009 15:36
Kontaktdaten:

Re: "IF" - "BEGIN" Template Schleifen Problem

Beitrag von Timily »

Bei Abfrage 2 und 3 soll nur etwas angezeigt werden, grundsätzlich, aber nur wenn :

<!-- IF groupArray.PU_USER --> oder <!-- IF groupArray.PM_USER --> in einen der beiden Gruppen (Abfrage 1) drin ist!
Benutzeravatar
oxpus
Ehemaliges Teammitglied
Beiträge: 5394
Registriert: 03.02.2003 12:33
Wohnort: Bad Wildungen
Kontaktdaten:

Re: "IF" - "BEGIN" Template Schleifen Problem

Beitrag von oxpus »

Hallo,

man könnte auch das hier nehmen:

Code: Alles auswählen

<!-- IF groupArray.S_FIRST_ROW -->
Grüße
OXPUS
Kein Support bei unaufgeforderten PNs, E-Mails oder auf anderem Weg!!
Timily
Mitglied
Beiträge: 99
Registriert: 17.08.2009 15:36
Kontaktdaten:

Re: "IF" - "BEGIN" Template Schleifen Problem

Beitrag von Timily »

oxpus hat geschrieben:Hallo,

man könnte auch das hier nehmen:

Code: Alles auswählen

<!-- IF groupArray.S_FIRST_ROW -->
Danke, nur ich weiss jetzt nicht ob ich S_FIRST_ROW missverstehe oder wir aneinander vorbeireden. Ich erklärs mal anders und ganz kurz!

Wenn sonst nichts im Template drin stehen würde, bekäme jeder User dieses hier angezeigt:

Code: Alles auswählen

<!-- BEGIN eigenebewertungen -->
  <tr>
     <td><font size ="2">{eigenebewertungen.BEWERTUNG_AN}<br></font></td>
     <td><font size ="2">{eigenebewertungen.BEWERTUNG_EIGENE}<br></font></td>
     <td><font size ="2">{eigenebewertungen.KAUF_DATUM}<br></font></td>
     <td><font size ="2">{eigenebewertungen.TIME_BEWERTUNG}<br></font></td>
     <td><font size ="2">{eigenebewertungen.IMAGE_ARTIKEL_BEZAHLT_JA} 05.10.2009<br></font></td>
     <td><font size ="2">{eigenebewertungen.IMAGE_PAKET_VERSENDET_JA} 05.10.2009<br></font></td>
     <td><font size ="2">{eigenebewertungen.IMAGE_PAKET_ERHALTEN_JA} 05.10.2009<br></font></td>
  </tr>
<!-- END eigenebewertungen -->
Wenn ich dieses hier schreibe:

Code: Alles auswählen

<!-- BEGIN gruppe -->
<!-- IF groupArray.PU_USER -->
Test 1 2 3
<!-- END gruppe -->
<!-- ENDIF -->
bekommt das (Test 1 2 3) nur eine bestimmte Gruppe von usern angezeigt!

Nun hätte ich aber gerne das "<!-- BEGIN eigenebewertungen --> ... <!-- END eigenebewertungen -->" an der Stelle von Test 1 2 3 steht, aber dann zeigt er es mir nicht an, irgendwo hab ich also einen Fehler, denn solche Verschachtelungen gibts ja öfters, aber meinen Fehler sehe ich einfach nicht!
Benutzeravatar
Mahony
Ehemaliges Teammitglied
Beiträge: 12179
Registriert: 17.11.2005 22:33
Wohnort: Ostfildern Kemnat
Kontaktdaten:

Re: "IF" - "BEGIN" Template Schleifen Problem

Beitrag von Mahony »

Hallo
Nun hätte ich aber gerne das "<!-- BEGIN eigenebewertungen --> ... <!-- END eigenebewertungen -->" an der Stelle von Test 1 2 3 steht, aber dann zeigt er es mir nicht an, irgendwo hab ich also einen Fehler, denn solche Verschachtelungen gibts ja öfters, aber meinen Fehler sehe ich einfach nicht!
Dann schreib mal deine Switches Groß. Also anstelle von

Code: Alles auswählen

<!-- BEGIN eigenebewertungen --> ... <!-- END eigenebewertungen -->
musst du

Code: Alles auswählen

<!-- BEGIN EIGENBEWERTUNGEN --> ... <!-- END EIGENBEWERTUNGEN -->
schreiben.

Aus dem Changelog zu phpBB3.0.4
Changelog hat geschrieben:•[Fix] Enforce correct case for template variables

Grüße: Mahony
Taekwondo in Berlin
Wer fragt, ist ein Narr für fünf Minuten, wer nicht fragt, ist ein Narr für immer.
Timily
Mitglied
Beiträge: 99
Registriert: 17.08.2009 15:36
Kontaktdaten:

Re: "IF" - "BEGIN" Template Schleifen Problem

Beitrag von Timily »

DAnke, aber leider lag es daran auch nicht, das was dort dazwischen steht geht ja (ohne die Schleife herum), aber mit Schleife geht es nicht!

Code: Alles auswählen

<!-- BEGIN groupArray-->
<!-- IF groupArray.PM_USER -->


<table width="100%"  border="0" cellpadding="5" cellspacing="5">
  <tr>
     <td><font size ="2"><b>User</b></font></td>
     <td><font size ="2"><b>Bewertungslink</b></font></td>
     <td><font size ="2"><b>Datum des Kaufes</b></font></td>
     <td><font size ="2"><b>Zeit um zu bewerten</b></font></td>
     <td><font size ="2"><b>Artikel bezahlt</b></font></td>
     <td><font size ="2"><b>Paket versendet</b></font></td>
     <td><font size ="2"><b>Paket erhalten</b></font></td>
  </tr>
 <!-- BEGIN EIGENEBEWERTUNGEN -->
  <tr>
     <td><font size ="2">{eigenebewertungen.BEWERTUNG_AN}<br></font></td>
     <td><font size ="2">{eigenebewertungen.BEWERTUNG_EIGENE}<br></font></td>
     <td><font size ="2">{eigenebewertungen.KAUF_DATUM}<br></font></td>
     <td><font size ="2">{eigenebewertungen.TIME_BEWERTUNG}<br></font></td>
     <td><font size ="2">{eigenebewertungen.IMAGE_ARTIKEL_BEZAHLT_JA} 05.10.2009<br></font></td>
     <td><font size ="2">{eigenebewertungen.IMAGE_PAKET_VERSENDET_JA} 05.10.2009<br></font></td>
     <td><font size ="2">{eigenebewertungen.IMAGE_PAKET_ERHALTEN_JA} 05.10.2009<br></font></td>
  </tr>
 <!-- END EIGENEBEWERTUNGEN -->
</table>

<!-- END groupArray-->
<!-- ENDIF -->
Benutzeravatar
Mahony
Ehemaliges Teammitglied
Beiträge: 12179
Registriert: 17.11.2005 22:33
Wohnort: Ostfildern Kemnat
Kontaktdaten:

Re: "IF" - "BEGIN" Template Schleifen Problem

Beitrag von Mahony »

Hallo
Du musst natürlich ALLE Switches groß schreiebn.
Also auch

Code: Alles auswählen

<!-- BEGIN groupArray-->....<!-- END groupArray-->
Ebenso solltest du folgendes beachten http://wiki.phpbb.com/Template_Syntax
/wiki.phpbb.com hat geschrieben: Variables

Assign a single variable:

Code: Alles auswählen

$template->assign_var('FOO', $foo);
Also

Code: Alles auswählen

$template->assign_block_vars('groupArray', $groupArray);
ändern in

Code: Alles auswählen

$template->assign_block_vars('GROUPARRAY', $groupArray);
und so weiter.

Grüße: Mahony
Taekwondo in Berlin
Wer fragt, ist ein Narr für fünf Minuten, wer nicht fragt, ist ein Narr für immer.
Timily
Mitglied
Beiträge: 99
Registriert: 17.08.2009 15:36
Kontaktdaten:

Re: "IF" - "BEGIN" Template Schleifen Problem

Beitrag von Timily »

Dann geht gar nichts mehr, auch nicht die Sachen die vorher gingen, und wenn ich mir so die Codes in anderen Dateien anschaue, sind da ja viele Sachen auch klein geschrieben *hmm*

Und wie muss ich es hier schreiben?

$template->assign_block_vars('eigenebewertungen', $eigenebewertungen);

oder

$template->assign_block_vars('EIGENEBEWERTUNGEN', $eigenebewertungen);

Daran kann es ja nicht wirklich liegen, weil einzeln gingen ja beide Anweisungen, nur eben nicht inneinander verschachtelt.
Benutzeravatar
Mahony
Ehemaliges Teammitglied
Beiträge: 12179
Registriert: 17.11.2005 22:33
Wohnort: Ostfildern Kemnat
Kontaktdaten:

Re: "IF" - "BEGIN" Template Schleifen Problem

Beitrag von Mahony »

Hallo
Siehe meinen vorherigen Beitrag (hatte noch etwas hinzugefügt).


Grüße: Mahony
Taekwondo in Berlin
Wer fragt, ist ein Narr für fünf Minuten, wer nicht fragt, ist ein Narr für immer.
Antworten

Zurück zu „[3.0.x] Mod Bastelstube“