PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Abfrage auf mehrere Seiten Verteilen


Andy
05.03.2002, 13:11:02
Hallo,

die abfrage funktioniert wunderbar, nur kommt halt als ergebnis ca. 150 antworten raus....

wie kann ich pro seite z. B. nur 10 ergebnisse ausgeben und einen link anbieten um zu blättern, ähnlich wie z. B. bei Googel...

Danke

<?php

$link=mysql_connect("db","php","php");
mysql_select_db("db");



$result=mysql_query("SELECT DATE_FORMAT(tag, '%e.%m.%Y'),uhrzeit,veranstalter,ort,text FROM `g_events` where TO_DAYS(NOW()) - TO_DAYS(tag) <= 30 and TO_DAYS(tag) - TO_DAYS(NOW()) <= 60 and pub = 1");




while ($row = mysql_fetch_row ($result)) {

echo "<b><font size='4'>";
echo $row[0] . "</b> ab <b>";
echo $row[1] . " <font size='2'>Uhr</b><br>";


echo "<b>Veranstalter: </b>";
echo $row[2] . "<br><b>Location/Ort:</b>";
echo $row[3] . "<br><br>";

echo "";
echo "<table border='0' cellpadding='0' cellspacing='0' width='550'><tr><td><font size='4' color='000080'><b>";
echo $row[4] . "</td></tr></table><font size='2' color='000000'><br>";

echo "<hr noshade color='#FF0000' size='3' width='550' align='left'><br><br>"; }

?>

Matthias
06.03.2002, 16:24:31
Hi,


if(!$start) $start=0;
$trefferproseite=10;

$result=mysql_query("SELECT DATE_FORMAT(tag, '%e.%m.%Y'),uhrzeit,veranstalter,ort,text FROM `g_events` where TO_DAYS(NOW()) - TO_DAYS(tag) <= 30 and TO_DAYS(tag) - TO_DAYS(NOW()) <= 60 and pub = 1 limit $start,$trefferproseite");

So kannst du die Suche eingrenzen.
Jetzt mußt du nur noch ein bißchen coden um immer den neuen Startwert festzulegen. Sollte aber kein Problem sein.

Wenn doch dann einfach nochmal melden.

Matthias

Andy
06.03.2002, 21:01:59
Und wie erstelle ich einen Link für den 11-20 usw. Treffer?

Andy

Matthias
07.03.2002, 00:24:41
Nabend


if(!$start) $start=0;
$trefferproseite=10;
$result=mysql_query("SELECT * FROM `g_events`");
$num=mysql_num_rows($result);
$anzseiten=ceil($num/$trefferproseite);
echo"<p align=center>Seite: ";
for($j=0; $j<$anzseiten; $j++)
{
echo"[<a href="deine datei?start=".$j*$trefferproseite."">",$j+1,"</a>]&nbsp;";
}
echo"</p>";

$result=mysql_query("SELECT DATE_FORMAT(tag, '%e.%m.%Y'),uhrzeit,veranstalter,ort,text FROM `g_events` where TO_DAYS(NOW()) - TO_DAYS(tag) <= 30 and TO_DAYS(tag) - TO_DAYS(NOW()) <= 60 and pub = 1 limit $start,$trefferproseite");


So geht das.

Gute N8
Matthias

Innopix
25.08.2002, 16:56:01
Hi,

irgendwie bekomm ich es einfach nicht hin und finde den Fehler auch nicht - aber manchmal sieht man den Wald vor lauter Bäumen nicht.

Danke für Hilfe im vorraus

Gruss Mark

hier der code:

<HTML>
<HEAD><TITLE>Suchergebnis</TITLE></HEAD>
<BODY><H3>Suchergebnis</H3>
<HR>

<?php

$link=mysql_connect();
mysql_select_db("singles");


if(!$start) $start=0;
$proseite=2;
$result=mysql_query("SELECT * FROM `nutzer` WHERE (rubrik='$rubrik')");
$num=mysql_num_rows($result);
$anzseiten=ceil($num/$proseite);
echo"<p align=center>Seite: ";
for($j=0; $j<$anzseiten; $j++)
{
echo"[<a href="abfrage_test.php?start=".$j*$proseite."">",$j+1,"</a>] ";
}
echo"</p>";

