ich habe ein kleines gästebuch-script geschrieben
zu bewundern unter: http://www.phytoplankton.info/index.php?open=gb
unter den einträgen seht ihr ja "Seite:"
ich möchte jetzt, dass jeweils nur 15 einträge pro seite angezeigt werden
wenn das gb also 45 einträge beinhaltet solen auf der ersten seite nur die neuesten 15 angezeigt werden
unter den einträgen soll dann "Seite: 1 2 3" stehen
eben 15 einträge pro seite
ich denke, ich könnt euch vorstellen, was ich vorhabe
wie kann ich sowas realisieren?
wenn dein gästebuch auf eine db zugreift, dann kannst du es so machen wie unter den links von flixxtoras beschrieben, wenn du jedoch ein gb hast, dass auf textdatein zugreift, dann musst du das nen bissel anders machen.
hier mal son grober grundriss:
(es gibt da mit sicherheit elegantere möglichkeiten das zu machen!)
PHP-Code:<?php
$gbook = file("eintraege.txt");
###########Seitenzahlen###########
$eintraege = 15; // Anzahl der Eintraege pro Seite
if(!isset($limit)) $limit = 0;
$anz = count($gbook);
$anz_pages = ceil($anz/$eintraege);
$curr_page = $limit/$eintraege;
for($a=0;$a<$anz_pages;$a++)
{
if($a != $curr_page) {
echo " <a href=\"". $PHP_SELF ."?limit=". ($a*$eintraege) ."\">". ($a+1) ."</a>";
}
else {
echo " [".($a+1)."]";
}
}
######################
$x = $limit;
$max = $limit + $eintraege;
do
{
if ($x == $max || $x > $anz || $anz == $x) break;
echo "hier gibst du einfach das ganze gedöns aus!". $gbook[$x];
/*
$gbook[x] kannst du auch noch mit explode() auseinanderflücken!
*/
$x++;
}while(1);
?>
Geändert von P4r4 (06.12.2002 um 16:41 Uhr)
versuche grad eine blätter,-funkton in eines meiner scripte einzubauen
den code für die funktion hab ich aus diesem thread
der entsprechende code sieht bei mir jetzt so aus (hoffe, es ist nicht zu konfus)
wenn ich das script jetzt aufrufe, erhalte ich folgenden fehler:Code:$entries = 15; //Wieviele Datensätze sollen pro Seite angezeigt werden? if(!isset($limit)) $limit = 0; $sqlab = "select * from plankton order by id desc"; $res = mysql_query($sqlab); $num = mysql_num_rows($res); $info = "Alle Einträge ($num)"; $sqlab = "select from plankton order by id desc limit $limit, $entries"; $res = mysql_query($sqlab); $num_pages = ceil($num/$entries); $curr_page = $limit/$entries; echo "<span class=\"heading\">$info</span><br>\n"; echo "<table width=\"500\" border=\"0\" cellspacing=\"5\" cellpadding=\"0\">\n"; echo "<tr>\n"; echo "<td height=\"30\" colspan=\"3\"> <hr width=\"100%\" size=\"1\" color=\"#CCCCCC\" noshade>\n"; echo "</tr>\n"; while ($row = mysql_fetch_array($res)) { $imgsrc = "db_upload/".$row[bild]; $size = @getimagesize($imgsrc); $loadimg = "db_upload/loadimg.php?iname=".$row[bild]; echo "<tr>\n"; echo "<td width=\"10%\"> </td>\n"; echo "<td colspan=\"2\">Taxon: <a href=\"#\" onClick=\"MM_openBrWindow('$loadimg','','width=$size[0],height=$size[1]')\">$row[taxon]</a></td>\n"; echo "</tr>\n"; echo "<tr>\n"; echo "<td width=\"10%\"> </td>\n"; echo "<td colspan=\"2\">Gattung: $row[gattung]</td>\n"; echo "</tr>\n"; echo "<tr>\n"; echo "<td width=\"10%\"> </td>\n"; echo "<td colspan=\"2\">Art: $row[art]</td>\n"; echo "</tr>\n"; echo "<tr>\n"; echo "<td width=\"10%\"> </td>\n"; echo "<td colspan=\"2\">ssp.: $row[ssp]</td>\n"; echo "</tr>\n"; echo "<tr>\n"; echo "<td width=\"10%\"> </td>\n"; echo "<td colspan=\"2\">Datum: $row[datum]</td>\n"; echo "</tr>\n"; echo "<tr>\n"; echo "<td width=\"10%\"> </td>\n"; echo "<td colspan=\"2\">Fundort: $row[fundort]</td>\n"; echo "</tr>\n"; echo "<tr>\n"; echo "<td width=\"10%\"> </td>\n"; echo "<td colspan=\"2\">Fundort Ergänzung: $row[fundort2]</td>\n"; echo "</tr>\n"; echo "<tr>\n"; echo "<td width=\"10%\"> </td>\n"; echo "<td colspan=\"2\">Tiefe in m: $row[tiefe]</td>\n"; echo "</tr>\n"; echo "<tr>\n"; echo "<td width=\"10%\"> </td>\n"; echo "<td colspan=\"2\">Größe in µm: $row[groesse]</td>\n"; echo "</tr>\n"; echo "<tr>\n"; echo "<td width=\"10%\"> </td>\n"; echo "<td colspan=\"2\">Bemerkungen: $row[bemerkungen]</td>\n"; echo "</tr>\n"; echo "<tr>\n"; echo "<td height=\"30\" colspan=\"3\"> <hr width=\"100%\" size=\"1\" color=\"#CCCCCC\" noshade>\n"; echo "</tr>\n"; } mysql_close(); ?> <tr> <td width="10%"> </td> <td>Seiten: <?php if($curr_page != 0) {?> <a href="index.php?open=db&sub=show&limit=<?php echo ($limit-$entries); ?>"> << </a> <?php } ?> <?php for($a=0;$a<$num_pages;$a++) { if($a != $curr_page) { ?> <a href="index.php?open=db&sub=show&limit=<?php echo ($a*$entries); ?>"><?php echo ($a+1); ?></a> <?php } else { echo "[".($a+1)."]"; } } ?> <?php if(($limit+$entries) < $num) {?> <a href="index.php?open=db&sub=show&limit=<?php echo ($limit+$entries); ?>"> >> </a> <?php } ?> </td> <td width="35%" align="right"><a href="#top">nach oben scrollen</a></td> </tr></table>
zeile 31 ist dieseWarning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /kunden/phytoplankton.info/webseiten/content/db_show.php on line 31
was genau mach ich falsch?Code:while ($row = mysql_fetch_array($res))
hier könnt ihr euch den fehler anschauen
hoffe, ihr könnt mir helfen
hallo philipp,
warum machst du noch ein extra Thema auf?
Du kannst doch dein Problem auch in dem Ursprungsthema posten.
Ich führe die beiden Threads mal zusammen...
sorry, hat ich ned dran gedacht
kann mir trotzdem jemand mit meinem problem aus meinem letzten post helfen?
Habe grad keine Zeit aber...
vermtlich stimmt dein Query nicht.
Hast du den Query mal mit phpMyAdmin probiert?
Ein Tipp von mit die MySQL Query Befehle (ORDER BY, SELECT) immer groß schreiben. Und am besten nicht SELECT * FROM sondern SELECT id, name, text...
Vorher:
$sqlab = "SELECT FROM plankton ORDER BY id DESC LIMIT $limit, $entries";
Nachher:
$sqlab = "SELECT FROM plankton ORDER BY id DESC LIMIT $limit,$entries";
siehe auch:
-> http://www.traum-projekt.com/forum/s...d+MySQL+result
http://www.traum-projekt.com/forum/s...d+MySQL+result
PHP-FAQ
27.4. Supplied argument is not a valid MySQL result...
-> http://www.php-faq.de/q/q-fehler-mysql-result.html
Viel Glück!
PHP-Code:<?php
$entries = 15; // Wieviele Datensätze sollen pro Seite angezeigt werden?
if(!isset($limit)) $limit = 0;
$sqlab = "SELECT * FROM plankton ORDER BY id DESC";
$res = mysql_query($sqlab);
$num = mysql_num_rows($res);
$info = "Alle Einträge ($num)";
$sqlab = "SELECT FROM plankton ORDER BY id DESC LIMIT $limit,$entries";
$res = mysql_query($sqlab);
$num_pages = ceil($num/$entries);
$curr_page = $limit/$entries;
if(!isset($limit)) $limit = 0;
$result = mysql_query("SELECT id,titel,time,content FROM news WHERE status='view'");
$anz = mysql_num_rows($result);
$result = mysql_query("SELECT id,titel,time,content FROM news WHERE status='view' ORDER BY time DESC LIMIT $limit,$eintraege");
$anz_pages = ceil($anz/$eintraege);
$curr_page = $limit/$eintraege;
echo "<span class=\"heading\">$info</span><br>\n
<table width=\"500\" border=\"0\" cellspacing=\"5\" cellpadding=\"0\">\n
<tr>\n
<td height=\"30\" colspan=\"3\"> <hr width=\"100%\" size=\"1\" color=\"#CCCCCC\" noshade>\n
</tr>\n";
while ($row = mysql_fetch_array($res))
{
$imgsrc = "db_upload/".$row[bild];
$size = @getimagesize($imgsrc);
$loadimg = "db_upload/loadimg.php?iname=".$row[bild];
echo "<tr>\n
<td width=\"10%\"> </td>\n
<td colspan=\"2\">Taxon: <a href=\"#\" onClick=\" MM_openBrWindow('$loadimg','','width=$size[0],heig
ht=$size[1]')\">$row[taxon]</a></td>\n
</tr>\n
<tr>\n
<td width=\"10%\"> </td>\n
<td colspan=\"2\">Gattung: $row[gattung]</td>\n
</tr>\n
<tr>\n
<td width=\"10%\"> </td>\n
<td colspan=\"2\">Art: $row[art]</td>\n
</tr>\n
<tr>\n
<td width=\"10%\"> </td>\n
<td colspan=\"2\">ssp.: $row[ssp]</td>\n
</tr>\n
<tr>\n
<td width=\"10%\"> </td>\n
<td colspan=\"2\">Datum: $row[datum]</td>\n
</tr>\n
<tr>\n
<td width=\"10%\"> </td>\n
<td colspan=\"2\">Fundort: $row[fundort]</td>\n
</tr>\n
<tr>\n
<td width=\"10%\"> </td>\n
<td colspan=\"2\">Fundort Ergänzung: $row[fundort2]</td>\n
</tr>\n
<tr>\n
<td width=\"10%\"> </td>\n
<td colspan=\"2\">Tiefe in m: $row[tiefe]</td>\n
</tr>\n
<tr>\n
<td width=\"10%\"> </td>\n
<td colspan=\"2\">Größe in µm: $row[groesse]</td>\n
</tr>\n
<tr>\n
<td width=\"10%\"> </td>\n
<td colspan=\"2\">Bemerkungen: $row[bemerkungen]</td>\n
</tr>\n
<tr>\n
<td height=\"30\" colspan=\"3\"> <hr width=\"100%\" size=\"1\" color=\"#CCCCCC\" noshade>\n
</tr>\n";
}
mysql_close();
?>
<tr>
<td width="10%"> </td>
<td>Seiten:
<?php
if($curr_page != 0)
{?>
<a href="index.php?open=db&sub=show&limit=<?php echo ($limit-$entries); ?>"> << </a>
<?php } ?>
<?php
for($a=0;$a<$num_pages;$a++)
{
if($a != $curr_page)
{ ?>
<a href="index.php?open=db&sub=show&limit=<?php echo ($a*$entries); ?>"><?php echo ($a+1); ?></a> <?php
}
else
{
echo "[".($a+1)."]";
}
}
?>
<?php
if(($limit+$entries) < $num)
{?>
<a href="index.php?open=db&sub=show&limit=<?php echo ($limit+$entries); ?>"> >> </a>
<?php } ?>
</td>
<td width="35%" align="right"><a href="#top">nach oben scrollen</a></td>
</tr></table>
Geändert von Flixxtoras (07.12.2002 um 15:29 Uhr)
hab den fehler gefunden
hatte blos ein "*" in der mysql_query vergessen![]()
jetzt funktioniert alles so, wie es soll
trotzdem, eine frage hab ich noch:
wie kann ich den code jetzt noch optimieren bzw. die verarbeitung beschleunigen?
undPHP-Code:$show_entries = 10; //Wieviele Datensätze sollen pro Seite angezeigt werden?
if(!isset($limit)) $limit = 0;
$sql = "SELECT * FROM plankton ORDER BY id DESC";
$res = mysql_query($sql);
$num = mysql_num_rows($res);
$sql = "SELECT * FROM plankton ORDER BY id DESC LIMIT $limit, $show_entries";
$res = mysql_query($sql);
$num_pages = ceil($num/$show_entries);
$curr_page = $limit/$show_entries;
$info = "Alle Einträge ($num)";
echo "<span class=\"heading\">$info</span><br>\n";
echo "<table width=\"500\" border=\"0\" cellspacing=\"5\" cellpadding=\"0\">\n";
echo "<tr>\n";
echo "<td height=\"30\" colspan=\"3\"> <hr width=\"100%\" size=\"1\" color=\"#CCCCCC\" noshade>\n";
echo "</tr>\n";
while ($row = mysql_fetch_array($res))
{...}
wie könnte ich z.B. folgendes realisieren:PHP-Code:<?php
if($curr_page != 0)
{
echo "<a href=\"index.php?open=db&sub=show&limit=".($limit-$show_entries)."\"> << </a>";
}
for($a=0; $a<$num_pages; $a++)
{
if($a != $curr_page)
{
echo "<a href=\"index.php?open=db&sub=show&limit=".($a*$show_entries)."\">".($a+1)."</a> ";
}
else
{
echo "<u>".($a+1)."</u> ";
}
}
if(($limit+$show_entries)<$num)
{
echo "<a href=\"index.php?open=db&sub=show&limit=".($limit+$show_entries)."\"> >> </a>";
}
?>
im moment wird über den datensätzen "Alle Einträge (*anzahl*)" angezeigt
wie kann ich daraus "Zeige Einträge 10 bis 20 von *anzahl*" machen (bezogen auf die zweite seite und ein limit von 10)?
bin für jeden vorschlag dankbar
Geändert von philipp (07.12.2002 um 16:45 Uhr)
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)