Anzeige gesuchter Datensätze

uwee

Erfahrenes Mitglied
Hallo!

ich habe Ds aus einer MySQL-Db ausgelesen und möchte da eine Änderung vornehmen:
Ich möchte, falls es mehrere Ergebnisse gibt, dass immer nur ein ERgebnis angezeigt wird. das nächste soll durch einen Link "nächster Datensatz" angezeigt werden. Es soll auch die Möglichkeit geben, dass man den vorherigen Datensatz auch wieder anschauen kann, per Link.

Nun habe ich etwas beobachtet... Wenn ich meine Anzeige habe, wo ich die Ergebnisse meiner Suche einsehen kann, erscheinen darüber KOmmata (,). und zwar immer so viele, wie es Ergebnisse gibt. Ich find im Quellcode aber keinen hinweis darauf, wie die dahin kommen...

Hier einmal den Code für das Eingabeformular:
PHP:
<html>
<head>
<title>
Kundenkontakt - Problemaufnahme ~ Caritasverband für das Bistum Essen - ZGAST
</title>

<style>
A:link 		{ text-decoration: none; color:"#000000"}
A:viseted 	{ text-decoration: none; color:"#000000"}
A:active 	{ text-decoration: none; color:"#000000"}
A:hover 	{ text-decoration: none; color:"#000000"}
</style>

</head>
<body scroll=no>
<table border=1>
<tr><td>
<center>

<font color=red><h3><u>Kundeneingabe</u></h3></font>

<form method=post action=k_e_f.php>
<table border=0 cellpadding=3>
<tr><td><b>Kunden-ID:</b></td>	<td><input type=hidden name=k_id value="" size=15 maxlength=3>automatisch</td></tr>
<tr><td><b>Anrede:</b></td>	<td><input name=anrede value="" size=15 maxlength=255></td></tr>
<tr><td><b>Vorname:</b></td>	<td><input name=vorname value="" size=15 maxlength=255></td></tr>
<tr><td><b>Name:</b></td>	<td><input name=name value="" size=15 maxlength=255></td></tr>
<tr><td><b>Einrichtung:</b></td><td><input name=einrichtung value="" size=15 maxlength=255></td></tr>
<tr><td><b>Mandanten:</b></td>	<td><input name=mandant value="" size=15 maxlength=255></td></tr>	
</table>
<br>
<input type=submit name=submit value=Eintragen>&nbsp&nbsp&nbsp<input type=reset name=reset value=Rückgängig>
</form>
<table border=5><tr><td><a href=index.html><font face="Courier New">Zurück</a></td></tr></table>
<br>
</center>
</td></tr>
</table>

</body>
</html>

und hier der Code für die Ausgabe:
PHP:
<html>
<head>
<title>
Kundenkontakt - Problemaufnahme ~ Caritasverband für das Bistum Essen - ZGAST
</title>

<style>
A:link 	{ text-decoration: none; color:"#000000"}
A:viseted 	{ text-decoration: none; color:"#000000"}
A:active 	{ text-decoration: none; color:"#000000"}
A:hover 	{ text-decoration: none; color:"#000000"}
</style>

</head>
<body scroll=no>
<table border=1>
<tr><td>
<center>

<font color=red><h3><u>Ergebnisse der Kundensuche</u></h3></font>

<form method=post action=k_a_f_2.php>
<table border=0 cellpadding=3>
<?php
[-Connection-]
$suche=($_POST['suche']);
$name=($_POST['name']);
$sql="";
$result="";
$sql="SELECT k_id,name,mandant,anrede,vorname,einrichtung FROM problem_kunden ".
 "WHERE $suche LIKE'%".($name)."%' " .
"ORDER BY name";
//echo $name;
//echo $suche;
//echo $sql;
$result=mysql_query($sql);
?>
<html><head><title>
<?php
if(!$result or !mysql_num_rows($result))
echo "Keine Ergebnisse</title></head><body><p>Keine Ergebnisse vorhanden</p>";
else {
echo "</title></head><body><br>\n";
while ($row=mysql_fetch_object($result)){
echo "
<tr><td><b>Kunden-ID:</b></td>	<td>",$row->k_id,"</td></tr>
<tr><td><b>Anrede:</b></td>	<td>",$row->anrede,"</td></tr>
<tr><td><b>Vorname:</b></td>	<td>",$row->vorname,"</td></tr>
<tr><td><b>Name:</b></td>	<td>",$row->name,"</td></tr>
<tr><td><b>Einrichtung:</b></td><td>",$row->einrichtung,"</td></tr>
<tr><td><b>Mandanten:</b></td>	<td>",$row->mandant,"</td></tr>´
<tr><td colspan=2><hr></td></tr>	
\n";
}
echo "</table>\n";
}
?>
</td></tr>
</table>