$result=mysql_query("SELECT nick, vorname AS Vorname, jahre AS 'Alter',ort AS Wohnort FROM nutzer WHERE (rubrik='$rubrik') ORDER BY datum desc limit $start,$proseite");


echo "$num Personen gefunden<p>";

echo "<TABLE border='1' width='70%'>";

echo "<TH>Bild</TH>";
for ($i=1;$i<mysql_num_fields($result);$i++)
{echo "<TH>".mysql_field_name($result,$i)."</TH>";};



while ($zeile=mysql_fetch_row($result))
{echo "<TR align='center'>";

echo "<TD><A href='abfrage_neu.php?nick=".$zeile[0]."' target='_blank'> <IMG src='bilder/TN".$zeile[0].".jpg' border='0'></TD>";
for ($i=1;$i<mysql_num_fields($result);$i++)
{echo "<TD>".$zeile[$i]."</TD>";};
echo "</TR>";};
echo "</TABLE>";



mysql_free_result($result);mysql_close($link);

?>

<HR>
<A href='index.html'>Startseite</A>

</BODY></HTML>

MiH
26.08.2002, 14:05:10
http://www.f078.net/php/tutorial/php/blaettern.php dort findest du die lösung für dein problem :)

Innopix
26.08.2002, 16:32:16
Hi,

ich denke die Grundlage fürs blättern habe ich ja verstanden und auch in meinen code eingebaut, aber leider klappt es ja nicht.

Bei der ersten Abfrage werden auch nur zwei Abfragen in der Tabelle angezeigt und die Gesamtanzahl der Suchergebnisse stimmt auch.

Will ich dann auf die nächste Seite blättern steht die Gesamtanzahl der gefundene Daten auf 0 und in der Tabelle wird kein Datensatz ausgegeben.

Kann niemand den Fehler in meinen Code finden?
Übrigens schuldigung das ich den Code einfach so gerpostet habe - habe die Hinweise zum Posten zu spät entdeckt.

Gruss Mark

Ben20
26.08.2002, 17:35:10
Da ist ein Bug

$result=mysql_query("SELECT nick, vorname AS Vorname, jahre AS 'Alter',ort AS Wohnort FROM nutzer WHERE (rubrik='$rubrik') ORDER BY datum desc limit $start,$proseite");


Nicht $start, $proseite

sondern:

($start * $proseite), $proseite;


Mach das Ganze am Besten in eine neue Variable


$var = "limit" . ($start * $proseite) . "," $proseite;


und füge die in die abfrage ein

$result=mysql_query("SELECT nick, vorname AS Vorname, jahre AS 'Alter',ort AS Wohnort FROM nutzer WHERE (rubrik='$rubrik') ORDER BY datum desc $var");


EDIT: Sorry - daran liegts nicht. Habe gerade in Deinem Code gesehen dass Du das schon über den Klick eingebaut hast

Ben20
26.08.2002, 17:41:37
Aber machs mal so dann findest Du vielleicht den Fehler in der Abfrage:

$result="SELECT nick, vorname AS Vorname, jahre AS 'Alter',ort AS Wohnort FROM nutzer WHERE (rubrik='$rubrik') ORDER BY datum desc limit $start,$proseite";

echo $result;

$abfrage = @mysql_query($result);

Innopix
30.08.2002, 09:36:51
So geht es leider gar nicht - kommen nur mysql Fehlermeldungen.

Ben20
30.08.2002, 14:01:30
Es soll ja durch echo $result auch noch nicht gehen. Aber so kannst Du wenigestens sehen, welche Abfrage von Deinem Script an den MySQL Server genau (sprich mit allen Werten statt nur den Variablen) gestellt wird. Dadurch kannst Du vielleicht den Fehler in der SQL Syntax finden.


Was Du außerdem machen kannst ist

echo mysql_error(); direkt nach $abfrage = mysql_query(...) dann gibt das Script dir die Fehlermeldung des mySQL - Servers aus.