Logo - MyWebsolution.de
User gesamt  :  2324851
User online  :  6
KubaSeoTräume, PHP Forum, PHP Community and more ... MyWebsolution.de!
   
   
 
Registrieren Login User F.A.Q Suche Home

eingeloggt bleiben

MyWebsolution.de Foren » Anfängerfragen PHP und MYSQL » ausgabe und blättern

Seite: 1 2  > Posts pro Seite: 5 10 20
Autor Thread
10.01.2007 09:52 Uhr ausgabe und blättern
ulmli
Forenuser
registriert 03.01.2007
wohnt in
Beiträge 46
Hallo Flitze, hallo Ihr,
ich stehe schon wieder vor zwei Problemen.

Zum ersten:

Ich mache mal ein Beispiel nehmen wir an ich wollte Interpreten und Alben speichern.
jeder interpret hat verschieden alben die ich ja separt in einer Tabelle verknüpfe.
Wenn ich die jetzt ausgeben will dann sieht das so aus

das wäre die Tabelle mit Interpret und Album wo jeder Datensatz genauso ausgegeben wird.

Herbert Grönemeyer | Bochun
Herbert Grönemeyer | Ö
Herbert Grönemeyer | Mensch
usw.

kann ich in php das irgendwie verwirklichen, dass ich danach eine Ausgabe bekomme wo ich den Interpreten dann aber nur einmal habe und trotzdem alle Alben bekomme?


Herbert Grönemeyer | Bochum
da steht dann nix | Ö
da auch net | Mensch

Also dass ich quasi den Datensatz Interpret nur einmal bekomme und die anderen aber schon angezeigt werden?


Die zweite Frage:
Wie kann es denn funktonieren bei der Datenbankausgabe zurück zu gehen auf die vorherige Seite einfach mit einem Button?
Also das ich so wie die Seiten durchblättere, geht sowas überhaupt ich begreife nicht wie das gehen kann, bzw. wie das zu verwirklichen ist.
Wäre klasse könntest Du mir nochmal helfen Flitze oder wer anderes.
Liebe Grüße
ulmli

Dieser Beitrag wurde am 10.01.2007 um 09:55:47 Uhr von ulmli zum 3. Mal editiert.
Profil ansehen
10.01.2007 19:50 Uhr
Flitze
Administrator
registriert 17.10.2006
wohnt in Eschwege
Beiträge 332
Hey ulmli,

also zu deinem ersten Problem wäre es hilfreich, wenn du mal die Struktur deiner Datenbanktabellen postest, damit ich mich da ein wenig besser reindenken kann, denn eigentlich sollte das nicht allzuschwer sein.

Zu 2.
guckstu dieses Tutorial


Profil ansehen Mail senden
10.01.2007 23:54 Uhr
ulmli
Forenuser
registriert 03.01.2007
wohnt in
Beiträge 46
Hallo Flitze,
erstmal vielen Dank das Tut habe ich übersehen :oops::oops:

Die Datenbank sieht wie folgt aus.
Es gibt eine Tabelle mit Interpreten, Album, Lieder
1 Interpret kann viele Alben haben
1 Interpret kann viele Lieder haben
1 Album hat kann viele Lieder haben, aber auf verschiedenen Alben können gleiche Lieder sein.

eine Tabelle Interpret
id_inter, interpret
eine Tabelle Alben
id_album, albumname
eine Tabelle Lieder
id_lieder, Titel

die habe ich eine Verknüpfungstabelle
Inter_album
id_ver1,id_inter, id_album
und eine
id_ver2, id_album, id_lieder
id_ver3, id_inter, id_lieder

so das wären die Tabellen mal villeicht ist das nicht ganz ok, dann bin ich für
tipps natürlich sehr dankbar :) wenn man es anders besser machen kann.
Die DB ist nicht so groß dass mans nicht ändern könnte wenn man etwas einfacher haben kann.
Grüßlis an Dich
ulmli
Profil ansehen
11.01.2007 11:40 Uhr
Flitze
Administrator
registriert 17.10.2006
wohnt in Eschwege
Beiträge 332
Ich würde die Verknüpfungstabellen weglassen und die Tabellen so aufbauen

Code:
 Tabellenname:   Interpreten
