Mit PHP Mysql limit setzen

weightwatcher

Erfahrenes Mitglied
Hi Leute... Benötige für mein CMS eine Blätterfunction, die aber von der Anzahl der Zeichen abhängt, d.h. dass der anzuzeigende nciht länger als z.B. 300 Zeichen sein darf. Sollte er länger sein, soll eine neue Seite erstellt werden, wo dann wieder 300 Zeichen erscheinen sollen und so weiter....
So was hab ich auch in dne tutorials noch nicht gefunden und unter Suchen auch nicht...
Ich wei schon das es mit der Mysqlfunktion mysql limit funktioniert aber wie funktioniert das dann weiter mit den Teichen und den Seite
Müss dazu noch sagen, dass ich eine dynamische einbindung benutze, d.h ich Lade die ganzen Texte aus meiner Datenbank herunter. dazu benütze ich die Dateien data.inc.php, index.php und mysql.inc.php

Die data.inc.php = Lädt die Seiten aus der Datenbank heunter:
PHP:
<?php
class pages
{

	//Construct
	function pages ( $db, $title ) 
	{
		$this->db = $db;
		$this->title = $title;
		
	}	
	
	//Get page contents
	function get ( $ctitle = '' ) 
	{	
		//Check if custom page
		if ( strlen ( $ctitle ) > 0 )
		{
			$sql = "SELECT * FROM db_pages WHERE title = '". $ctitle ."'";
			$query = $this->db->query ( $sql ) ;
		}
		else
		{
			//Check if the page is set
			if ( strlen ( $this->title ) == 0 )
			{
				//Default to the homepage
				$sql = "SELECT * FROM db_pages WHERE id = 1";
				$query = $this->db->query ( $sql ) ;
			} 
			else 
			{ 
				//Check database for matching page
				$sql = "SELECT * FROM db_pages WHERE title = '". $this->title ."'";
				$query = $this->db->query ( $sql ) ;	
				
				//Is there no pages matching?
				if ( $this->db->rows ( $query ) == 0 )
				{
					//Default to the homepage
					$sql = "SELECT * FROM db_pages WHERE id = 1";
					$query = $this->db->query ( $sql ) ;
				}
			}
		}
		$page = $this->db->fetch_object ( $query ) ;
		
		//Lets update the views
		$newCount = (( $page->views + 1 )) ;
		$sql = "UPDATE db_pages SET views = $newCount WHERE id = '". $page->id ."'";
		$this->db->query ( $sql ) ;
		
		
		//Return the output
		return $page;
	}
	
	//Update pages function
	function update ( $id, $title, $content ) 
	{
		$sql = "UPDATE db_pages SET title = '". $title ."', content = '". $content ."'";
		$sql .= " WHERE id = '". $id ."'";
		$this->db->query ( $sql ) ;
		return 1;
	}
	
	//Add pages function
	function add ( $title, $content ) 
	{
		$sql = "INSERT INTO db_pages (title, content) VALUES ('". $title ."', '". $content ."')";
		$this->db->query ( $sql ) ;
		return 1;
	}
	
	//Delete pages function
	function delete ( $title ) 
	{
		$sql = "DELETE FROM db_pages WHERE title = '". $title ."'";
		$this->db->query ( $sql ) ;
		return 1;
	}
	
	//Get all pages
	function getall ()
	{
				$i = 0;
		$pages = array(array());
		$sql = "SELECT * FROM db_pages ORDER BY title";
		$query = $this->db->query ( $sql ) ;
		while ( $page = $this->db->fetch_object ( $query ) )
		{
			$i++;
			$pages[$i]['id'] = $page->id;
			$pages[$i]['title'] = $page->title;
			$pages[$i]['content'] = $page->content;
			$pages[$i]['last_update'] = $page->last_update;
			$pages[$i]['views'] = $page->views;
		}
		
		return $pages;
	}	
}
?>
 
index.php = Dient zum Darstellen der Seiten
PHP:
echo $page->content;

echo $page->content;
bekommt in einer extra Datei ein Wert: (Core.php)

Core.php:
require_once ( 'inc/data.inc.php' ) ;
$Pages = new pages ( $db, $_GET['show'] );
$page = $Pages->get();

und in der mysql.inc.php sind die Mysqlserververbindungsdaten eingetragen ...
Wo muss ich jetzt überhaupt die Blätterclasse so einsetzten, dass sie dann auch einen Sinn ergibt ? -> In der data.inc.php oder doch nicht

Und macht mal bitte eine paar Vorschläge wie meint wie solch eine Blätterfunction aussehen könnte ...
MfG Dennis aka weightwatcher
und Danke schon mal im Voraus .... :D
 
Mit "Limit" wirst Du bei einer Unterteilung des Textes in mehrere Abschnitte nicht viel erreichen. Iim Grunde funktioniert Deine gewünschte Art der Blätternfunktion genauso, wie jede andere. Nur dass sich die Anzahl der Seiten aus den Gesamtzeichenanzahl geteilt durch 300 ergibt.

Sven
 
ok verstanden ... Aber dies würde ja dann bedeuten, dass ich z.B. dieses Script
PHP:
<?php
function createPages($input = 0, $perpage = 25) {
    global $page, $_SERVER;
    if ($input == 0)
        die("createPages(<b>\$input = $input</b>, \$perpage = $perpage");
    if ($input <= $perpage)
        return "« <b>1</b> »";
    if (!$page || $page < 1) {
        $page = 1;
    }
    $pages = ceil($input / $perpage);
    $html = "";
    if ($page > 1) {
        $html .= "<a href=\"".$_SERVER["PHP_SELF"]."?page=".($page-1)."\">«</a> ";
    } else {
        $html .= "« ";
    }
    for($i = 1; $i <= $pages; $i++) {
        if ($i == $page) {
            $html .= "<b>".$i."</b> ";
        } else {
            $html .= "<a href=\"".$_SERVER["PHP_SELF"]."?page=".$i."\">".$i."</a> ";
        }
    }
    if ($page <= $pages-1) {
        $html .= "<a href=\"".$_SERVER["PHP_SELF"]."?page=".($page+1).">»</a> ";
    } else {
        $html .= "» ";
    }
    return $html;
}

function limitSQL($perpage = 25) {
    global $page;
    if (!$page || $page < 1) {
        $page = 1;
    }
    $min = ($page - 1) * $perpage;
    $max = $min + $perpage;
    $out = array($min,$max);
    return $out;
}

$eintraege = 412;
$perpage = 30;

echo createPages($eintraege,$perpage);
$sql = limitSQL($perpage);
echo "<br/><br/><pre>";
print_r($sql);
echo "</pre>";
?>
benutzen kann und es einfach nur einwenig abändern muss ... wenn dass stimmt... dann wie
 
ich versteh den Code Schnipsel grade nicht. Aber du kannst dir zB einen query Basteln der etwa so aussieht:
PHP:
$sql = 'SELECT SUBSTRING(text, '.$_GET['start'].', 300) as teil_text FROM pages WHERE page_id='.$_GET['id'];
 
hmm und den querry setzte ich doch dann in die data.inc.php rein, richtig
Und kann ich den schon so verwenden oder was muss ich noch beachten...
Wenn ich jetzt z.B. die Blätterfunction aus einem Tutortials von hier neheme, und diese Function ausstausche dann sollte es doch funktionieren, oder
 
wärs nicht auch möglich das ganze einmal abzufragen und dann mit substr aufzuteilen und das ganze dann in einen Array schreiben?
 
Zurück