PHP Forum

PHP Forum (http://www.selfphp.de/forum/index.php)
-   PHP Grundlagen (http://www.selfphp.de/forum/forumdisplay.php?f=12)
-   -   Vorauswahl selectbox (http://www.selfphp.de/forum/showthread.php?t=22383)

tsunamitsunami 10.11.2009 13:36:32

Vorauswahl selectbox
 
Hallo,

ich habe ein Formular zur Änderung von Bestandsdaten. Die id wird mit get übergeben.
PHP-Code:

if(isset($id=$_GET[id])); 

Danach hole ich mir den passenden Datensatz für den Artikel aus der DB:
PHP-Code:

$sql ="select * from tabelle where id=".$id;
$msquery...
$hersteller=$ausgabe['hersteller'// string mit den ids der Hersteller , also zB 2,45,123 

Nun habe ich einige Spalten, wo mehrere ids drinstehen. ZB Hersteller 1,2,3

Mit einer multiple selectbox möchte ich nun die Hesteller vorauswählen.

Vorab hole ich mir die Hersteller aus der DB.
PHP-Code:

 $sql_hersteller="select id,name,strasse,plz,ort from hersteller";
 
$ms_ersteller=mysql_query($sql_ersteller);
... 

PHP-Code:

<select name="ersteller[]" multiple="multiple"size="8">
    <?php 
     
while($ausgabe_ersteller=mysql_fetch_assoc($ms_ersteller))
     {
     echo 
'<option value="'.$ausgabe_ersteller[id].'"'
         if(
strpos($hersteller,$ausgabe_ersteller[id])>0
            echo 
" selected='selected'"
    echo 
'>'.$ausgabe_ersteller[name].', '
      
$ausgabe_ersteller[strasse].' - '.
      
$ausgabe_ersteller[plz].' '.
      
$ausgabe_ersteller[ort].'</option>';
     }
     
?>
     </select>

Also wenn die Hersteller-id in dem String hersteller in der Tabelle Artikel vorkommt, setzte ein selected ="selected".

Problem: Wenn in dem herstellerstring viele Große ids sind (1234,2345,5432) findet er auch die Herstellr-ids, 1,2,3,4,1234,...), also auch einzelne Ziffern...
Natürlich kmmt 1 ind 123 vor und 2 und 3. Es soll aber nur die 123 gefunden werden.
Eine Idee ist den String in ein Array umzuwandeln und dann mit in_array) zu suchen.
Aber das ist doch wieder seh rechenaufwendig, oder?

The Serious Sam 10.11.2009 16:30:30

AW: Vorauswahl selectbox
 
bau den herstellerstring um, mit "," auch am anfang und ende
also ,1,2,3,4,3452345,
dann benutze
PHP-Code:

if(strpos($hersteller,','.$ausgabe_ersteller[id].',')>0
     echo 
" selected='selected'"

Andere idee:

Bau dir keinen herstellerstring sondern ein array mit den id's
z.B.
$hersteller = array(1, 3, 4,543245234, 2345, 342,5234 5234, 324 ,5342,45,34234)

dann kannste mit in_array prüfen^^


Alle Zeitangaben in WEZ +2. Es ist jetzt 17:44:56 Uhr.

Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.