String durchsuchen

ruNN0r

Erfahrenes Mitglied
hi,
ich habe ein Problem
ich möchte gerne in einer Multiauswahl, in einem Editierungscript, sie richtigen teile selectieren.
<select ******* multiple>

in meiner Datenbank steht nun ein sting: 1, 5, 705, 8,
(Das sind nun User die Moderatoren in meinem Forum werden sollen)

mein Codeschnipsel sieht so aus:
PHP:
  echo"
        <select name='rang[]' size='8' multiple>
            <option value='' $srang>Alle</option>
  ";
            $anfrage1=mysql_query("SELECT * FROM $_db_rang");
            while($row1=mysql_fetch_array($anfrage1)){
              $cc.= $row1['rang_id'].",:::".$row_kath['sichtbar_rang']."<br>";   //debug ob alle daten ausgegeben werden
              if(preg_match("/\b".$row1['rang_id'].",\b/i",$row_kath['sichtbar_rang'])){
                echo"<option value='".$row1['rang_id']."' selected>".$row1['beschreibung']."</option>";
              }else{
                echo"<option value='".$row1['rang_id']."'>".$row1['beschreibung']."</option>";
              }
            }
  echo"
          </select>
  ";
er selectier mir die aber leider nicht.

am anfang dachte ich es würde auch mit dem Befehl eregi() gehen aber leider wenn der user 5 in der liste kommt würde er auch den user 705, und 15, nehmen...

Wer eine Idee für mich? Vielen Dank im vorraus
 
Zuletzt bearbeitet:
Falls $row_kath['sichtbar_rang'] der Eintrag ist, der selektiert werden soll, wenn er in $row1['rang_id'] vorkommt, müsstest du dein preg_match() genau umdrehen:

PHP:
if(preg_match("/\b".$row_kath['sichtbar_rang'].",\b/i",$row1['rang_id'])){

Kann mich aber auch irren, und dich falsch verstanden haben. Du kannst aber auch noch mal ins Manual schauen, ob du nen Denkfehler drin hattest.
 
$row_kath['sichtbar_rang'] -- dort befinden sich die werte (zu durchsuchen)
$row1['rang_id'] -- das was selectiert werden soll (sucher)

Also richtig rum ist es schon ^^ das problem hatte ich vorher ;)
 
Dann nimm doch $row1['rang_id'] auseinander und prüfe die Werte einzeln:

PHP:
$search_values = explode(', ', $row1['rang_id']);
$selected = '';
foreach($search_values as $value)
{
   // ... preg_match-Prüfung auf $value statt $row1['rang_id']
   // wenn match gefunden
   $selected = ' selected="selected"';
}
echo"<option value='".$row1['rang_id']."' $selected>".$row1['beschreibung']."</option>";
 
Zurück