Webdesign in Siegen

Blätterfunktion

Fragen zum Thema PHP können hier gestellt werden

Moderator: Basti

Blätterfunktion

Beitragvon Pearl am 29.08.2008, 21:35

Hallo

Ich habe da ein Problem mit einer Blätterfunktion.
Ein recht langer Text soll auf mehrere Seiten aufgeteilt werden.
Irgentwie gelingt es mir nicht diese so ein zubinden das sie auch wieder ausgegeben wird.

Ich lege den Code mal bei.

Code: Alles auswählen
<?php
// Datendefinition für Datenbankverbindung.
$host     = "localhost"; 
$user     = "hahaha";         
$password = "verrat ich nicht";     
$database = "sumsum";                                   
$table    = "Blaettern";   

// Datendefinition für die Clientausgabe
$start = (isset($start)) ? abs((int)$start) : 0;
$limit = 10;                     

// Verbindung zu MySQL-Datenbank herstellen .
@mysql_connect($host,$user,$password)
   or die("Abbruch: Verbindung zu '$host'"
         ." konnte nicht hergestellt werden.");

// Benötigte Datenbank auswählen .
@mysql_select_db($database)
   or die("Abbruch: Datenbank '$database' konnte nicht"
         ." selektiert werden.<br><br>MySQL sagt: ".mysql_error());

// Feststellen der Anzahl der verfügbaren Datensätze.
$resultID = @mysql_query("SELECT COUNT(ID) FROM ".$table);
$total    = @mysql_result($resultID,1);

$start    = ($start >= $total) ? $total - $limit : $start;

// Datenbankabfrage ausführen.
$query    = "SELECT ID,INHALT FROM ".$table
           ." LIMIT ".$start.",".$limit;
$resultID = @mysql_query($query);

// Ergebnisse lesen und an den Client ausgeben
while ($data = mysql_fetch_array($resultID))
{
  echo $data["ID"].": ".$data["INHALT"]."<br>";
}

// Zurück- und Vorblättern
if ($start > 0)
{
  $newStart = ($start - $limit < 0) ? 0 : ($start-$limit);
  echo "<a href=".$_SERVER['PHP_SELF']."?start=".$newStart
      .">&lt;&lt; zurück</a>";
}

if ($start + $limit < $total)
{
  $newStart = $start + $limit;
  echo " <a href=".$_SERVER['PHP_SELF']."?start=".$newStart
      .">vor &gt;&gt;</a>";
}
?>
Der kürzeste Weg,zwischen zwei Menschen ist ein lächeln !
Benutzeravatar
Pearl
Mitglied
 
Beiträge: 36
Registriert: 20.10.2005, 17:37
Wohnort: Löbau

Re: Blätterfunktion

Beitragvon Basti am 29.08.2008, 23:47

Wo genau liegt denn das Problem? Wird überhaupt nichts angezeigt oder zumindest ein Teil der vorgesehenen Ausgaben?

Einen Syntax-Fehler konnte ich gerade zwar nicht finden, allerdings bietet das Script nicht unbedingt die beste Lösung.

An die MySQL-Queries solltest du zur Überprüfung aber jeweils ein OR die(mysql_error()); anhängen, um eventuelle Fehlermeldungen bei deren Ausführung anzuzeigen.
Zum Beispiel hier:
Code: Alles auswählen
$resultID = @mysql_query("SELECT COUNT(ID) FROM ".$table) OR die(mysql_error());


Generell kann ich dir aber einmal unser PHP Tutorial zu diesem Theme ans Herz legen: Seitenaufteilung in PHP.
Selbst wenn du nicht die Seitennavigation, sondern lediglich den Teil zum Blättern benötigst, findest du dort schon teils bessere Lösungen.

Vielleicht hilft dir das ja etwas weiter. Mehr kann ich momentan anhand des Quelltextes jedenfalls nicht sagen.
Benutzeravatar
Basti
Moderator
 