+---------------+--------------+------+-----+---------+---------------+
| NAME          | TYP          | NULL | KEY | DEFAULT | Extras        |
+---------------+--------------+------+-----+---------+---------------+
| ID_Inter      | INT          |      | PRI |         |Auto_Increment |
| Interpret     | VARCHAR(255) |      |     |         |               |
+---------------+--------------+------+-----+---------+---------------+

 Tabellenname:   Alben
+---------------+--------------+------+-----+---------+---------------+
| NAME          | TYP          | NULL | KEY | DEFAULT | Extras        |
+---------------+--------------+------+-----+---------+---------------+
| ID_Alben      | INT          |      | PRI |         |Auto_Increment |
| ID_Inter      | INT          |  X   |     |         |               |
| Album         | VARCHAR(255) |      |     |         |               |
+---------------+--------------+------+-----+---------+---------------+

 Tabellenname:   Lieder
+---------------+--------------+------+-----+---------+---------------+
| NAME          | TYP          | NULL | KEY | DEFAULT | Extras        |
+---------------+--------------+------+-----+---------+---------------+
| ID_Lieder     | INT          |      | PRI |         |Auto_Increment |
| ID_Alben      | INT          |  X   |     |         |               |
| ID_Inter      | INT          |  X   |     |         |               |
| Lied          | VARCHAR(255) |      |     |         |               |
+---------------+--------------+------+-----+---------+---------------+



Die Tabellen kannst du jetzt einfach joinen und ausgeben lassen, was dann so aussehen könnte:

PHP:
// Wenn du alle Alben zu allen Interpreten haben willst
$sql = "SELECT
                a.Album,
                i.Interpret
        FROM
                Alben a,
                Interpreten i
        WHERE
                a.ID_Inter = i.ID_Inter
       ";
$result = mysql_query($sql);
// Tabelle erstellen
echo "<table>\n";
$interpret = "";
while($row=mysql_fetch_assoc($result)) {
    echo " <tr>\n";
    echo "  <td>\n";
    // Prüfen, ob ein neuer Interpret vorliegt
    if($interpret!=$row['Interpret']){
        // Neuen Interpreten speichern
        $interpret=$row['Interpret'];
        // Neuen Interpreten ausgeben
        echo $interbret."\n";
    }
    // falls es der gleiche Interpret ist,
    // den Namen nicht noch einmal schreiben
    else {
        echo "&nbsp;\n";
    }
    echo "  </td>\n";
    echo "  <td>\n";
    echo $row['Album']."\n";
    echo "  </td>\n";
    echo " <tr>\n";
}
echo "</table>\n";


Achtung, der Code ist nicht getestet, können also Syntaxfehler drin sein!


Profil ansehen Mail senden
11.01.2007 15:50 Uhr
ulmli
Forenuser
registriert 03.01.2007
wohnt in
Beiträge 46
Hallo Flitze,
Danke!
nu hab ich ein kleines Problem, nämlich deine letzte Tabelle der Datenbank.
Code:
Tabellenname:   Lieder
+---------------+--------------+------+-----+---------+---------------+
| NAME          | TYP          | NULL | KEY | DEFAULT | Extras        |
+---------------+--------------+------+-----+---------+---------------+
| ID_Lieder     | INT          |      | PRI |         |Auto_Increment |
| ID_Alben      | INT          |  X   |     |         |               |
| ID_Inter      | INT          |  X   |     |         |               |
| Lied          | VARCHAR(255) |      |     |         |               |
+---------------+--------------+------+-----+---------+---------------+


die du angibst.

Wenn ich den Liednamen in der Tabelle mit eingeben, kann es ja sein, dass ich den doppelt eingeben muss. Nämlich wenn das Lied auf verschiedenen Alben ist.
Beispiel:
ein Lied ist auf drei verschiedenen Alben
dann muss ich doch dreimal den Liedtitel eingeben, dass ich das auch für drei verschieden ID_Alben habe... oder? Verstehe ich das falsch und ich will ja eigentlich doppelte Sachen doch vermeiden... oder nimmt man sowas dann einfach in kauf?
Grüßle
ulmli
Profil ansehen
11.01.2007 17:18 Uhr
Flitze
Administrator
registriert 17.10.2006
wohnt in Eschwege
Beiträge 332
Zitat:
oder? Verstehe ich das falsch und ich will ja eigentlich doppelte Sachen doch vermeiden... oder nimmt man sowas dann einfach in kauf?

