| Autor |
Nachricht |
Chriha
Newbie

Alter: 27
Anmeldungsdatum: 27.03.2005
Beiträge: 24
Wohnort: Ruhpolding

|
|
Tacho,
ich hoffe, daß du mir bei meinem Problem weiterhelfen kannst. Und zwar verwende ich die Template-lasse von Kuerbis.org. Wie die Klasse ausschaut, kann man hier sehen und hier ist das Beispiel. Soweit klappt auch alles ganz gut, jedoch hab ich Probleme, wenn es um das auflisten von mehreren Werten aus der DB geht. Ich würde zum Beispiel gern eine Rangliste machen, wie das in der PHP-Datei ausschaut weiß ich. Nur in Verbindung mit Templates hab ich es noch nicht so.
Ich hoffe du weißt was ich meine ... wäre für Hilfe sehr dankbar!
Achja, um auch etwas an Informationen dazulassen ...
| Code:
|
CREATE TABLE `user_stats` (
`userid` int(11) NOT NULL auto_increment,
`rank` varchar(20) collate latin1_general_ci NOT NULL default '1',
`ruhm` int(20) NOT NULL default '0',
`erfahrung` int(11) NOT NULL default '1',
`username` varchar(40) collate latin1_general_ci default NULL,
PRIMARY KEY (`userid`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=1 ;
|
Das sind die Werte, die aus der DB abgefragt werden ...
|
|
|
|
|
|
|
 |
     |
 |
Google
|
|
| |
|
 |
Thies
Webmaster


Alter: 43
Anmeldungsdatum: 04.08.2003
Beiträge: 1424
Wohnort: Thüringen

|
|
Ich kenne diese Template-Klasse zwar nicht, aber sie scheint nicht so "schwer" zu sein. Am besten überlegst Du Dir mal den php-Code, wie der aussieht und den geplanten HTML-Code für die Ausgabe. Das postest Du hier und ich versuche zu helfen.
Das jetzt alles selbst zu machen, schaffe ich zeitlich leider nicht.
OK?
CU
Frank-Andre
|
|
|
|
|
_________________ if ( $ahnung == 'keine' ) { use ( Suche ) }
if ( $antwort == 0 ) { post ( $frage ) }
|
|
 |
      |
 |
Chriha
Newbie

Alter: 27
Anmeldungsdatum: 27.03.2005
Beiträge: 24
Wohnort: Ruhpolding

|
|
OK, also ich hatte mir das eventuell so gedacht: Für die Rangliste brauch ich erstmal die Werte
| PHP:
|
<?php $users_sql = mysql_query("SELECT * /* ich weiß, man sollte nicht SELECT * benutzen, is jetz nur für das Beispiel */
FROM user_stats
ORDER BY ruhm DESC")
or die (mysql_error());
|
Dann erstelle ich eine while - Schleife, damit alle geforderten Werte nacheinander ausgegeben werden
| PHP:
|
<?php while ($users = mysql_fetch_array($result))
{
// normalerweise würd ich jetzt die arrays mit $users['id'] etc einfügen. aber wie ich das in Verbindung mit dem Template mache, weiß ich leider nicht
}
|
In dem Template hätte ich dann den Schalter <!-- BEGIN users -->{id}<!-- END users --> mit dem Platzhalter {id} eingebaut. Wie normale Blöcke funktionieren "weiß ich", aber die Ausgabe von mehreren Werten ist zu viel für den Anfang. Hab auch schon in vielen Foren nachgefragt, aber nie eine richtigte bzw. keine Antwort erhalten und da Du mir das mit dem Cronjob so schön erklärt hast, dachte ich, daß Du mir da weiterhelfen kannst.
Wär jedenfalls sehr nett von Dir!!!
|
|
|
|
|
|
|
 |
     |
 |
Thies
Webmaster


Alter: 43
Anmeldungsdatum: 04.08.2003
Beiträge: 1424
Wohnort: Thüringen

|
|
Versuche ich gern, bin beruflich nur sehr einegspannt, kann also nicht immer sofort reagieren.
Versuche es mal so:
| PHP:
|
<?php $t_temptest = $t->fetchBlock("users");
while ($users = mysql_fetch_array($result))
{
$t_temptest->assign("id",$users['id']);
$t->assign("users",$t_temptest);
$t_temptest->reset();
}
|
So müsste es meines Erachtens gehen. Aber ich kann es nicht testen.
$t_temptest musst Du ggf. durch die Variable ersetzen, die Du nutzt.
Wenn es nicht geht: poste bitte auch mal das komplette Template mit den Platzhaltern, damit ich mir einen Überblick veschaffen kann.
CU
Frank-Andre
|
|
|
|
|
_________________ if ( $ahnung == 'keine' ) { use ( Suche ) }
if ( $antwort == 0 ) { post ( $frage ) }
|
|
 |
      |
 |
Chriha
Newbie

Alter: 27
Anmeldungsdatum: 27.03.2005
Beiträge: 24
Wohnort: Ruhpolding

|
|
Leider bin ich zeitlich auch sehr eingeschränkt ... bin erst Heim gekommen, werde es aber morgen ausprobieren und mich dann wieder melden.
Danke schonmal für Deine Hilfe!!!
|
|
|
|
|
|
|
 |
     |
 |
Chriha
Newbie

Alter: 27
Anmeldungsdatum: 27.03.2005
Beiträge: 24
Wohnort: Ruhpolding

|
|
Also, funktioniert leider nicht oder ich hab irgendwas falsch gemacht. Meine Datei rangliste.php schaut nun so aus:
| PHP:
|
<?php session_start();
// Header und Template uncluden
include ("includes/header.php");
include_once "includes/class_ktemplate.inc.php";
// Instanz für das Template erstellen
$t = new KTemplate("templates/rangliste.html");
$users_sql = mysql_query("SELECT *
FROM user_stats
ORDER BY ruhm DESC")
or die (mysql_error());
$t_users = $t->fetchBlock("users");
while ($users = mysql_fetch_array($users_sql))
{
$t_users->assign("id",$users['id']);
$t -> assign("users",$t_users);
$t_users->reset();
}
// Template ausgeben
$t ->out();
// Footer includen
include ("includes/footer.php");
|
und mein Template rangliste.html so:
| Code:
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Untitled Document</title>
</head>
<body>
<table align=center cellspacing=1 cellpadding=3 bgcolor=#9F9FFF width=100%>
<tr bgcolor="#A4A4FF">
<td width="100%"> <div align="center"><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><strong>::
Rangliste ::</strong></font></div></td>
</tr>
<tr bgcolor="CCCCFF">
<td> <div align="center">
<p> </p>
<!-- BEGIN users -->
<table width="70%" border="0">
<tr>
<td width="7%">Platz</td>
<td width="25%">Name</td>
<td width="33%">Erfahrung</td>
<td width="26%">Platz</td>
</tr>
<tr>
<td>{rang}</td>
<td>{username}</td>
<td>{erfahrung}</td>
<td>{id}</td>
</tr>
</table>
<!-- END users -->
<p> </p>
</div></td>
</tr>
</table>
</body>
</html>
|
Ich wollte erstmal mit der ID ausprobieren, deswegen auch nur die ID in der while-Schliefe
|
|
|
|
|
|
|
 |
     |
 |
Thies
Webmaster


Alter: 43
Anmeldungsdatum: 04.08.2003
Beiträge: 1424
Wohnort: Thüringen

|
|
Kann ich das irgendwo online sehen, damit ich weiss, was genau passiert resp. nicht passiert. Sonst steuere ich die Titanic durch den Nebel
Kommt ein Fehlerhinweis oder so?
CU
Frank-Andre
|
|
|
|
|
_________________ if ( $ahnung == 'keine' ) { use ( Suche ) }
if ( $antwort == 0 ) { post ( $frage ) }
|
|
 |
      |
 |
Chriha
Newbie

Alter: 27
Anmeldungsdatum: 27.03.2005
Beiträge: 24
Wohnort: Ruhpolding

|
|
Ui, sorry ... hatte ich vergessen. Fehler werden keine angezeigt.
Leider hab ich das nur auf der Festplatte, werd es deswegen morgen, wenn ich wieder komme, mal raufladen.
|
|
|
|
|
|
|
 |
     |
 |
Thies
Webmaster


Alter: 43
Anmeldungsdatum: 04.08.2003
Beiträge: 1424
Wohnort: Thüringen

|
|
Das wäre gut, weil ohne "optische Begutachtung" habe ich kaum eine Chance was herauszufinden.
CU
Frank-Andre
|
|
|
|
|
_________________ if ( $ahnung == 'keine' ) { use ( Suche ) }
if ( $antwort == 0 ) { post ( $frage ) }
|
|
 |
      |
 |
Chriha
Newbie

Alter: 27
Anmeldungsdatum: 27.03.2005
Beiträge: 24
Wohnort: Ruhpolding

|
|
Also, ich hab jetz ein paar Probleme gehabt, weil auf meinem Heimserver PHP 5 läuft und auf dem Ersatz nur PHP 4. Die Seite wird aber nun so angezeigt, wie sie bei mir auch ausschaut.
Hier
|
|
|
|
|
|
|
 |
     |
 |
Thies
Webmaster


Alter: 43
Anmeldungsdatum: 04.08.2003
Beiträge: 1424
Wohnort: Thüringen

|
|
Füge bitte mal nach
| Code:
|
while ($users = mysql_fetch_array($users_sql))
{
|
folgendes ein:
| Code:
|
|
print_r($users); echo "<br /><br />";
|
Dann kann ich sehen, ob überhaupt was aus der DB gelesen wird.
CU
Frank-Andre
|
|
|
|
|
_________________ if ( $ahnung == 'keine' ) { use ( Suche ) }
if ( $antwort == 0 ) { post ( $frage ) }
|
|
 |
      |
 |
Chriha
Newbie

Alter: 27
Anmeldungsdatum: 27.03.2005
Beiträge: 24
Wohnort: Ruhpolding

|
|
 |
     |
 |
Thies
Webmaster


Alter: 43
Anmeldungsdatum: 04.08.2003
Beiträge: 1424
Wohnort: Thüringen

|
|
Fehler schon gesehen?
Der Tabelleneintrag lautet nicht id sondern userid, also musst Du das $users['id'] durch $users['userid'] ersetzen.
Verständlich?
CU
Frank-Andre
|
|
|
|
|
_________________ if ( $ahnung == 'keine' ) { use ( Suche ) }
if ( $antwort == 0 ) { post ( $frage ) }
|
|
 |
      |
 |
Chriha
Newbie

Alter: 27
Anmeldungsdatum: 27.03.2005
Beiträge: 24
Wohnort: Ruhpolding

|
|
Gott bin ich doof! Geht also jetzt. Werd jetzt mal ein wenig rumtüfteln und mich dann wieder melden, wenn ich wieder nicht weiterkomme.
Ich bedanke mich sehr für Deine Hilfe!!!
|
|
|
|
|
|
|
 |
     |
 |
Thies
Webmaster


Alter: 43
Anmeldungsdatum: 04.08.2003
Beiträge: 1424
Wohnort: Thüringen

|
|
Gern geschehen. Melde Dich, wenn ich weiterhelfen soll.
Ach ja, ändere im Template den Block
| Code:
|
<!-- BEGIN users -->
<table width="70%" border="0">
<tr>
<td width="7%">Platz</td>
<td width="25%">Name</td>
<td width="33%">Erfahrung</td>
<td width="26%">Platz</td>
</tr>
<tr>
<td>{rang}</td>
<td>{username}</td>
<td>{erfahrung}</td>
<td>{id}</td>
</tr>
</table>
<!-- END users -->
|
in
| Code:
|
<table width="70%" border="0">
<tr>
<td width="7%">Platz</td>
<td width="25%">Name</td>
<td width="33%">Erfahrung</td>
<td width="26%">Platz</td>
</tr>
<!-- BEGIN users -->
<tr>
<td>{rang}</td>
<td>{username}</td>
<td>{erfahrung}</td>
<td>{id}</td>
</tr>
</table>
<!-- END users -->
|
damit die Überschrift nur einmal angezeigt wird.
CU
Frank-Andre
|
|
|
|
|
_________________ if ( $ahnung == 'keine' ) { use ( Suche ) }
if ( $antwort == 0 ) { post ( $frage ) }
|
|
 |
      |
 |
Chriha
Newbie

Alter: 27
Anmeldungsdatum: 27.03.2005
Beiträge: 24
Wohnort: Ruhpolding

|
|
Alles klar! Herzlichen Dank nochmal
|
|
|
|
|
|
|
 |
     |
 |
Chriha
Newbie

Alter: 27
Anmeldungsdatum: 27.03.2005
Beiträge: 24
Wohnort: Ruhpolding

|
|
Jetz brauch ich leider nochmal Deine Hilfe bei dem Template. Ich möchte Blöcke in Blöcken anzeigen lassen, bekomme aber immer folgende Fehlermeldung:
| Zitat:
|
|
Fatal error: Call to a member function on a non-object in C:\apachefriends\xampp\htdocs\game\haendler.php on line 73
|
Ich hab das so gemacht, wie es auch in der Beispieldatei (weiter oben) gemacht wird. Ist aber anscheinend nicht richtig.
Meine Dateien schauen so aus
haendler.html
| Code:
|
<!-- BEGIN show_autos -->
<form method="post" action="haendler.php">
<table width="80%" border="0" align="center" cellpadding="0">
<tr bgcolor="#9797FF" class="style2">
<td width="836" class="additional"><div align="center">:: <a href="javascript:display('show_bmw')">BMW</a> ::</div></td>
</tr>
<tr>
<td class="style2"><table width="100%" border="0" align="center" class="additional2" id="show_bmw">
<tr bgcolor="#B7B7FF">
<td width="3%" class="style2"> </td>
<td width="14%" class="style2"><div align="left">Firma</div></td>
<td width="18%" class="style1">Modell</td>
<td width="14%" class="style1">Hubraum</td>
<td width="14%" class="style1">Power</td>
<td width="14%" class="style1">Zylinder</td>
<td width="14%" class="style1">Vmax</td>
<td width="15%" class="style1"><div align="left" class="style1">0 - 100 kmh </div></td>
<td width="12%" align="center" valign="middle" class="style1"><div align="left">Kosten</div></td>
<td width="10%" align="center" valign="middle" class="style1"><div align="left">Level</div></td>
</tr>
<tr bgcolor="#B7B7FF" class="style1">
<td class="style2"> </td>
<td class="style2"> </td>
<td class="style1"> </td>
<td class="style1"> </td>
<td class="style1"> </td>
<td class="style1"> </td>
<td class="style1"> </td>
<td class="style1"> </td>
<td align="center" valign="middle" class="style1"><div align="left"></div></td>
<td align="center" valign="middle" class="style1"> </td>
</tr>
<!-- BEGIN show_bmws -->
<tr bgcolor="#B7B7FF" class="style1">
<td align="left" valign="top" class="style2"><input name="autos" type="radio" value="{radioid}"></td>
<td class="style1"><div align="left">{firma}</div></td>
<td class="style1"><div align="left">{modell}</div></td>
<td class="style1">{hubraum}</td>
<td class="style1"><div align="left">{ps}</div></td>
<td class="style1">{zylinder}</td>
<td class="style1"><div align="left">{kmh}</div></td>
<td class="style1"><div align="left">{beschleunigung}</div></td>
<td align="center" valign="middle" class="style1"><div align="left">{kosten}</div></td>
<td align="center" valign="middle" class="style1"><div align="left">{level}</div></td>
</tr>
<!-- END show_bmws -->
<tr bgcolor="#B7B7FF" class="style1">
<td align="left" valign="top" class="style2"> </td>
<td class="style1"><div align="left"></div></td>
<td class="style1"><div align="left"></div></td>
<td class="style1"> </td>
<td class="style1"><div align="left"></div></td>
<td class="style1"> </td>
<td class="style1"><div align="left"></div></td>
<td class="style1"><div align="left"></div></td>
<td align="center" valign="middle" class="style1"><div align="left"></div></td>
<td align="center" valign="middle" class="style1"><div align="left"></div></td>
</tr>
<tr bgcolor="#B7B7FF" class="style1">
<td colspan="11" class="style2"><div align="left"> </div>
<div align="left"></div>
<div align="left"></div>
<div align="left"></div>
<div align="left"></div>
<div align="left"></div>
<div align="center">
<input class="submit" type="submit" name="kaufen" value="Kaufen">
</div></td>
</tr>
</table>
</td>
</tr>
</table>
</form>
<!-- END show_autos -->
|
| PHP:
|
<?php else
{
$t_autos_zeigen = $t -> fetchBlock("show_autos");
// -------------------------------------
// ----- BMWs --------------------------
// -------------------------------------
$bmw_sql = mysql_query("SELECT id, firma, modell, hubraum, ps, zylinder, beschleunigung, vmax, kosten, level, bild
FROM autos
WHERE firma = 'BMW'
ORDER BY level ASC")
or die (mysql_error());
$t_bmw = $t -> fetchBlock("show_bmws");
while ($bmw = mysql_fetch_array($bmw_sql))
{
$t_bmw -> assign("radioid",$bmw['id']);
$t_bmw -> assign("firma",$bmw['firma']);
$t_bmw -> assign("modell",$bmw['modell']);
$t_bmw -> assign("hubraum",$bmw['hubraum']);
$t_bmw -> assign("ps",$bmw['ps']);
$t_bmw -> assign("zylinder",$bmw['zylinder']);
$t_bmw -> assign("kmh",$bmw['vmax']);
$t_bmw -> assign("beschleunigung",$bmw['beschleunigung']);
$t_bmw -> assign("kosten",$bmw['kosten']);
$t_bmw -> assign("level",$bmw['level']);
$t -> assign("show_bmws",$t_bmw);
$t_autos_zeigen -> assign("show_bmws", $t_bmw);
$t_bmw -> reset();
}
}
$t -> assign("auto_vorhanden",$t_vorhanden);
$t -> assign("auto_zuhoch",$t_zuhoch);
$t -> assign("auto_zuteuer",$t_zuteuer);
$t -> assign("auto_gekauft",$t_gekauft);
$t -> assign("show_autos", $t_autos_zeigen);
// Template ausgeben
$t ->out();
|
Ich hab jetzt nur den wesentlichen Code genommen, um es übersichtlicher für Dich zu halten.
Ich hoffe ich nerve Dich mit meinen Problemen nicht, wenn ja, einfach schreiben
|
|
|
|
|
|
|
 |
     |
 |
Thies
Webmaster


Alter: 43
Anmeldungsdatum: 04.08.2003
Beiträge: 1424
Wohnort: Thüringen

|
|
Du nervst nicht, ich bin nur dieses Wochenende kaum online.
Solange ich nicht weiss, welches genau die Zeile 73 in der haendler.php ist, wird es schwer. Und poste am besten mal die ganze haendler.php als Anhang.
CU
Frank-Andre
|
|
|
|
|
_________________ if ( $ahnung == 'keine' ) { use ( Suche ) }
if ( $antwort == 0 ) { post ( $frage ) }
|
|
 |
      |
 |
Chriha
Newbie

Alter: 27
Anmeldungsdatum: 27.03.2005
Beiträge: 24
Wohnort: Ruhpolding

|
|
Sorry, ich vergas
Dieser Fehler kommt nun:
| Zitat:
|
|
Fatal error: Call to a member function on a non-object in C:\apachefriends\xampp\htdocs\game\haendler.php on line 93
|
Lass Dir ruhig Zeit ...
|
| haendler.txt |
| Beschreibung: |
|
 Download |
| Dateiname: |
haendler.txt |
| Dateigröße: |
4.62 KB |
| Heruntergeladen: |
111 mal |
|
|
|
|
|
 |
     |
 |
Thies
Webmaster


Alter: 43
Anmeldungsdatum: 04.08.2003
Beiträge: 1424
Wohnort: Thüringen

|
|
Frage: was soll die Zeile
| Code:
|
|
$t_autos_zeigen -> assign("show_bmws", $t_bmw);
|
bewirken, die erscheint mir aktuell vollkommen überflüssig, vor allem an dieser Stelle.
Innerhalb der Schleife des Blockes "show_bmws" dürfen auch nur dessen Variablen übertragen werden, der Block "show_autos" ist der übergeordnete und der müsste danach (nach Ende der Schleife) aufgerufen werden. In diesem Block hast Du aber keine Variablen, denn die kommen alle nur im Block "show_autos" vor.
Du musst die Blöcke von innen nach aussen aufrufen und immer nur die Variablen "austauschen", die explizit in diesem Block (ohne die der inneren Blöcke!) vorkommen. Wenn in einem Block gar keine Variable vorkommt, ist es entweder kein richtiger Block oder ich setze einen Dummy, also {dummy} der mit (Leerzeichen) ersetzt wird.
Verstanden, was ich meine?
CU
Frank-Andre
|
|
|
|
|
_________________ if ( $ahnung == 'keine' ) { use ( Suche ) }
if ( $antwort == 0 ) { post ( $frage ) }
|
|
 |
      |
 |
|
|