Mailinglisten-Archive |
Hallo Friederun, Friederun Göllner schrieb: > ein Problem mit einer sicher ganz simplen Loesung: Ich moechte bei > einer Abfrage mit n Suchergebnissen ermitteln, an welcher Stelle ein > bestimmtes Ergebnis steht, wenn alle Ergebnisse nach einer > festgelegten Reihenfolge sortiert werden. Also: > > SELECT feld1 FROM xyz WHERE feld2='x' ORDER BY feld3; > > Jetzt bekomme ich alle Werte von feld1 mit demselben Wert in feld2 > und sortiert nach feld3. Jetzt habe ich einen string, der mit einem > Suchergebnis uebereinstimmt, und ich moechte wissen, an welcher > Stelle der in der Ergebnisliste steht. Wie geht die Formel? also wenn Du die Werte schon in einem eindimensionalen Array hättest, könntest Du das elegant mit der Funktion array_keys ( array input [, mixed search_value [, bool strict]]) (http://de3.php.net/manual/en/function.array-keys.php) erledigen. Vermutlich hast Du aber noch das Datenbankergebnis, mit dem Du arbeitest, also praktisch einen zweidimensionalen Array. Ich denke, dann mußt Du letztendlich alle Ergebniszeilen durchlaufen und mit Deinem Suchbegriff abgleichen: $sMeinSuchbegriff = 'irgendwas'; $iNummerErgebnisZeile = 0; $aGefundenePositionen = array(); while ($aErgebnisZeile = mysql_fetch_array($rErgebnis, MYSQL_NUM)) { if ($aErgebnisZeile[0] == $sMeinSuchbegriff) { array_push($aGefundenePositionen, $iNummerErgebnisZeile); // break; } $iNummerErgebnisZeile++; } Wenn Deine Anwendung so gebaut ist, daß jeder Suchbegriff nur in maximal genau einer Ergebniszeile vorkommen kann, dann kannst Du den Schleifendurchlauf nach dem ersten Treffer auch beenden (siehe das auskommentierte "break;"). Das spart etwas Rechenzeit. Viele Grüße Lutz
php::bar PHP Wiki - Listenarchive