Also ich würde es 'in Kauf' nehmen, weil ich es für sauberer halte, für jedes Lied nen eigenen Datensatz zu haben.

Man könnte sich auch umständlich was mit nem String als Datenfeld zusammenbasteln, bei dem man die einzelnen ID_Alben durch nen Trennzeichen trennt, aber ehrlich gesagt ist das wahrscheinlich aufwendiger und unperformanter als für jedes Lied einen eigenen Datensatz anzulegen.


Profil ansehen Mail senden
11.01.2007 19:04 Uhr
ulmli
Forenuser
registriert 03.01.2007
wohnt in
Beiträge 46
Huhu Flitze,
ok, dann werde ich das mal wieder umbauen, und so machen.
wenns nicht klappt frage ich nochmal :-)
wenn ich darf und noch nicht all zu sehr nerve.
Grüße an dich
ulmli
Profil ansehen
11.01.2007 19:06 Uhr RE:
Flitze
Administrator
registriert 17.10.2006
wohnt in Eschwege
Beiträge 332
Zitat:
ulmli
Huhu Flitze,
ok, dann werde ich das mal wieder umbauen, und so machen.
wenns nicht klappt frage ich nochmal :-)
wenn ich darf und noch nicht all zu sehr nerve.
Grüße an dich
ulmli


Klar doch, kein Problem ;)


Profil ansehen Mail senden
11.01.2007 19:36 Uhr
Negura
Forenposter
 
registriert 06.12.2006
wohnt in
Beiträge 57
Guten Abend die Herrn,

Ich bin mir da nun nicht so sicher, aber bei Flitzes struktureller Darstellung der Tabellen würde ich in der Tabelle Lieder die Spalte InterpretID auslassen, da durch die Verknüpfung durch AlbenID schon ein Quellenbezug besteht. Kurz gesagt, das müsste ein Normalisierungsschritt sein und Redundanz einschränken.

Viel Erfolg
Gruß Negura
Profil ansehen
11.01.2007 21:13 Uhr
Flitze
Administrator
registriert 17.10.2006
wohnt in Eschwege
Beiträge 332
Normalerweise würde ich dir Recht geben, aber das würde bedeuten, dass ein Lied zwingend auf einem Album sein muss. Was ist aber mit Singles etc..?


Profil ansehen Mail senden
11.01.2007 21:26 Uhr
Negura
Forenposter
 
registriert 06.12.2006
wohnt in
Beiträge 57
da gibt es ja viele lösungen:

album mit der ID 1 wird als globaler Container für Singles benutzt, oder es wird eine neue tabelle angelegt (tab_typ oder tab_single) wie man es nunmal lieber mag, oder singles bekommen einfach NULL als AlbumID.

Gruß Negura
Profil ansehen
12.01.2007 15:36 Uhr
Flitze
Administrator
registriert 17.10.2006
wohnt in Eschwege
Beiträge 332
Zitat:
..oder singles bekommen einfach NULL als AlbumID.

Womit sich wiederum keine Beziehung zum Interpreten herstellen ließe..

Ich halte von den Normalisierungsformen sowieso nicht so furchtbar viel, zumal es auch viele gibt, die ihre Tabellen bewusst denormalisieren. Ich habe die Daten einfach lieber kompakt und spare mir damit den einen oder anderen JOIN beim Auslesen.


Profil ansehen Mail senden
12.01.2007 16:20 Uhr RE:
Negura
Forenposter
 
registriert 06.12.2006
wohnt in
Beiträge 57
...

Zitat:
Womit sich wiederum keine Beziehung zum Interpreten herstellen ließe..

Stimmt, aber das ist die Schuld vom Alkohol, da hatte ich gestern Abend nun nicht dran gedacht. Du gibst aber auch nie NACH, die anderen Lösungen würden doch gehen. ;(

Zitat:
Ich halte von den Normalisierungsformen sowieso nicht so furchtbar viel, zumal es auch viele gibt, die ihre Tabellen bewusst denormalisieren. Ich habe die Daten einfach lieber kompakt und spare mir damit den einen oder anderen JOIN beim Auslesen.

Der Wikipedia Artikel ist da aber eigentlich ganz nett zu diesem Thema, du solltest für die anderen Leute hier doch ein Vorbild sein. ;)

