Rows bzw. Reihen

Fragen zur Bedienung von phpBB 3.0.x, Probleme bei der Benutzung und alle weiteren Fragen inkl. Update auf die neuste phpBB 3.0.14 Version
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.
Antworten
Jimmy90
Mitglied
Beiträge: 26
Registriert: 03.03.2008 23:37

Rows bzw. Reihen

Beitrag von Jimmy90 »

In den Templates sieht man ja desöfteren Kommentare ala´BEGIN postrow o.ä. Allerdings blicke ich da noch nicht so recht durch. Könnte mir vllt. einer auf die Spränge helfen und mir die rows ein wenig genauer erläutern bzw. sagen, ob folgendes Beispiel für eine Reihe prinzipiell korrekt wäre?

Gehen wir von der Tabelle phpbb_my_table aus, die in constans.php bereits eingetragen wurde. Die Tabelle enthält folgende Spalten und Werte:

id, user_id, username, user_from
1, 2, Jimmy, Berlin
2, 56, Hans, Dresden
3, 28, Georg, Bonn

Und nein, ich möchte keine Antwort wie "mach´s doch mit $user->data[...]" - die Spalten und Werte sind rein fiktiv.

Code: Alles auswählen

// Ganz simpel gehaltene SQL-Abfrage für die spätere row ...
$sql = 'SELECT *
		FROM ' . MY_TABLE;
		
$result = $db->sql_query($sql);
$row = $db->sql_fetchrow($result);
$db->sql_freeresult($result);

$myrow = array(
			'USER_ID'	=> $row['user_id'],
			'USERNAME'	=>  $row['username'],
			'USER_FROM'	=> $row['user_from'],
		);
		
$template->assign_block_vars('myrow', $myrow);
Jetzt müsste aus folgendem Template:

Code: Alles auswählen

<!-- BEGIN myrow -->
    <table>
    <tr>
        <td>{USER_ID}</td>
        <td>{USERNAME}</td>
        <td>{USER_FROM}</td>
    </tr>
    </table>
<!-- END myrow -->
doch eigentlich - sobald dieses mit dem oben angegebenen Code (korrekt?) geparst wurde - das hier werden, oder? :

Code: Alles auswählen

    <table>
    <tr>
        <td>2</td>
        <td>Jimmy</td>
        <td>Berlin</td>
    </tr>
    </table>
    <table>
    <tr>
        <td>56</td>
        <td>Hans</td>
        <td>Dresden</td>
    </tr>
    </table>
    <table>
    <tr>
        <td>28</td>
        <td>Georg</td>
        <td>Bonn</td>
    </tr>
    </table>
Benutzeravatar
nickvergessen
Ehrenadmin
Beiträge: 11559
Registriert: 09.10.2006 21:56
Wohnort: Stuttgart, Germany
Kontaktdaten:

Re: Rows bzw. Reihen

Beitrag von nickvergessen »

Code: Alles auswählen

<!-- BEGIN myrow -->
    <table>
    <tr>
        <td>{myrow.USER_ID}</td>
        <td>{myrow.USERNAME}</td>
        <td>{myrow.USER_FROM}</td>
    </tr>
    </table>
<!-- END myrow -->
kein Support per PN
Jimmy90
Mitglied
Beiträge: 26
Registriert: 03.03.2008 23:37

Beitrag von Jimmy90 »

Ok, danke. Der Rest stimmt so?

Edit:
Selbst herausgefunden :D
Da hat einfach noch ´ne Schleife gefehlt.
Benutzeravatar
Amaya
Mitglied
Beiträge: 150
Registriert: 08.12.2004 02:02

Beitrag von Amaya »

Hey, ich habe das selbe Problem wie Jimmy90, leider klappt das mit den Vorgaben von hier noch nicht so richtig und ich weiß nicht so recht, wo der Fehler liegen könnte. Das ist meine SQL Abfrage:

Code: Alles auswählen

