Seite 1 von 1

Daten aus DB auf mehreren Seiten darstellen

Verfasst: So 1. Mai 2005, 21:35
von Condor
Hallo,
ich möchte Daten aus meiner DB auslesen und da es soviele sind, möchte ich sie auf mehreren Seiten darstellen. Dazu hab ich dieses Script:

Code: Alles auswählen

<?

$liveserver = "localhost";				# Adresse des Liveservers ohne "www", "www.meine.server.de = meine.server.de"
if ($SERVER_NAME == $liveserver) {
	# Werte auf Live-Server einstellen!
	$user   = "root";				# Username für die MySQL-DB
	$pass   = "";				# Kennwort für die MySQL-DB
	$server = "localhost";				# Adresse/IP/Name des MySQL-Server
	$dbase  = "test";				# Name der standardmäßig verwendeten Datenbank
    $table  = "users";
} else {
	# Werte auf Entwicklungssystem einstellen!
	$server = "localhost";	// MySQL-Server
	$user   = "root";		// MySQL-Nutzer
	$pass   = "";			// MySQL-Kennwort
	$dbase  = "test";	// Standarddatenbank
    $table  = "users";
}
//
$conn = @mysql_connect($server, $user, $pass);
if($conn) {
   mysql_select_db($dbase, $conn);
} else {
   die("<B>Oops, something goes wrong");
} /* end if */


$sql1 = mysql_query('SELECT COUNT(*) AS count FROM users'); // Tabelle zum zählen
$end = 2; // Wieviel Ausgaben pro Seite?
$url   = '<a href="./'.basename($_SERVER['PHP_SELF']).'?action=home'; // Standardlink (z.B. ?action=home (also dann "none=0" durch "action=home" ersetzen)
// "none=0" stehen lassen oder ersetzen, aber nicht entfernen, da sonst fehler enstehen



$anz = mysql_result($sql1, 0, 'count'); // Anzahl
mysql_free_result($sql1);

$ges    = floor(ceil($anz)/$end);
$start  = !isset($_GET['start']) ? $start = 0 : $_GET['start']*$end;
$nStart = !isset($_GET['start']) ? $start = 0 : $_GET['start'];
$link   = '';

$ges += 1;
if($nStart>=($ges)) {
    die('Seite existiert nicht!');
}

$link .= ($nStart==0 ? '' : $url.'&start='.($nStart-1).'">&laquo; Zur&uuml;ck</a> ');
if($ges>7) {
    $ret  = array();
    for($i=1;$i<=$ges;$i++) {
        $ret[] = (($i-1)!=$nStart ? $url.'&start='.($i-1).'">['.$i.']</a> ' : $i.' ');
    }
    if($nStart<5 && $nStart>1) {
        for($j=0;$j<2+$nStart;$j++) {
            $link .= $ret[$j];
        }
    } else {
        for($j=0;$j<3;$j++) {
            $link .= $ret[$j];
        }
    }
    $link .= ($nStart<=($ges-5) ? ($nStart>=5 ? ' ... '.$ret[$nStart-1].$ret[$nStart].(isset($ret[$nStart+1]) ? $ret[$nStart+1] : '') : '') : '');
    $link .= ' ... '.($nStart==$ges-4 ? $ret[$ges-4] : '').$ret[$ges-3].$ret[$ges-2].$ret[$ges-1];
} else {
    for($i=1;$i<=$ges;$i++) {
        $link .= (($i-1)!=$nStart ? $url.'&start='.($i-1).'">['.$i.']</a> ' : $i.' ');
    }
}
$link .= ($nStart==($ges-1) ? '' : ' '.$url.'&start='.($nStart+1).'">Weiter &raquo;</a>');


$fields = mysql_list_fields($dbase, $table, $conn);

$sql = "SELECT * FROM $table";

$result = mysql_query('SELECT id, name FROM users LIMIT '.$start.', '.$end);
if ($result) {
while($row = mysql_fetch_array($result)) {
  echo "<a href=\"Tabelle-auslese.php?id=$row[id]\">$row[name]</a><BR>";
}
} else {
   echo "<P>".mysql_error($conn);
}
mysql_close($conn);

echo $link;
?>
Wenn ichs alleine laufen lasse funktioniert es, aber sobald ich es als Modul in Contenido laufen lasse geht nichts. Sobald ich auf die Zweite Seite klicke, geht er auf die Startseite. Muss ich da mit Hidden-Feldern arbeiten ? Hat da jemand einen Tip was zu tun ist?

Verfasst: Mo 2. Mai 2005, 15:53
von emergence
Wenn ichs alleine laufen lasse funktioniert es, aber sobald ich es als Modul in Contenido laufen lasse geht nichts.
schon ins errorlog.txt geschaut ?
Sobald ich auf die Zweite Seite klicke, geht er auf die Startseite.
meinst du allgemein oder innerhalb von contenido ?

Verfasst: Do 5. Mai 2005, 22:56
von Condor
Hi,

so, bin endlich dazu gekommen zu antworten. Also in der errorlog.txt steht folgendes wenn ich das ausführe:

Code: Alles auswählen

[05-May-2005 23:53:32] PHP Warning:  Wrong parameter count for implode() in C:\Programme\Apache Group\Apache\htdocs\contenido-4.4.5\conlib\db_mysql.inc on line 129
[05-May-2005 23:53:32] 
Und zu 2.: Nur bei Contenido. Wenn ichs ausserhalb von Contenido laufen lasse funktioniert es perfekt.

Verfasst: Fr 6. Mai 2005, 06:08
von emergence
sag mal hab ich ein deja vu ?
-> http://contenido.org/forum/viewtopic.php?p=45712#45712

na wie auch immer klingt eher so als ob du den db zeiger verbiegst und contenido nicht mehr damit zurecht kommt...
-> http://contenido.org/forum/viewtopic.php?p=34331#34331

Verfasst: Fr 6. Mai 2005, 14:29
von Condor
Hallo,

ups :lol: , du hast recht das hatten wir schonmal. Naja zuviel zutun im Kopf :D . Wenn ich das ändere dann steht dann folgendes in der errorlog:

Code: Alles auswählen

[06-May-2005 15:29:28] /contenido-4.4.5/cms/front_content.php?idart=162&idcat=1 Invalid SQL: update con_phplib_active_sessions set val='c2lkXz....', changed='20050506152928' where sid='8ba24a4620858b2471328a1828b81018' and name='sid_1_1'
[06-May-2005 15:29:28] MySQL-Error: Table 'test.con_phplib_active_sessions' doesn't exist (1146)
Habs ein wenig gekürzt, weil es sonst das Layout zerschiesst.
Der will ja auf die test.con... zugreifen, aber diese DB gibts ja nicht. Warum sucht er jetzt diese Tabelle in meiner test-db ? Die Contenido-Tabellen liegen in der Contenido-DB und die Daten die ich ausgeben möchte in der Test-DB mit der Tabelle users.
Ich werde mir noch deinen zweiten Beitrag durchlesen. Bis dann und danke.

Verfasst: Fr 6. Mai 2005, 14:33
von Arno Simon
Hallo Condor,

sorry, hat eigentlich weniger mit dem Inhalt Deines Beitrags zu tun, aber findest Du es sonderlich lesenswert, wenn Dein Beitrag über 50 Bildschirmbreiten (bei 1280 Pixeln breite) geht?!?!?

Gruß

Arno

Verfasst: Fr 6. Mai 2005, 14:41
von Condor
Hi,

tut mir leid, hab mir meinen Beitrag aber nicht angeschaut. Danke für den Hinweis, ich selber mag das ja auch nicht. Habs jetzt geändert. Ciao.