Seite 1 von 2

"IF" - "BEGIN" Template Schleifen Problem

Verfasst: 06.10.2009 15:41
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,

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

Verfasst: 07.10.2009 01:12
von aurora876
ehrlich gesagt nein.

was willst du damit erreichen, also was soll man denn sehen können bw. nicht sehen können?

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

Verfasst: 07.10.2009 07:16
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!

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

Verfasst: 07.10.2009 10:46
von oxpus
Hallo,

man könnte auch das hier nehmen:

Code: Alles auswählen

<!-- IF groupArray.S_FIRST_ROW -->

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

Verfasst: 07.10.2009 13:50
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!

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

Verfasst: 07.10.2009 14:12
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

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

Verfasst: 07.10.2009 14:20
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 -->

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

Verfasst: 07.10.2009 14:28
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

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

Verfasst: 07.10.2009 14:44
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.

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

Verfasst: 07.10.2009 14:46
von Mahony
Hallo
Siehe meinen vorherigen Beitrag (hatte noch etwas hinzugefügt).


Grüße: Mahony