Gruß Negura
Profil ansehen
12.01.2007 17:07 Uhr
Flitze
Administrator
registriert 17.10.2006
wohnt in Eschwege
Beiträge 332
Ja stimmt, die Lösungen würden funktionieren, aber ich würde sie nicht verwenden ^^ Ich wollte nur meinen Standpunkt begründen ;)

Ich hab damals den Arktikel dazu auf Junetz über die 5 Normalformen gelesen.

Ich zitiere mal den Abschnitt über Denormalisierung

Zitat:
Denormalisierung der Tabellen

Im Prinzip kann man die Tabellen, die man nach den fünf Normalisierungen erhalten hat, 1:1 in der DB verwenden. Es ist jedoch zu prüfen, ob man in der Normalisierungswut die Tabellen nicht zu sehr auseinandergerissen hat. Tabellen, die denselben Primärschlüssel haben, können ohne weiteres zusammengelegt werden, ohne gegen eine Normalisierungsform zu verstoßen.
Bei umfangreichen Datenbeständen mit hohen Zugriffszahlen kann es sich jedoch teilweise empfehlen, aus Performancegründen wieder eine gewisse Denormalisierung herzustellen. Da wir aber keine so hohen Zugriffszahlen und Datenbestände haben, daß der Server überlastet werden könnte, können wir diesen Schritt getrost übergehen.
Hierbei kann man sagen, daß es weniger problematisch ist, mit sich nicht ändernden Daten gegen die Normalformen zu verstoßen. Bei diesen entfällt nämlich das Problem, daß beim Ändern nicht alle Daten verändert werden und dadurch Widersprüche entstehen. Trotzdem sollte man sich immer im klaren darüber sein, wann man gegen die Normalformen verstoßen hat!



Profil ansehen Mail senden
16.01.2007 16:27 Uhr
ulmli
Forenuser
registriert 03.01.2007
wohnt in
Beiträge 46
Hallo Filtze,
wollte Dir nur sagen das mit der DB hat supergut hingehauen, danke
mit der Blätterfunktion hab ich noch nicht gemacht :-)
gebe aber dann bescheid.
Grüßlis
ulmli
Profil ansehen
26.01.2007 12:51 Uhr
ulmli
Forenuser
registriert 03.01.2007
wohnt in
Beiträge 46
Hallo Flitze,
nun habe ich heute die Blätterfunktion probiert, aber die funktioniert bei mir nicht ich blicke nicht wohin ich das ganze linken muss.
Ich mache eine Datenbankabfrage da sind z.B 25 Datensätze und ich möchte immer 10 auf eine Seite. Es klappt soweit bis zum verlinken so wie ich glaube, muss ich da nicht die seite angeben wo die abfragen und die ausgaben sind? ich blicke das Blättern irgendwie nicht wie das funktioniert. Kannst du mir das evtl. erklären, wäre echt klasse.
Grüße
ulmli
Profil ansehen
26.01.2007 15:47 Uhr
Flitze
Administrator
registriert 17.10.2006
wohnt in Eschwege
Beiträge 332
Also, das ganze beruht auf der LIMIT-Expression in der Datenbankabfrage. Dieser Ausdruck gibt an, ab wo und wie viele Datensätze aus der Datenbank ausgelesen werden. Sinnvoll ist es in diesem Zusammenhang auch, die Datensätze vorher zu sortieren.

So, nehmen wir mal an, du willst die letzten 10 Nachrichten aus der Tabelle auslesen, dann sieht das so aus:

PHP:
<?php
    $sql 
"SELECT
                    Nachricht
            FROM
                    Tabelle
            ORDER BY
                    Datum DESC
            LIMIT
                    0,10
           "
;
    
$result mysql_query($sql) OR die("<pre>\n".$sql."</pre>\n".mysql_error());
    while(
$row mysql_fetch_assoc($result)) {
    
// Daten anzeigen
    
}
?>

Der Query sortiert jetzt alle Nachrichten nach dem Datum (älteste zuerst) und gibt nur den 0.,1.,2.,3.,...,9. Datensatz aus, also insgesamt 10 Stück, angefangen bei 0. Damit kann man zwar noch nicht blättern, aber der "Grundstein" ist gelegt.

