kostenloser Webspace werbefrei: lima-city


Wo ist hier der Fehler?

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    chatvz

    Kostenloser Webspace von chatvz

    chatvz hat kostenlosen Webspace.

    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'>&Uuml;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
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. 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
  4. Autor dieses Themas

    chatvz

    Kostenloser Webspace von chatvz

    chatvz hat kostenlosen Webspace.

    karpfen schrieb: 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 &lt;&gt; 3. Du solltest bei der Bennenung deiner Tabellenfelder keine Umlaute und Sonderzeichen verwenden, wie z.B. bei $row-&gt;Gründer

    ok stimmt fehler is immer noch da
  5. 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
  6. 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
  7. Autor dieses Themas

    chatvz

    Kostenloser Webspace von chatvz

    chatvz hat kostenlosen Webspace.

    tct schrieb:
    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



    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
  8. 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.
  9. Autor dieses Themas

    chatvz

    Kostenloser Webspace von chatvz

    chatvz hat kostenlosen Webspace.

    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...
  10. 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
  11. Autor dieses Themas

    chatvz

    Kostenloser Webspace von chatvz

    chatvz hat kostenlosen Webspace.

    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
  12. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!