Beiträge: 1974
Registriert: 15.06.2006, 17:33
Wohnort: Rheinbreitbach

Re: Blätterfunktion

Beitragvon Pearl am 30.08.2008, 09:32

Danke Dir. Ich werde es mir sofort mal ansehen.
Der kürzeste Weg,zwischen zwei Menschen ist ein lächeln !
Benutzeravatar
Pearl
Mitglied
 
Beiträge: 36
Registriert: 20.10.2005, 17:37
Wohnort: Löbau

Re: Blätterfunktion

Beitragvon Pearl am 30.08.2008, 10:50

Hallo

Ich habe mir den Code jetzt eingebaut. Allerdings kommt eine Fehlermeldung. Ich gehe davon aus das ich den Code falsch eingbaut habe. Was PHP betrifft bin ich absoluter Neuling. Habe bis jetzt immer mit HTML und CSS gearbeitet.
Das Newsscript konnte ich erfolgreich installieren nur mit der Blätterfunktion hapert es.
Vielleicht kann man mir hier helfen ?
Ich mal der komplette Code der Index.php :

Code: Alles auswählen
<?php
    error_reporting(E_ALL);
    include "config.php";
@mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS) OR die(mysql_error());
    mysql_select_db(MYSQL_DATABASE) OR die(mysql_error());
      $result = mysql_query("SELECT * FROM Blaettern ORDER BY id");
        $gesamt = mysql_num_rows($result);
        $eintraege_pro_seite = 10;
      $num_sites = ceil($gesamt/$eintraege_pro_seite);

if(empty($_GET['site']))
{
  $site = 1;
}
elseif($_GET['site'] <= 0 || $_GET['site'] > $num_sites)
{
  $site = 1;
}
else
{
  $site = $_GET['site'];
}

$links = array();
if($site != 1)
{
  $prev = $site-1;
  $links[] = '<a href="index.php?site='.$prev.'">&laquo;</a>';
}
for($i=1;$i<=$num_sites;$i++)
{
  if($i == $site)
  {
    $links[] = $i;
  }
  else
  {
    $links[] = '<a href="index.php?site='.$i.'">'.$i.'</a>';
  }
}
if($site != $num_sites)
{
  $next = $site+1;
  $links[] = '<a href="index.php?site='.$next.'">»</a>';
}
$link_string = implode(" | ", $links);
$start = ($site-1)*$eintraege_pro_seite;
$start_nr = $start+1;
$ende = $start+10;

if($ende > $gesamt)
{
  $ende = $gesamt;
}
echo "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\"\n";
    echo "         \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">\n";
   echo "<html>\n";
echo "<head>\n";
echo "<title>TITELTITEL</title>\n";
echo "<link rel=\"stylesheet\" type=\"text/css\" href=\"style.css\" >\n";
echo "        <meta http-equiv=\"Content-Type\"
                     content=\"text/html; charset=ISO-8859-1\" />\n";
echo "<style type=\"text/css\">n";
echo "</style>\n";
echo "</head>\n";
echo "<div class=\"body\">\n";
    echo "<div class=\"photo\"><img src=\"image/Foto1.jpg\" /></div>\n";
    echo "<div class=\"navbar\"/>\n";
    echo "<div id=\"inner\">\n";
        echo "<div class=\"contentHome\"> \n";
        echo $link_string.'<br />'.$start_nr.' - '.$ende;
      $result2 = mysql_query("SELECT * FROM Blaettern ORDER BY id DESC LIMIT ".$start.",".$eintraege_pro_seite);
      while($row = mysql_fetch_array($result2))
{
  echo $row[index];   <----- Zeile 75 (Fehler)
}
        echo "</div>\n";
   echo "</div>\n";
echo "</div>\n";
echo "<div class=\"shadows\"/>\n";
echo "<div class=\"logo\"/>\n";