Um das ganze etwas "variable" zu gestalten, lege ich anstatt der 0 eine Variable an. Da sich die Variable später je nachdem, welche Seite der Benutzer sehen will, ändern muss, muss es entweder eine $_GET oder eine $_POST Variable sein. Für $_POST bräuchte ich ein Formular, das ist mir aber zu aufwendig und deshalb entscheide ich mich für das $_GET. Die Daten werden also über die URL übergeben, aber dazu später mehr. Ich nenne die Variable einfach mal $_GET['seite'].

Der Query sieht dann folgendermaßen aus:

PHP:
<?php
    $sql 
"SELECT
                    Nachricht
            FROM
                    Tabelle
            ORDER BY
                    Datum DESC
            LIMIT
                    "
.$_GET['seite'].",10
           "
;
    
$result mysql_query($sql) OR die("<pre>\n".$sql."</pre>\n".mysql_error());
    while(
$row mysql_fetch_assoc($result)) {
    
// Daten anzeigen
    
}
?>

Das reicht aber noch nicht ganz, denn wenn du das Skript jetzt mit datei.php?seite=2 (datei.php musst du eben durch den Dateinamen ersetzen), aufrufst, dann steht folgendes in dem Query:

PHP:
<?php
    $sql 
"SELECT
                    Nachricht
            FROM
                    Tabelle
            ORDER BY
                    Datum DESC
            LIMIT
                    2,10
           "
;
    
$result mysql_query($sql) OR die("<pre>\n".$sql."</pre>\n".mysql_error());
    while(
$row mysql_fetch_assoc($result)) {
    
// Daten anzeigen
    
}
?>

Eigentlich wollten wir ja die nächsten 10 Nachrichten ausgeben lassen, also die 10., 11., 12., ... , 19. aber stattdessen bekommen wir die 2., 3., 4., ..., 12. ! Deshalb müssen wir dem Skript noch sagen, wo es denn auf der 2. Seite anfangen soll zu zählen. Ich erinnere, wie wollen den 10., 11., 12., ... , 19. Datensatz auslesen, also müssen wir bei 10 anfangen. Wie kommen wir jetzt aber von seite=2 auf 10?

Nun, indem man einfach -1 und *10 rechnet: (2-1)*10 = 10. Also fügen wir das noch unserem Query hinzu:

PHP:
<?php

    $seite 
= ($_GET['seite']-1)*10;
    
    
$sql "SELECT
                    Nachricht
            FROM
                    Tabelle
            ORDER BY
                    Datum DESC
            LIMIT
                    "
.$seite.",10
           "
;
    
$result mysql_query($sql) OR die("<pre>\n".$sql."</pre>\n".mysql_error());
    while(
$row mysql_fetch_assoc($result)) {
    
// Daten anzeigen
    
}
?>


So, in $seite steht jetzt unser gewünschter "offset", also der Startpunkt des auslesens.
Kurze Kontrolle mir ?seite=2:

PHP:
<?php

    $seite 
= (2-1)*10;
    
// $seite = 10;
    
    
$sql "SELECT
                    Nachricht
            FROM
                    Tabelle
            ORDER BY
                    Datum DESC
            LIMIT
                    10,10
           "
;
    
$result mysql_query($sql) OR die("<pre>\n".$sql."</pre>\n".mysql_error());
    while(
$row mysql_fetch_assoc($result)) {
    
// Daten anzeigen
    
}
?>

Datensätze 10., 11., 12., ... , 19. werden ausgelesen.

So, nun haben wir schonmal den "richtigen" Algorhytmus für die Seitenzahlen gefunden. Nun wäre es aber blöd, wenn der User immer selbst: ?seite=1, ?seite=2, ... eingeben müsste, also erzeugen wir ein paar Links, die das Ganze angenehmer machen, Seitenzahlen eben ;).