</form>
</body>
</html>

wäre nett, wenn mir jemand sagen könnte, wo dieses Komma herkommt... und in jeder Zeile eines, und DANN kommen erst die Ergebnisse.

Das wichtigere ist aber die Anzeige, 1 Ergebnis pro Seite mit Links hin und her navigieren.

UweE
 
son' Mist... DANKE! diese schrägen Semikolen sind auf diesem Monitor unglaublich schlecht zu sehen... Der gibts nicht mehr her... hab schon 8 andere gelöscht

Nur noch das andere Problem
 
Du kannst die SQL-Abfrage in eine Funktion schreiben, wobei immer eine id übergeben wird.

PHP:
$id = $_GET['id'];
if(!isset($id))
{
        $id = 0;
}

function suche($id)
{
$sql="SELECT k_id,name,mandant,anrede,vorname,einrichtung FROM problem_kunden ". 
"WHERE $suche LIKE'%".($name)."%' " . 
"ORDER BY name LIMIT " .$id .", 1";
$result = mysql_query($query);
...
}

Der Link zum nächsten Ergebnis enthält dann:
PHP:
<a href='suche.php?id=<?php echo ($id + 1); ?>'>nächster Eintrag</a>

Nur ein Lösungsansatz. Für Funktionalität kann ich nicht garantieren, da ich das jetzt nicht getestet habe.


Das Ganze geht natürlich auch ohne die Einbindung der SQL-Abfrage in eine Funktion. Also, wie Du es gemacht hast.
 
Zuletzt bearbeitet:
das mit der ID ist eine gute Idee, funktioniert aber leider nicht... Das würde nur funktionieren, wenn ich ALLE Ergebnisswe angezeigt haben möchte. Wenn ich nur eine Auswahl haben möchte, werden die IDs durcheinander sein...
 
Du kannst das mit LIMIT $x,1 machen, wobei du $x an die nächste Seite übergibst und das den nächsten Datensatz darstellt.
 
aha - schonmal gut... und das muss ich dann in meine Abfrage einbauen... ungefähr so?:
PHP:
$sql="SELECT k_id,name,mandant,anrede,vorname,einrichtung FROM problem_kunden ". 
"WHERE $suche LIKE'%".($name)."%' " . 
"ORDER BY name LIMIT $x,1";

und hinterher im Text dann die übergabe mache:
PHP:
<a href=ergebnis.php?x=?>WEITER</a>

Nur, was steht in diesem Moment in x drin?
 
Es steht ? drin.

Beim 1. Anzeigen rufst du die Seite mit ergebnis.php?x=0 auf.

Im PHP-Skript lässt du dir doch den NEXT-Link erzeugen, oder?
Dann schreibe bei der Ausgabe:

PHP:
echo '<a href=ergebnis.php?x='.($_GET["x"] + 1).'>WEITER</a>';
damit erhöhst du beim Klicken um 1.
 
ich möchte das ganze so aufgebaut haben:

HTML:
<tr><td>ZURÜCK</td><td>ERGEBNISSE</td><td>VOR</td></tr>

Das bedeutet, ich muss das im Endeffekt so schreiben:
PHP:
<tr><td><a href=ergebnis.php?x='.($_GET["x"] - 1).'>Zurück</a></td><td>ERGEBNISSE</td><td><a href=ergebnis.php?x='.($_GET["x"] + 1).'>VOR</a></td></tr>

über der ganzen Geschichte müsste ich dann noch die Variable füllen:
PHP:
$x='0';

und in der Adresszeile muss der Link:

http://.../ergebnisse.php?x=0

stehen

sehe ich das so richtig?
 
Nicht ganz.

ich meine es so:

PHP:
echo '<tr><td>';
echo '<a href=ergebnis.php?x='.($_GET["x"] - 1).'>ZURÜCK</a></td>';
echo '<td>';
ERGEBNISSE
echo '</td><td>';
echo '<a href=ergebnis.php?x='.($_GET["x"] + 1).'>VOR</a></td></tr>';

Wenn du die Variable mit 0 füllen willst, wenn nicht mit angegeben, kannst du das so machen:
PHP:
if(!isset($_GET["x"]))
{
   $_GET["x"] = 0;
}
Das musst du aber auf jedenfall VOR deiner Sache mit der Ergebnisberechnung einfügen, am besten vor dem 1. echo im oberen Code-Schnipsel
 
Zurück