echo "<div class=\"navigationContent\">\n";
    echo "<a class=\"navigation\" href=\"index.html\"><img src=\"image/HomeButton.png\" alt=\"\" width=\"12\" height=\"16\" class=\"navigation\"/></a>\n";
    echo "<span class=\"navigationSpacer\"/>\n";
    echo "<a class=\"navigation\" href=\"about.php\">About</a>\n";
    echo "<span class=\"navigationSpacer\"/>\n";
    echo "<a class=\"navigation\" href=\"download\">Download</a>\n";
    echo "<span class=\"navigationSpacer\"/>\n";
    echo "<a class=\"navigation\" href=\"tutorials\">Tutorials</a>\n";
    echo "<span class=\"navigationSpacer\"/>\n";
    echo "<a class=\"navigation\" href=\"skins.php\">Skins</a>\n";
    echo "<span class=\"navigationSpacer\"/>\n";
    echo "<a class=\"navigation\" href=\"buynow.php\">Buy Now!</a>\n";
    echo "<span class=\"navigationSpacer\"/>\n";
    echo "<a class=\"navigation\" href=\"services.php\">Services</a>\n";
    echo "<span class=\"navigationSpacer\"/>\n";
    echo "<a class=\"navigation\" href=\"imprint.php\">Imprint</a>\n";
echo "</div>\n";
echo "<div class=\"footer\"><img src=\"image/NewsSpacer.png\"/><br/>Copyright 2008 by </div>\n";
echo "<div class=\"news\">\n";
    echo "<div class=\"newsContent\">\n";
   include "inhalt.php";
       
    echo "</div>\n";
echo "</div>\n";
echo "</body>\n";
echo "</html>\n";
?>



Die include config.php gehört zum Newsscript.

Die Fehlermeldung ist folgende:

Notice: Use of undefined constant index-assumed'index' in www/htdocs/....../index.php on line 75


Vielen Dank schonmal im vorraus.
Der kürzeste Weg,zwischen zwei Menschen ist ein lächeln !
Benutzeravatar
Pearl
Mitglied
 
Beiträge: 36
Registriert: 20.10.2005, 17:37
Wohnort: Löbau

Re: Blätterfunktion

Beitragvon Basti am 30.08.2008, 15:04

Der Fehler liegt an der Schreibweise des Array-Elements. So wie du es geschrieben hast, würde als Wert der Inhalt der Konstanten index eingesetzt werden (Konstanten sind von der Schreibweise ähnlich der Variablen, nur eben ohne ein vorangestelltes $-Zeichen).

In deinem Fall soll aber vermutlich die Spalte index von der vorangegangenen Datenbankabfrage ausgegeben werden. Deshalb erfolgt der Aufruf über den entsprechenden Spaltennamen in Form eines Strings, also mit Anführungsstrichen:

Code: Alles auswählen
while($row = mysql_fetch_array($result2))
{
  echo $row['index'];
}


Übrigens kannst du in PHP auch Ausgaben über mehrere Zeilen machen; dann brauchst du nicht in jeder Zeile ein separates echo schreiben. Viele einzelne Ausgaben drücken nämlich auch mehr auf die Performance.

Du kannst das ganze also beispielsweise auch so schreiben:
Code: Alles auswählen
echo "<head>\n",
     "<title>TITELTITEL</title>\n";
     "<link rel=\"stylesheet\" type=\"text/css\" href=\"style.css\" >\n",
     "        <meta http-equiv=\"Content-Type\" content=\"text/html; charset=ISO-8859-1\" />\n",
     [...]
     $link_string.'<br />'.$start_nr.' - '.$ende;
Nur in der letzten Zeile wird dann ein Semikolon (;) verwendet, alle anderen enden mit einem einfachen Komma (,).
Benutzeravatar
Basti
Moderator
 
Beiträge: 1974
Registriert: 15.06.2006, 17:33
Wohnort: Rheinbreitbach

Re: Blätterfunktion

Beitragvon Pearl am 30.08.2008, 16:29

