Seitenumbruch und Neuste Beiträge zu erst
Moin,
Hier erst einmal das komplette "Script":
1. Frage
Was habe ich Falsch gemacht?
Das soll (in diesem Fall) immer nur 2 Beiträge meines News/Gästebuch (denkt euch was auch immer aus) ausgeben.
Das ganze wird dann über z.B. news?page=2 (soll dann unter Limit 2-4 ausgeben) gesteuert.
Nur klappt das irgendwie noch nicht ganz, den Fehler konnte ich aber noch nicht finden.
"Warning: mysql_num_fields(): supplied argument is not a valid MySQL result resource in index.php on line 16. "
2. Frage
Wie kann ich die komplette Datenbank umdrehen, oder einstellen, das die neusten Beiträge ganz oben landen? (Rückwärz auslesen oder sowas von mir aus auch).
MfG Author
Hier erst einmal das komplette "Script":
|
|
PHP-Quelltext |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
<?
$db=mysql_connect(" "," "," ");
mysql_select_db(" ");
$page=$_GET['page'];
$ende=$page*2;
$anfang=$ende-2;
$anfrage="SELECT * FROM news LIMIT ";
$anfrage.=$start;
$anfrage.=",";
$anfrage.=$ende;
$ergebnis=mysql_query($anfrage);
$spaltenzahl=mysql_num_fields($ergebnis);
while($zeile=mysql_fetch_row($ergebnis)) {
print("<br></br>");
print($zeile[0]);
print("</br>");
print($zeile[1]);
print("<hr>");
}
mysql_close($db);
?>
|
1. Frage
Was habe ich Falsch gemacht?
Das soll (in diesem Fall) immer nur 2 Beiträge meines News/Gästebuch (denkt euch was auch immer aus) ausgeben.
Das ganze wird dann über z.B. news?page=2 (soll dann unter Limit 2-4 ausgeben) gesteuert.
Nur klappt das irgendwie noch nicht ganz, den Fehler konnte ich aber noch nicht finden.
"Warning: mysql_num_fields(): supplied argument is not a valid MySQL result resource in index.php on line 16. "
2. Frage
Wie kann ich die komplette Datenbank umdrehen, oder einstellen, das die neusten Beiträge ganz oben landen? (Rückwärz auslesen oder sowas von mir aus auch).
MfG Author
also meiner meinung nach funktioniert das limit statement bei mysql so:
limit 2,2
liefert die datensätze 3 und 4
also SELECT * FROM tabelle LIMIT anfang, anzahl
weiters kannst du mit echo mysql_error(); den genauen fehler ausgeben.
ich denke auch mal, dass du deine tabelle hoffentlich mit einem id feld versehen hast.
dann kannst du einfach noch "ORDER BY id DESC" in dein mysql statement einfügen.
jperl
limit 2,2
liefert die datensätze 3 und 4
also SELECT * FROM tabelle LIMIT anfang, anzahl
weiters kannst du mit echo mysql_error(); den genauen fehler ausgeben.
ich denke auch mal, dass du deine tabelle hoffentlich mit einem id feld versehen hast.
dann kannst du einfach noch "ORDER BY id DESC" in dein mysql statement einfügen.
jperl
Konfuzius [chinesischer Philosoph (551 - 479 v. Chr.)]
Das Entscheidende am Wissen ist, daß man es beherzigt und anwendet.
Das Entscheidende am Wissen ist, daß man es beherzigt und anwendet.
Vielen Dank, ich bin jetzt einen großen Schritt weiter. *bedank*
Hier aber mein Verblüffendes Ergebniss (Seitenumbruch):
Ohne Angaben:
(Insgesammt 6 News)
Ausgabe:
News 4
News 6
Mit News/index.php?page=1
Ausgabe:
News 5
News 3
Mit "News/index.php?page=2"
News 1
News 2
An der DB habe ich noch nichts verändert, das wollte ich dann als nächsten Schritt machen. Hier das, was ich verändert habe:
Ist mir da ein Rechenfehler unterlaufen?
Hier aber mein Verblüffendes Ergebniss (Seitenumbruch):
Ohne Angaben:
(Insgesammt 6 News)
Ausgabe:
News 4
News 6
Mit News/index.php?page=1
Ausgabe:
News 5
News 3
Mit "News/index.php?page=2"
News 1
News 2
An der DB habe ich noch nichts verändert, das wollte ich dann als nächsten Schritt machen. Hier das, was ich verändert habe:
|
|
PHP-Quelltext |
1 2 3 4 5 6 7 8 |
$page=$_GET['page'];
$start=$page*2;
$anfrage="SELECT * FROM news LIMIT
$anfrage.=$start;
$anfrage.=",2";
$ergebnis=mysql_query($anfrage);
|
Ist mir da ein Rechenfehler unterlaufen?
naja die frage ist wie deine datenbank struktur ausschaut. wenn du kein id feld hast musst du zuerst die anzahl aller datensätze rausfinden und dann das limit anpassen.
wenn du hingegen eine id spalte hast geht es um einiges einfacher.
zu deinem fehler:
klar stimmt dein statement noch überhaupt nicht.
mal angenommen seite 1:
dann ist $start = 2;
-> SELECT * FROM news LIMIT 2,2
und dann nimmt er den 3. und den 4. datensatz.
wundert mich etwas wie die datensätze ausgegeben werden. sollte aber an der datenbank liegen.
weiters solltest später noch abfragen ob eine seite mit der url übergeben wurde, bzw ob die seite zulässig ist.
jperl
wenn du hingegen eine id spalte hast geht es um einiges einfacher.
zu deinem fehler:
klar stimmt dein statement noch überhaupt nicht.
mal angenommen seite 1:
dann ist $start = 2;
-> SELECT * FROM news LIMIT 2,2
und dann nimmt er den 3. und den 4. datensatz.
wundert mich etwas wie die datensätze ausgegeben werden. sollte aber an der datenbank liegen.
weiters solltest später noch abfragen ob eine seite mit der url übergeben wurde, bzw ob die seite zulässig ist.
jperl
Konfuzius [chinesischer Philosoph (551 - 479 v. Chr.)]
Das Entscheidende am Wissen ist, daß man es beherzigt und anwendet.
Das Entscheidende am Wissen ist, daß man es beherzigt und anwendet.
Mhmm.. Ich verstehe leider nicht genau was du mir sagen willst, also hier mal die Tabelle (news) die ich jetzt benutze:
titel | inhalt
varchar(20) | text
Welche Optionen muss ich bei phpMyAdmin benutzen, um eine "ID" Spalte zu erstellen? Ich kann die ganze Tabelle löschen, das währe nicht das Problem. Das ich "auto_increment" benutzen muss, weiß ich bereits. Nur halt die genauen Informationen dazu nicht.
Und wie schaffe ich es jetzt diese Einträge nach der Reihe (und vor allem in Form von Seiten) auszugeben?
titel | inhalt
varchar(20) | text
Welche Optionen muss ich bei phpMyAdmin benutzen, um eine "ID" Spalte zu erstellen? Ich kann die ganze Tabelle löschen, das währe nicht das Problem. Das ich "auto_increment" benutzen muss, weiß ich bereits. Nur halt die genauen Informationen dazu nicht.
Und wie schaffe ich es jetzt diese Einträge nach der Reihe (und vor allem in Form von Seiten) auszugeben?
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »author.psi« (21. Februar 2006, 21:27)
ähm ... kein bock dir zu erklären wo du in phpMyAdmin klicken musst um die tabelle zu erstellen, hier hast mal den mysql-code dafür um die tabelle zu erstellen.
joa und beim script machst dann halt sowas hier:
|
|
Quellcode |
1 2 3 4 5 6 |
CREATE TABLE`news` ( `id` int unsigned auto_increment , `titel` varchar( 20 ) , `inhalt` text, PRIMARY KEY (`id`) ); |
joa und beim script machst dann halt sowas hier:
|
|
Quellcode |
1 |
SELECT `titel`, `inhalt` FROM `news` ORDER BY `id` DESC LIMIT $start, $anzahl |
RE: Seitenumbruch und Neuste Beiträge zu erst
hi,
glaube du suchst sowas in der art`?
war ursprünglich keine Klasse aber dachte mir das es so einfach einzusetzen ist. Leider steckt noch ne make drin. weiß nur nicht wo. aber funktionieren tuts...
glaube du suchst sowas in der art`?
|
|
PHP-Quelltext |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
class QueryLimit
{
var $page;
var $limit = 5;
var $pagecount;
var $begin = 1;
// Mathe für die dies können....
function queryLimit($lines, $limit)
{
$this->pagecount=ceil($lines/$this->limit);
if(!isset($_REQUEST['page'])) {
$this->page = 1;
} else {
$this->page = $_REQUEST['page'];
}
if ($this->page<1) {
$this->page=1;
}
if ($this->page>$this->pagecount) {
$this->page=$this->pagecount;
}
$this->begin=($this->page-1)*$this->limit;
}
// links um Seiten durchzublättern?
function display_links()
{
for ($i=1; $i<=$this->pagecount; $i++)
{
if ($i==$this->page) {
echo "<b>" . $i . "</b> ";
} else {
echo "<a href=\"" . getenv("SCRIPT_NAME") . "?site=news&page=".$i."\" alt=\"\">" . $i . "</a> ";
}
}
}
// array mit Limit Werten für SQL Query zurückgeben
function get_limit()
{
$val = array('start' => $this->begin,'end' => $this->limit);
return $val;
}
}
|
war ursprünglich keine Klasse aber dachte mir das es so einfach einzusetzen ist. Leider steckt noch ne make drin. weiß nur nicht wo. aber funktionieren tuts...


