myGully.com

myGully.com (https://mygully.com/index.php)
-   Programmierung (https://mygully.com/forumdisplay.php?f=67)
-   -   [PHP/MySQL]News system mit seiten (https://mygully.com/showthread.php?t=2043338)

frank00900 14.05.10 14:02

[PHP/MySQL]News system mit seiten
 
Meine Homepage hat jetzt ein neues Design damit das jetzt noch übersichtlich bleib bei den News will ich mehrere Seiten haben wie in ein Forum.
Code vom News System:
<?
session_start();
include ("checkuser.php");
echo '<div id="mitte" align="center">';

include ("includes/db_config.php");

$sql = "SELECT * FROM news ORDER BY ID DESC";

$db_erg = mysql_query( $sql );
if ( ! $db_erg )
{
die('Ungültige Abfrage: ' . mysql_error());
}

echo 'News:'."<br>";
echo '<p></p>';

while ($zeile = mysql_fetch_array( $db_erg, MYSQL_ASSOC))
{
echo '<strong>'.'Autor: '.'</strong>'.$zeile['autor'].'<br>';
echo '<strong>'.'Title: '.'</strong>'.$zeile['titel'];
echo '<p>'.$zeile['news'].'<p>';
echo $zeile['datum'].'<br>';
echo "<a href='forum/news_forum/view_topic.php?id=". $zeile['ID']. "'>Kommentar schreiben</a>".'<br>';
echo'<p></p>'.'<br>';

}

echo '</div>';
echo '</div>';
mysql_free_result( $db_erg );
?>


Ich will das nur 5 News pro Seite angezeigt werden !
Wie mache ich das jetzt ?

januschka 14.05.10 14:58

Wenn du möchtest werde ich dir weiterhelfen wie bei deinem letzten Thema.

Ich werde dir heute abend eine Persönliche Nachricht schreiben...jetzt habe ich keine Zeit.

Aber schon mal für den Anfang...ermittel zuerst mal wieviel Datensätze es sind und baue dir schon mal eine Linkleiste mit den Seitenzahlen. ;)

Gruß

januschka

frank00900 14.05.10 15:32

ok Danke

Irolight 14.05.10 20:02

Mach einfach folgendes:
mittels
Code:

SELECT count(*) as Anzahl FROM news
Holst du dir erst mal die Gesamt Anzahl deiner News, teilst das durch 5 und rundest auf (floor()) (man kann es auch gleich alles in der Abfrage machen, wie man will). Und kannst ohne stress mit einer schleife eine Pagination aufbauen.
Dann übergibst du mittels der URI (z.b. &seite=2 -> $_GET["Seite"]) deine Seitezahl und fügst deiner MYSQL abfrage noch den Punkt
Code:

LIMIT " . ($_GET["Seite"]*5) . ", " . ($_GET["Seite"]*5+5)
hinzu fertig :)

januschka 14.05.10 22:08

Ist aber ne ganz schlechte Lösung.
Mit floor() rundest du auch nicht auf sondern ab..man rundet mit ceil() auf.

Wo ist in deinem S***** die Linkleiste für die Seiten ?

und mit $_GET würde ich es schon gar nicht machen nur mit $_POST.

Warum jedesmal beim Seitenauruf eine Datenbankabfrage ?

Mit deiner Abfrage nach:
Code:

SELECT count(*) as Anzahl FROM news
must du jedesmal zwei Datenbankabfragen machen....völlig unsinnig, und ein count holt man wenn überhaupt erforderlich (wofür gibt es in php die function: mysql_num_rows)
aus einer spalte nicht aus allen spalten einer tabelle.

man sollte sich schon angewöhnen sauber zu programmieren und unnötige datenbank-abfragen zu vermeiden...man überlege wenn 1000 oder 100.000 user auf ein mal das s***** nutzen.

Zitat:

Holst du dir erst mal die Gesamt Anzahl deiner News, teilst das durch 5 und rundest auf (floor()) (man kann es auch gleich alles in der Abfrage machen, wie man will)
Code:

SELECT count(*)AS Anzahl, * FROM news ORDER BY ID DESC
Wenn du bei dieser Abfrage ein Ergebnis bekommst, erhälst du von mir einen Orden, oder wie hast du es gemeint mit alles in der Abfrage ?


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:11 Uhr.

Powered by vBulletin® (Deutsch)
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.