Dazu muss aber zunächst einmal ausgerechnet werdern, wie viele Seiten als Seitenzahlen überhaupt angezeigt werden sollen und dazu muss man wiederum wissen, wie viele Datensätze sich insgesamt in der Datenbank befinden. Dazu benutzt man einfach COUNT(*). Dann muss man das Ergebnis noch durch 10 teilen, weil ja pro Seite 10 Nachrichten angezeigt werden sollen. Bei 25 Nachrichten würde das bedeuten 25/10 = 2.5 Seiten. Da es natürlich keine halben Seiten gibt, müssen wir auf 3 Seiten aufrunden, weil die restlichen 5 Nachrichten ja auch noch angezeigt werden sollen. Das Ganze sieht dann so aus:

PHP:
<?php
    $sql 
"SELECT
                    COUNT(*)
            FROM
                    Tabelle
           "
;
    
$result mysql_query($sql) OR die("<pre>\n".$sql."</pre>\n".mysql_error());
    
$anzahl mysql_result($result0);
    
    
$seiten_gesamt ceil($anzahl/10); // Seiten ausrechnen und aufrunden
?>


So, jetzt wo wir wissen, dass es 3 Seiten sind, erzeugen wir auch die 3 Seitenzahlen. Ich erinnere nochmal: Die Seite, die angezeigt werden soll, ergibt sich aus dem $_GET Parameter, so dass nur ein entsprechender Link erzeugt werden muss. Für 3 Seiten würde das bedeuten:

<a href="datei.php?seite=1">1</a>
<a href="datei.php?seite=2">2</a>
<a href="datei.php?seite=3">3</a>

Da wir das natürlich nich von Hand aus eintragen können, weil sich die Anzahl der Nachrichten ja immer weiter erhöht, muss das mit einer Schleife gemacht werden. Das sieht dann so aus:

PHP:
<?php
    $sql 
"SELECT
                    COUNT(*)
            FROM
                    Tabelle
           "
;
    
$result mysql_query($sql) OR die("<pre>\n".$sql."</pre>\n".mysql_error());
    
$anzahl mysql_result($result0);
    
    
$seiten_gesamt ceil($anzahl/10); // Seiten ausrechnen und aufrunden

    
for($i=1$i<=$anzahl$i++)
        echo 
"<a href=\"datei.php?seite=".$i."\">$i</a> \n";
?>


Damit wäre die Blätterfunktion eigentlich fertig und funktionstüchtig, aber jetzt müssen noch ein paar Sonderfälle betrachtet werden und zwar:

1. Das Skript wird ohne Parameterübergabe aufgerufen (kein ?seite=1 )
2. Das Skript wird mit einer Paramterübergabe aufgerufen, die kleiner als 1 oder größer als die höchste Seitenzahl ist (im Beispiel oben wären das z.B. ?seite=0 und ?seite=4)
3. Das Skript wird nicht mir einer Zahl, sondern mit einem Buchstaben oder so aufgerufen.

Das alles ist möglich, weil der User die URL ja manipulieren kann, wie er will.

Das Skript muss jetzt also noch um folgendes ergänzt werden:

PHP:
<?php
    
// zu 1. Prüfen, ob ?seite=.. übergeben wurde, falls nein, Seite 1 laden
    
$_GET['seite']=isset($_GET['seite'])?(int)$_GET['seite']:1;
    
// zu 3. Durch (int) 'casten' wir $_GET['seite'] auch gleich als Zahl, 
    // also kann auch ein Buchstabe drin stehn, ohne das was passiert

    // zu 2. höchste Seitenzahl ausrechnen 
    
$sql "SELECT
                    COUNT(*)
            FROM
                    Tabelle
           "
;
    
$result mysql_query($sql) OR die("<pre>\n".$sql."</pre>\n".mysql_error());
    
$anzahl mysql_result($result0);
    
    
$seiten_gesamt ceil($anzahl/10); // Seiten ausrechnen und aufrunden

    // zu 2. Prüfen, ob der übergeben Wert zu groß oder zu klein ist und
    // wenn das der Fall ist, den Wert anpassen

    
if($_GET['seite'] < 1)
        
$_GET['seite'] = 1;
    if(
$_GET['seite'] > $seiten_gesamt)
        
$_GET['seite'] = $seiten_gesamt;
?>


So, jetzt haben wir glaube ich alles beachtet. Eventuell sollte man noch abbrechen, wenn sich keine Datensätze in der Datenbank befinden, also wenn $anzahl == 0 ist, aber das kriegste sicher selber hin ;)

Das komplette, fertige Skript sieht dann so aus:

PHP:
<?php
    
// 1. Prüfen, ob ?seite=.. übergeben wurde, falls nein, Seite 1 laden
    
$_GET['seite']=isset($_GET['seite'])?(int)$_GET['seite']:1;
    
// 3. Durch (int) 'casten' wir $_GET['seite'] auch gleich als Zahl, 
    // also kann auch ein Buchstabe drin stehn, ohne das was passiert

    // 2. höchste Seitenzahl ausrechnen 
    
$sql "SELECT
                    COUNT(*)
            FROM
                    Tabelle
           "
;
    
$result mysql_query($sql) OR die("<pre>\n".$sql."</pre>\n".mysql_error());
    
$anzahl mysql_result($result0);
    
    
$seiten_gesamt ceil($anzahl/10); // Seiten ausrechnen und aufrunden

    // 2. Prüfen, ob der übergeben Wert zu groß oder zu klein ist und
    // wenn das der Fall ist, den Wert anpassen

    
if($_GET['seite'] < 1)
        
$_GET['seite'] = 1;
    if(
$_GET['seite'] > $seiten_gesamt)
        
$_GET['seite'] = $seiten_gesamt;

    
// Seitenzahlen anzeigen
    
for($i=1$i<=$anzahl$i++)
        echo 
"<a href=\"datei.php?seite=".$i."\">$i</a> \n";

    
// Starpunkt für das Auslesen berechnen
    
$seite = ($_GET['seite']-1)*10;
    
    
// Datensätze auslesen
    
$sql "SELECT
                    Nachricht
            FROM
                    Tabelle
            ORDER BY
                    Datum DESC
            LIMIT
                    "
.$seite.",10
           "
;
    
$result mysql_query($sql) OR die("<pre>\n".$sql."</pre>\n".mysql_error());
    while(
$row mysql_fetch_assoc($result)) {
    
// Daten anzeigen
    
}
?>


Soo.. können Syntaxfehler drin sein, ist nicht getestet! Aber die Funktionsweise sollte klar sein :)

Gruß Flitze

Dieser Beitrag wurde am 27.01.2007 um 00:01:13 Uhr von Flitze zum 5. Mal editiert.


Profil ansehen Mail senden
26.01.2007 21:39 Uhr
ulmli
Forenuser
registriert 03.01.2007
wohnt in
Beiträge 46
Hallo Flitze,
vielen Dank jetzt glaube ich, ich habs begriffen :mygod:
ich probiers jetzt einfach mal aus.
grüße und schönes wochenende
ulmli
Profil ansehen
28.01.2007 11:33 Uhr
ulmli
Forenuser
registriert 03.01.2007
wohnt in
Beiträge 46
Hallo Flitze,
nu habe ich noch ein Problem. Die Blätterfunktion funzt prima wenn ich vorher keine Parameter übergebe.
Es sieht bei mir so aus:
ich habe ein Suchformular in welchem ich halt Werte übergebe mit denen suche ich dann und die Ausgabe funktioniert gut nur eben geht das Blättern nicht, weil wenn ich auf die nächste Seite in der Blätterfunktion gehe, dann gibts ja keine Suchfrage weil die Parameter von dem Suchformular fehlen. Jetzt habe ich mir gedacht ich übergebe einfach die Suchanfrage bei der Verlinkung mit, aber nu so glaube ich weiß aber nicht ob es so ist kommt das Get mit dem Post in Konflikt, also es wird der Wert den ich mit Get übergebe nicht genommen ich nehme an es liegt daran dass ich den ja vorher schon mit POST aus dem Formular hole.
Weißt Du, was ich da machen könnte?
Gruß
ulmli
Profil ansehen
28.01.2007 12:09 Uhr
Flitze
Administrator
registriert 17.10.2006
wohnt in Eschwege
Beiträge 332
naja, du kannst die daten aus dem formular ja auch einfach per $_GET übergeben. Google machts ja auch so.


Profil ansehen Mail senden
Seite: 1 2  > no reply
Powered by Pascal Landau © 2006 MyWebsolution.de
Designed by Pascal Landau © 2006 MyWebsolution.de
 
 
 
 
Home Email Impressum Disclaimer Statistik