Wo ist hier der Fehler?
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
abfrage
argument
ausgabe
ausgeben
bereich
code
datum
first
forum
karpfen
limit
netz
not
offset
ordern
start
statement
support
verwenden
werte verarbeiten
-
Hey,
ich habe folgenes gebastelt.^^
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta http-equiv="content-type" content="text/html; charset=windows-1250"> <meta name="generator" content="PSPad editor, www.pspad.com"> <title></title> <? $seite = htmlspecialchars(mysql_escape_string($_GET['seite'])); //Wenn man keine Seite angegeben hat, ist man automatisch auf Seite 1 if(!isset($seite)) { $seite = 1; } //Verbindung zu Datenbank aufbauen //Einträge pro Seite: Hier 15 pro Seite $eintraege_pro_seite = 20; //Ausrechen welche Spalte man zuerst ausgeben muss: $start = $seite * $eintraege_pro_seite - $eintraege_pro_seite; ?> <table style='height:20px; background:#ECFFD0; border:1px solid #C1D2F6;'> <tr> <td align='left'>Forum|<a href='uebersicht.php'>Übersicht</a>|<a href='Forumschreiben.php'>Neues Thema</a></td> </tr> </table> <br> <ul id='Bereich'> <table width='100%''> <tr> <td width='30%'><b>Thema:</b></td> <td width='25%'><b>Bereich:</b></td> <td width='25%'><b>Antworten:</b></td> </tr> </table> <br><? $abfrage = "SELECT * FROM Forum WHERE Bereich !='Support' ORDER BY Datum DESC LIMIT $start, $eintraege_pro_seite"; $ergebnis = mysql_query($abfrage); while($row = mysql_fetch_object($ergebnis)) { $Titel = $row->Titel; $Gründer = $row->Gründer; $Id = $row->Id; $Bereich = $row->Bereich; // Hier die Ausgabe der Einträge $query2 = ("SELECT * FROM benutzerdaten WHERE id = '$Gründer' "); $result2 = mysql_query($query2); $row = mysql_fetch_assoc($result2); $Nickname = $row['Nickname']; echo" <hr style='color:#C1D2F6; border-style: dashed;'> <table width='100%''> <tr> <td width='30%'><a href='ForumLesen.php?Id=$Id'>$Titel</a></td> <td width='25%'><a href='ThemaAnsehen.php?Thema=$Bereich'>$Bereich</a></td> "; $query1 = ("SELECT * FROM Forumamtwort WHERE Id like '$Id'"); $result1 = mysql_query($query1); $row = mysql_num_rows($result1); echo " <td width='25%'>$row</td> </tr> </table> <br> "; } //Jetzt kommt das "Inhaltsverzeichnis", //sprich dort steht jetzt: Seite: 1 2 3 4 5 $result = mysql_query("SELECT Id FROM Forum"); $menge = mysql_num_rows($result); //Errechnen wieviele Seiten es geben wird $wieviel_seiten = $menge / $eintraege_pro_seite; //Ausgabe der Seitenlinks: echo "<div align=\"center\">"; echo "<b>Seite:</b> "; //Ausgabe der Links zu den Seiten for($a=0; $a < $wieviel_seiten; $a++) { $b = $a + 1; //Wenn der User sich auf dieser Seite befindet, keinen Link ausgeben if($seite == $b) { echo " <b>$b</b> "; } //Aus dieser Seite ist der User nicht, also einen Link ausgeben else { echo " <a href=\"?seite=$b\">$b</a> "; } } echo "</div>"; ?>
Es ging auch aber jetzt nicht mehr^^
Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in C:\xampp\htdocs\Forum_Index.php on line 54
Hilfe
Beitrag zuletzt geändert: 17.11.2009 18:21:29 von chatvz -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Du hast 2x den Tabellenname Forum im SQL-Statement:
1.
$abfrage = "SELECT * FROM Forum Forum WHERE Bereich !='Support' ORDER BY Datum DESC LIMIT $start, $eintraege_pro_seite";
2.
ungleich wird bei SQL nicht mit != gebildet sondern mit <>
3. Du solltest bei der Bennenung deiner Tabellenfelder keine Umlaute und Sonderzeichen verwenden, wie z.B. bei $row->Gründer
Beitrag zuletzt geändert: 17.11.2009 18:21:15 von karpfen -
karpfen schrieb: Du hast 2x den Tabellenname Forum im SQL-Statement: 1.
2. ungleich wird bei SQL nicht mit != gebildet sondern mit <> 3. Du solltest bei der Bennenung deiner Tabellenfelder keine Umlaute und Sonderzeichen verwenden, wie z.B. bei $row->Gründer$abfrage = "SELECT * FROM Forum Forum WHERE Bereich !='Support' ORDER BY Datum DESC LIMIT $start, $eintraege_pro_seite";
ok stimmt fehler is immer noch da -
Wie schaut denn der Code nach den jetzigen Änderungen aus?
Und kann LIMIT zwei Werte verarbeiten? Ich find da nix im Netz dazu!
Ich denke, die ORDER LIMIT Struktur muss sich auf eine ID oder sowas beziehen, nicht auf ein Datum.
Das Datum und deine Variablen werden nämlich sicher nicht im gleichen Format sein und sind deshalb auch nicht vergleichbar.
Beitrag zuletzt geändert: 17.11.2009 18:35:17 von karpfen -
karpfen schrieb:
Und kann LIMIT zwei Werte verarbeiten? Ich find da nix im Netz dazu!
LIMIT start_delimeter, number
The LIMIT clause can be used to constrain the number of rows returned by the SELECT statement. LIMIT takes one or two numeric arguments, which must both be nonnegative integer constants (except when using prepared statements).
With two arguments, the first argument specifies the offset of the first row to return, and the second specifies the maximum number of rows to return. The offset of the initial row is 0 (not 1):
SELECT * FROM tbl LIMIT 5,10; # Retrieve rows 6-15 -
tct schrieb:
karpfen schrieb: Und kann LIMIT zwei Werte verarbeiten? Ich find da nix im Netz dazu!
LIMIT start_delimeter, numberThe LIMIT clause can be used to constrain the number of rows returned by the SELECT statement. LIMIT takes one or two numeric arguments, which must both be nonnegative integer constants (except when using prepared statements). With two arguments, the first argument specifies the offset of the first row to return, and the second specifies the maximum number of rows to return. The offset of the initial row is 0 (not 1): SELECT * FROM tbl LIMIT 5,10; # Retrieve rows 6-15
Hab den Fehler Gefunden.
Ich habe ja oben
<?
$seite = htmlspecialchars(mysql_escape_string($_GET['seite']));
//Wenn man keine Seite angegeben hat, ist man automatisch auf Seite 1
if(!isset($seite))
{
$seite = 1;
}
das stehen. das prob is wenn ich nicht $seite = $_GET['seite']; sondern $seite = htmlspecialchars(mysql_escape_string($_GET['seite'])); geht es nicht mehr!!?!?!?
Hife
LG -
Lass es dir doch mal ausgeben, dann wirst du es wahrscheinlich sehen.
Ich vermute dass sowas in der Art passiert: mysql_real_escape_string setzt " oder ' und htmlspecialchars macht dann noch ein \ davor, somit hast du was ganz anders. -
Also wenn ich den Schutz eingebaut habe und oben neben den Link ?seite=1 setze geht es aber wenn ich nix setze soll er ja automatisch 1 setzen
if(!isset($seite))
{
$seite = 1;
}
das geht ihrgent wie nicht.
mh komich... -
Dann solltest du !isset($GET_['seite']) versuchen...
Außerdem solltest du das htmlspecialchars entfernen und NUR mysql_real_escape_string verwenden., das reicht erstens völlig aus und wird wahrscheinlich auch deine Probleme lösen.
Beitrag zuletzt geändert: 17.11.2009 18:48:47 von tct -
tct schrieb: Dann solltest du !isset($GET_['seite']) versuchen...
ok ich habs ihrgent wie hingekrigt^^
$seite = htmlspecialchars(mysql_escape_string($_GET['seite']));
//Wenn man keine Seite angegeben hat, ist man automatisch auf Seite 1
if($seite <= 0)
{
$seite = 1;
}
Beitrag zuletzt geändert: 17.11.2009 18:56:04 von chatvz -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage