phpbar.de logo

Mailinglisten-Archive

[php] Suchergebnis in einer Liste

[php] Suchergebnis in einer Liste

Lutz Zetzsche Lutz.Zetzsche at sea-rescue.de
Mit Jan 12 10:25:06 CET 2005


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