Gegen Bilderklau - Das Original (https://www.gegen-bilderklau.net/index.php)
- Design, Website, Copyright (https://www.gegen-bilderklau.net/board.php?boardid=80)
--- Homepagehilfe (https://www.gegen-bilderklau.net/board.php?boardid=27)
---- Homepagehilfe - Archiv (https://www.gegen-bilderklau.net/board.php?boardid=139)
----- [PHP & MySQL] Forum - Selbstgecodet | Zeigt nichts an (https://www.gegen-bilderklau.net/thread.php?threadid=101818)
Geschrieben von Startpost-Retter am 01.04.2007 um 11:51:
Forum - Selbstgecodet | Zeigt nichts an
-
Geschrieben von _-PinkPunker-_ am 01.04.2007 um 12:12:
ich kenn mich ja fast gar nicht mit PHP aus, aber ich hab auch mal so einen Fehler gehabt, dass ich etwas eingetragen habe und es wurde zweimal angezeigt, einmal richtig einmal falsch. Vroni hat mir da empfohlen
php: |
1:
|
if ($ergebnis == true) { |
|
vor die Ausgabe der Erfolgsmeldung (vlt in deinem Fall: Das Thema/Der Beitrag wurde erfolgreich erstellt/gepostet.) zu setzen.
Wie gesagt, ich kenn mich fast gar nicht mit PHP aus, aber vlt probierst du das mal.
Geschrieben von VRH Pferde am 05.04.2007 um 13:27:
php: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
|
while (($reihe = mysql_fetch_assoc($result1)) AND ($member = mysql_fetch_assoc($result2))) {
echo "<table border="1" width="90%" id="rs">
<tr>
<td width="74%" height="304">
<p align="center">$reihe[entry]<br>
<hr><br>
$member[signatur]</p></td>
<td width="26%" height="304">
<p align="center"><b>$member[name]<br>
</b>member[title]<br>
<img src="$member[avatar]"></td>
</tr>
<tr>
<td width="100%" colspan="2" height="19">
<p align="center">Geschrieben am $row[date] | BeitragsID $row[id]</td>
</tr>
</table><br>";
} |
|
Vielleicht solltest du zwei Whileschleifen machen, sodass erstmal die Whileschleife für die Posts und dann in der Post-Schleife die Schleife für das Mitglied...
LG Neele
Geschrieben von Gonzo am 05.04.2007 um 13:53:
Hi,
kenne mich mit PHP auch nicht aus (nur mit Perl), weiß aber, daß es hilft, wenn man einem Laien erklärt, was der Code machen soll. Meist findet man den Fehler dann schnell.
(Einen debugger gibt's nicht?)
Also: Erklär mir mal mit eigenen Worten, was der obige Code machen soll, am besten Zeile für Zeile.
(Wenn Du magst.)
Geschrieben von Gonzo am 05.04.2007 um 17:55:
Hi,
so, dann wollen wir mal sehen. Ist zwar nicht ganz so detalliert, daß ein Laie das auf Anhieb versteht, aber so mit 20Jahren DB-Erfahrung könnte es evtl. hinhauen.
Zunächst fällt auf, daß die While-Schleife in 15-17 offenbar zweimal durchlaufen wird. Dies weist darauf hin, daß die SELECT-Anweisung zweimal fündig geworden ist. Er findet also zwei Datensätze in der Tabelle "x_boards" und durchläuft die WHILE-Loop zweimal. Warum könnte das so sein?
(Hilfreich wäre auch eine Strukturbeschreibung von "x_boards".)
Ferner fällt mir auf, daß Du den Wert von $result nicht abfragst. Was, wenn dort schon ein Fehler auftrat?
Wenn ich das richtig sehe, könntest Du zuvor über die Funktion:
mysql_num_rows($result)
herausbekommen, wieviele Sätze (Tabellenzeilen) der SELECT gefunden hat. Wäre auch eine Hilfe.
Ferner frage ich mich, ob die Syntax
$row[title]
richtig ist (müssen da nicht evtl. Anführungsstriche vor und hinter "title"?).
Also so:
$row["title"]
???
Soweit erstmal dazu. Jetzt muß ich weg, schau später noch mal herein.
(Wär doch gelacht, oder?)
Geschrieben von Gonzo am 05.04.2007 um 20:04:
Hi,
also mal ganz auf die Schnelle zwischendurch:
XOR wäre logisch falsch, denn es gilt:
1 XOR 0 ergibt TRUE
1 XOR 1 ergibt aber FALSE
==> Wenn also beide Bedingungen zutreffen, würde die Schleife niemals durchlaufen.
Dennoch: Laß uns systematisch vorgehen:
Was kommt heraus, wenn Du
mysql_num_rows($result)
ausgeben läßt?
Mach das erstmal, dann sehen wir weiter. Bis später!
Geschrieben von Gonzo am 06.04.2007 um 11:15:
Moin moin.
Insgesamt sehe ich nun drei Whiles (mit den zugehörigen Selects), wobei die ersten beiden logisch identisch sind. Könnte man da die erste nicht weglassen und die zweite entsprechend ausbauen?
(Noch was: Da es normalerweise nur EINEN Thread mit einer ID gibt, kann man die WHILE-Loop sowieso weglassen)
Also ungefähr so:
1. Abschnitt: Anzeige des Themas und der Thread-Eröffnungsdaten:
$sql0 = "SELECT * FROM x_boards WHERE `id` = '$thread' AND `art` = '1'";
$result0 = mysql_query($sql0);
if (!$result0) {
echo "Anfrage ($sql0) konnte nicht ausgeführt werden : " . mysql_error();
exit;
}
if (mysql_num_rows($result0) == 0) { Deine Fehlerroutine }
$thread = mysql_fetch_assoc($result0)
{ echo-Anweisungen mit dem Inhalt des Asso-Arrays }
Fertig. Nun Step 2:
2. Suche und Anzeige der anhängigen Posts
$sql1 = "SELECT * FROM x_boards WHERE 'thread' = '$thread' AND `art` = '2'";
$result1 = mysql_query($sql1);
$postcount = mysql_num_rows($result1);
Echo "Es gibt $postcount Posts zu diesem Thread";
$threadposts = mysql_fetch_assoc($result1)
while ($threadposts = mysql_fetch_assoc($result1))
{ echo-Anweisungen mit dem Inhalt des Asso-Arrays }
Müßte so gehen.
Falls nicht:
Stell doch mal den Inhalt der Datei im Klartext hier rein. Dann kann man sehen, wie die Daten gespeichert sind.
Geschrieben von Gonzo am 06.04.2007 um 11:32:
Glückwunsch!
Forensoftware: Burning Board, entwickelt von WoltLab GmbH