$sql = 'SELECT u.user_id, u.username, u.user_rank, u.user_avatar, r.rank_id, r.rank_title
        FROM ' . USERS_TABLE . ' u, ' . RANKS_TABLE . " r
		WHERE chara_typ = '1'
		AND u.user_rank = r.rank_id
		ORDER BY u.username";
      
$result = $db->sql_query($sql);
$row = $db->sql_fetchrow($result);
$db->sql_freeresult($result);

$hauptchara = array(
         'USER_ID'   => $row['user_id'],
         'USERNAME'   =>  $row['username'],
         'RANK'   =>  $row['rank_title'],

      );
      
$template->assign_block_vars('hauptchara', $hauptchara); 
Und das steht im Template:

Code: Alles auswählen

<!-- BEGIN hauptchara -->	

<b>&raquo; </b><a href="memberlist.php?mode=viewprofile&u={hauptchara.USER_ID}" class="zweitcharas">{hauptchara.USERNAME}</a>
 [{hauptchara.RANK}]
 <br>
<!-- END hauptchara -->
Funktioniert auch soweit, bis auf eine Ausnahme, ich bekomme nur eine Reihe ausgegeben, obwohl es mehr sein müssten laut SQL Abfrage. Was mache ich falsch?

Danke für Hilfe.
Benutzeravatar
nickvergessen
Ehrenadmin
Beiträge: 11559
Registriert: 09.10.2006 21:56
Wohnort: Stuttgart, Germany
Kontaktdaten:

Beitrag von nickvergessen »

Code: Alles auswählen

$sql = 'SELECT u.user_id, u.username, u.user_rank, u.user_avatar, r.rank_id, r.rank_title
        FROM ' . USERS_TABLE . ' u, ' . RANKS_TABLE . " r
		WHERE chara_typ = '1'
		AND u.user_rank = r.rank_id
		ORDER BY u.username";
      
$result = $db->sql_query($sql);
$row = $db->sql_fetchrow($result);
while ($row = $db->sql_fetchrow($result))//ADDED by NV
{//ADDED by NV
      $hauptchara = array(
            'USER_ID'   => $row['user_id'],
            'USERNAME'   =>  $row['username'],
            'RANK'   =>  $row['rank_title'],
      );
      
      $template->assign_block_vars('hauptchara', $hauptchara);
}//ADDED by NV
$db->sql_freeresult($result);
siehe //ADDED by NV
kein Support per PN
Benutzeravatar
Amaya
Mitglied
Beiträge: 150
Registriert: 08.12.2004 02:02

Beitrag von Amaya »

Danke nickvergessen für deine Antwort, leider scheint heute echt jemand was gegen mich zu haben, jetzt bekomme ich zwar den zweiten User angezeigt, auf den die Abfrage zutrifft, allerdings nur diesen und den ersten nicht mehr. *seufz* Ich bin zu blond dafür. :(

Edit: Habs gerademal mit dem anderen Usertype probiert, dort müssten drei User auftauchen, aber es werden nur zwei angezeigt. Es scheint also, dass weshalb auch immer, jeweils das erste Ergebnis verschluckt wird.
Benutzeravatar
nickvergessen
Ehrenadmin
Beiträge: 11559
Registriert: 09.10.2006 21:56
Wohnort: Stuttgart, Germany
Kontaktdaten:

Beitrag von nickvergessen »

entferne testweise mal

Code: Alles auswählen

$row = $db->sql_fetchrow($result);
das sollte überflüssig sein (das erste mal, nicht das im while()
kein Support per PN
Benutzeravatar
Amaya
Mitglied
Beiträge: 150
Registriert: 08.12.2004 02:02

Beitrag von Amaya »

Mein Held :D

Ich hab alles mögliche entfernt, umgestellt und ausprobiert, aber auf diese dumme Zeile bin ich nicht gekommen. Jetzt muss ich nur noch eine zweite abhängige Abfrage einbasteln und das leidige Thema Zweitcharas ist auch gegessen.

Tausend Dank.
Antworten

Zurück zu „[3.0.x] Administration, Benutzung und Betrieb“