Vielen vielen Dank Basti . Nun ziegt er mir alles an :)
Aber meine div class scheint es zu ignorieren.
Läuft alles aus dem Design heraus. :?
Der kürzeste Weg,zwischen zwei Menschen ist ein lächeln !
Benutzeravatar
Pearl
Mitglied
 
Beiträge: 36
Registriert: 20.10.2005, 17:37
Wohnort: Löbau

Re: Blätterfunktion

Beitragvon Manuel am 30.08.2008, 17:50

Kurze Anmerkung: Hattest du dir eigentlich mal das Tutorial von Rene angeschaut?

Blätterfunktion - Seitenaufteilung in PHP

Wegen deinem bleibendem Problem: Hast du die Seite irgendwo online oder selbst mal mit dem Firebug analysiert? Das hilft oft sehr!

Lg,
Manuel ;-]
Benutzeravatar
Manuel
Site Admin
 
Beiträge: 9114
Registriert: 10.12.2004, 19:29
Wohnort: Asbach

Re: Blätterfunktion

Beitragvon Pearl am 30.08.2008, 18:43

Hab es mal online gestellt.
So sieht es aus :
http://visualdesigner.terravisions.de/index2.php

Doch ich habe mir das Tutorial durch gelesen.Und habe es immer noch offen und schon 5 mal gelesen.

Was mich allerdings wundert ist das ich nirgents die Daten zur Datenbank angegeben habe....
Kann es sein das er sich die Daten aus der config für das Newsscript holt ?
Denn das sollt nicht so sein,da diese auch die Variablen des Newsscriptes lädt.
Ach Mensch das ist als hätt ich ein brett vorm Kopf.
Der kürzeste Weg,zwischen zwei Menschen ist ein lächeln !
Benutzeravatar
Pearl
Mitglied
 
Beiträge: 36
Registriert: 20.10.2005, 17:37
Wohnort: Löbau

Re: Blätterfunktion

Beitragvon Pearl am 30.08.2008, 18:53

Also auch wenn ich die Datenbank-daten extra inculden tue ändert sich nicht.
Der kürzeste Weg,zwischen zwei Menschen ist ein lächeln !
Benutzeravatar
Pearl
Mitglied
 
Beiträge: 36
Registriert: 20.10.2005, 17:37
Wohnort: Löbau

Re: Blätterfunktion

Beitragvon Ingo am 30.08.2008, 20:04

Hi.

Falls es noch um das (scheinbare) Ignorieren der Divs geht: In der online-Version steht ein überlanges
Wort ohne Leerzeichen oder Trennstrich. Der Browser bricht dieses Wort nicht um, weil er nicht weiß,
an welcher Stelle. Bei Wörtern "normaler" Länge bleibt aber alles im Rahmen, auch im News-Bereich.
(Wenn du in jedem Falle verhindern willst, dass irgendetwas übersteht, müsstest du für die entsprechenden
Divs die CSS-Eigenschaft overflow auf hidden oder auto oder scroll setzen.)

Gruß, Ingo :)
Die beste Browserweiche ... sitzt zwischen den Ohren ;o]
Benutzeravatar
Ingo
Moderator
 
Beiträge: 724
Registriert: 01.04.2007, 23:21
Wohnort: Neuss/NRW

Re: Blätterfunktion

Beitragvon Pearl am 30.08.2008, 20:36

Danke Dir. :)

So mal schauen ob ich was finde wie ich dem script bei bringe das er die Daten auf die nächste Seite setzt wenn eine gewissen Zeilenanzahl erreicht ist. Denn bei einem Langem Text bringt das nicht sehr viel.
Der kürzeste Weg,zwischen zwei Menschen ist ein lächeln !
Benutzeravatar
Pearl
Mitglied
 
Beiträge: 36
Registriert: 20.10.2005, 17:37
Wohnort: Löbau


Zurück zu PHP

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast