Problem beim dynamischen markieren von zeilen mit hilfe der 'select'-option in einer dynamischen &l

Hallo zusammen,


ich habe ein php Script mit dem ich eine multi-select-box dynamisch aus einer MySql Tabelle aufbaue.
Das normale "befüllen" der Box ist gar kein Problem. Das funzt.
Der User wählt nun mehre Werte aus die in einer 2. Tabelle abgespeichert werden. Das funzt auch.
so weit so gut.
Um dem Benutzer nun deutlich zu machen das er vorher schon einmal bestimmte werte ausgewählt hat lese ich die 2. Tabelle aus und versuche die werte zu vergleichen um sie dann mithilfe von <option ... selceted zu markieren. Hab ja schon einige mit hilfe von php und mysql gemacht aber das scheint irgedwie nicht zu funzen... :(
hier einmal mein Code:
Vorraussetzung ist hier das die Var $kunnum belegt ist ...


<? if (!$vk) $vk=db_verbind("localhost","root",""); //
$dyn_list="select liste from leistungsliste;";
$erg_liste=mysql_db_query("canvass",$dyn_list,$vk);
if (!$erg_liste) error($vk,"aufgerufen in leistungen","127"); //simple error behandlung
else {
?>

<select name="erh_leistung[]" multiple class="select_box" >
<?

$check_vorhanden="select kunnum, leistungen from leistungen where kunnum='$kunnum'";
$erg_check=mysql_db_query("canvass",$check_vorhanden,$vk);
if (!$erg_check) error($vk,"aufgerufen in leistungen","130");
else {
while($zeile=mysql_fetch_assoc($erg_liste) or $vergleich=mysql_fetch_assoc($erg_check) ){
$list_elem =$zeile[liste];
$check_list= $vergleich[leistungen];
?>

<option value="<?=$list_elem ?>" <? if ($list_elem==$check_list) echo "selected" ?> ><?=$list_elem?></option> <!-- das hier funzt nicht also der Vergleich -->

<? }
}?>
</select> <? } ?>

so schwer kann das doch nicht sein was mache ich falsch?
Bin sehr dankbar für alles was mir zum erfolgverhilft man kann schlieslich nur dazu lernen!

BS: WIN XPP
MySQL:MySQL 4.1.8
PHP: 5.0.3


Grüße aus dem Raum Herford
Michael Prochnow
Michael Prpchnow [ Mi, 20 Juli 2005 12:16 ] [ ID #887669 ]

Re: Problem beim dynamischen markieren von zeilen mit hilfe der 'select'-option in einer dynamische

On Wed, 20 Jul 2005 12:16:09 +0200, Michael Prochnow wrote:

ich habe mir das nicht genauer angesehen, aber auf den ersten Blick
sieht das für mich so aus, als ob du zwei verschiedene Tabellen
abfragst und hinterher die beiden Result-Sets in der "Reihenfolge des
Auftretens" miteinander vergleichst.

Bis du auch sicher, dass beide Query-Results tatsächlich das
gewünschte Ergebnis in der gewünschten Reihenfolge liefern? Ich habe
in deinen Queries auf den ersten Blick kein ORDER BY entdecken können,
die Reihenfolge der gefundenen Daten dürfte also beliebig sein.

Besser wäre es, beide Bedingungen in einer SQL-Abfrage zu stellen. Das
schon nicht nur Ressourcen sondern gibt dann auch garantiert
reproduzierbare Ergebnisse.

Nur mal so als Denkanstoß

Marian

--
Barrierefreie Online-Kurse: HTML, PHP, MySQL, Word, Excel
http://www.lernpilot.de/wbt/
Marian Heddesheimer [ Mi, 20 Juli 2005 12:36 ] [ ID #887670 ]

Re: Problem beim dynamischen markieren von zeilen mit hilfe der 'select'-option in einer dynamischen

Michael Prochnow schrieb:
> ich habe ein php Script mit dem ich eine multi-select-box dynamisch aus einer MySql Tabelle aufbaue.
> Das normale "befüllen" der Box ist gar kein Problem. Das funzt.
> Der User wählt nun mehre Werte aus die in einer 2. Tabelle abgespeichert werden. Das funzt auch.
> so weit so gut.
> Um dem Benutzer nun deutlich zu machen das er vorher schon einmal bestimmte werte ausgewählt hat lese ich die 2. Tabelle aus und versuche die werte zu vergleichen um sie dann mithilfe von <option ... selceted zu markieren. Hab ja schon einige mit hilfe von php und mysql gemacht aber das scheint irgedwie nicht zu funzen... :(
> hier einmal mein Code:
> Vorraussetzung ist hier das die Var $kunnum belegt ist ...

[Code entsorgt]

Vorab:
Dein Code ist nicht besonders toll formatiert und sehr
schwer zu lesen. Du verwendest veraltete Funktionen (mysql_db_query)
und machst einige Fehler ($zeile[liste] anstatt $zeile['liste']).
Auch solltest Du <?php anstelle von <? verwenden.

So, jetzt mein Vorschlag. Die Fehlerbehandlung lasse ich
ausnahmsweise, der Einfachheit halber weg. Der Sinn sollte
klar sein.

<?php
$link = mysql_connect('localhost', 'root', '');
mysql_select_db('canvass', $link);

$vergleich = array();
$sql = "select leistungen from leistungen where kunnum='$kunnum'";
$res = mysql_query($sql, $link);
while ($row = mysql_fetch_assoc($res)) {
$vergleich[] = $row['leistungen'];
}

echo '<select name="erh_leistung[]" multiple class="select_box">';

$sql = 'select liste from leistungsliste';
$res = mysql_query($sql, $link);
while ($row = mysql_fetch_assoc($res)) {
printf(
"<option value='%s'%s>%s</option>",
$row['liste'],
(in_array($row['liste'], $vergleich)) ? ' selected' : '',
$row['liste'],
);
}

echo '</select>';
?>


Gruß, JPM
dev-null-use-reply-ad [ Mi, 20 Juli 2005 13:41 ] [ ID #887671 ]

Re: Problem beim dynamischen markieren von zeilen mit hilfe der 'select'-option in einer dynamische

Jens Peter Moeller schrieb:
> Michael Prochnow schrieb:

ich habe...
>
Hallo danke erst mal für Deinen Tipp

Leider funktioniert das nicht d.h. das Ergbniss ist leer. Sprich es werden nicht mal zeilen angezeigt.
eine anderen Idee???
Bin nach wie vor ziemlich verzweifelt... und - leider - auch unter Zeitdruck :-(
Hoffe es liest noch einer....
>
>
>
> Gruß, JPM
Michael Prpchnow [ Do, 21 Juli 2005 17:13 ] [ ID #889250 ]
PHP » de.comp.lang.php.datenbanken » Problem beim dynamischen markieren von zeilen mit hilfe der 'select'-option in einer dynamischen &l

Vorheriges Thema: Sprung auf Suchbegriff
Nächstes Thema: Abfrage