PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : seitenanzeige mit umblättern


dominik
09.05.2002, 15:53
hi

ich möchte eine seitenanzeige mit umblättern machen. folgendes hab ich schon:


<?php
$conn=odbc_pconnect("","","","");
$select = odbc_exec($conn,"select * from news");
$reihen = odbc_num_rows($select);
$id=odbc_result($select,1);
$newsart=odbc_result($select,2);
$titel=odbc_result($select,3);
$text=odbc_result($select,4);
$datum=odbc_result($select,5);

$zeigen = floor($reihen / 5);

if(!$start) { $start = 0.1; }

$reihen = odbc_num_rows($select);

for($x = 0;$x < $reihen;$x++)
echo "$id";
{
odbc_fetch_into($select ,$x,$result);

}
echo "$titel";
echo "<br>";
if($start > 0.1) {
$zurueck = $start - 5;
echo "<a href=\"$PHP_SELF?start=$zurueck\"><< Zurück</a>";
}
for($i = 0; $i <= $zeigen; $i++) {
echo " <a href=\"$PHP_SELF?start=$n\">$i</a> ";
$n += 5;
}
$weiter = $start + 5;
if($reihen > $weiter) {
echo "<a href=\"$PHP_SELF?start=$weiter\">Weiter >></a>";
}
?>

im moment wird nur 1 nachricht angezeigt, ich möchte aber das z.b. 5 angezeigt werden.

ich hoffe es kann mir jemand helfen...

mfg
dominik

s.molinari
09.05.2002, 21:46
Hallo dominik,

Leider bin ich kein odbc Guru aber von was ich verstehe hast du schon ein paar gravierende Fehler in deinen Code. Hier ist ein Script die Du auf deine Bedürfnisse anpassen kannst. <?php

/* Adduco.de ::: Prev123.php3 11.09.2000 v1.1 S.Molinari */
//Any ALL CAPITALIZED words must be replaced with your own values.

$server = "";
$user = "";
$Pass = "";
$database = "YOUR DB";
$conn = mysql_pconnect ($server,$user,$pass);
$select = mysql_select_db("$database")or die ("unable to select db");

// Start of Prev 123 Next code

$limit=20; // rows to return
$numresults=mysql_query("select * ".
"from TABLE where YOUR CONDITIONAL HERE order by WHATEVER");
$numrows=mysql_num_rows($numresults);



// next determine if offset has been passed to script, if not use 0

if (empty($offset))
{
$offset=0;
}

// get results

$result=mysql_query("select * ".
"from TABLE where YOUR CONDITIONAL HERE ".
"order by WHATEVER limit $offset,$limit");

// now you can display the results returned

while ($data=mysql_fetch_array($result))
{
// include code to display results as you see fit
print "<a href=\"$data[SiteURL]\">$data[SiteName]</a>";
}

// calculate number of pages needing links

$pages=intval($numrows/$limit);


// next we need to do the links to other results

if (($pages!=0 and $pages!=1) or ($pages==1 and ($numrows%$limit)))// If data <= 1 page skip all
{
if ($offset!=0)// bypass PREV link if offset is 0
{
$prevoffset=$offset-$limit;
print "<a href=\"$PHP_SELF?offset=$prevoffset\">PREV</a> &nbsp; \n";
}

// $pages now contains int of pages needed unless there is a remainder from division

if ($numrows%$limit)// has remainder so add one page
{
$pages++;
}

for ($i=1;$i<=$pages;$i++) // loop thru and make links
{
$newoffset=$limit*($i-1);
If ($offset!=$newoffset) //Make a link only for other pages
{
print "<a href=\"$PHP_SELF?offset=$newoffset\">$i</a> &nbsp; \n";
}
else
{
print "$i &nbsp; \n";
}
}

// check to see if NEXT link is needed

if ($pages!=1 or (($pages==1 and ($numrows%$limit))))
{
if (($offset+$limit)<$numrows) // if last page skip NEXT link
{$newoffset=$offset+$limit;
print "<a href=\"$PHP_SELF?offset=$newoffset\">NEXT</a><p>\n";
}
}
}
print "</body></html>";
?>
Ich weiss es ist für MySQL geschrieben aber es müsste portierbar sein. Das einzigste Problem die ich sehen kann ist dass der odbc_exec Befehl wahrscheinlich nicht den "limit" Operator zulässt. Dann musst Du doch durch ein Loop die Daten aus der $select Variable raus holen.

Wenn ich fragen darf warum odbc? Arbeitest Du mit Access? :eek: *scott shüttelt sich*

Scott

dominik
09.05.2002, 22:55
hallo scott

vielen dank für dein script!

mit dem limit hast du recht. ich hab nämlich auch schon mysql scripte probiert umzuschreiben.

kannst du mir vielleicht mit dem loop helfen?

Arbeitest Du mit Access?
nein, mit ms sql

cu
dominik

s.molinari
10.05.2002, 14:03
Also hier ist ein Versuch:



for($x = $offset;$x < $limit;$x++) {

$data = odbc_fetch_into($select ,$x,$result);
echo "$data[id], $data[newsart], $data[titel], $data[text], $data[datum];

}

Von was ich gelesen habe wird diese Schreibweise für "odbc_fetch_into" nicht mit PHP4.2.0 funktionieren. Wenn Du 4.2.0 hast dann muss den Funktionsaufruf so aussehen: $data = odbc_fetch_into($select, $result, $x);

Ich bin mir auch nicht sicher ob die Arrayvariable $data auch assoziativ ist wie ich sie geschrieben habe.:)

Scott