Verständnisfrage, zwei Schleifen verknüpfen
Hi,
ich habe eine generelle Verständnisfrage, bei der ich mich im Kreis
drehe und keine Lösung finde, bzw. mir nicht der logische und wohl
richtige Weg einfällt:
Ich habe zwei Schleifen:
1. DB Schleife die Kategorien generiert
2. Array Schleife die zuvor gewählte Kategorien beinhaltet
Ergebnis soll folgendes sein, wenn die 1. Schleife generiert wird,
sollen alle Kategorien, die bereits in der 2. Schleife sind
hervorgehoben werden, wie auch immer.
Um es zu verbildlichen, Klaus interessiert sich für Essen, Trinken und
Tanzen, nun will Klaus seine Liste aber erweitern oder ändern, somit
sollen beim Editieren die bereits gewählten Kategorien markiert werden.
Wie bekomme ich die Verknüpfung der zwei Schleifen hin?
bye
Stefano
--
business: spicOne multimedia http://www.spicone.de - http://www.spic.de
projects: http://www.mythos77.de - http://www.typopolis.de
private: http://blog.stefano-picco.de - http://spicone.deviantart.com
Re: Verständnisfrage, zwei Schleifen verknüpfen
stefano picco schrieb:
> Um es zu verbildlichen, Klaus interessiert sich für Essen, Trinken un=
d
> Tanzen, nun will Klaus seine Liste aber erweitern oder ändern, somit =
> sollen beim Editieren die bereits gewählten Kategorien markiert werde=
n.
http://de.selfhtml.org/html/formulare/auswahl.htm#listen_vor selektiert
MfG
Niels
--
| http://www.kolleg.de =B7 Das Portal der Kollegs in Deutschland |
| http://www.bsds.de =B7 BSDS Braczek Software- und DatenSysteme |
| Webdesign =B7 Webhosting =B7 e-Commerce =B7 Joomla! Content Management =
|
------------------------------------------------------------ ------
Re: Verständnisfrage, zwei Schleifen verknüpfen
Hallo Niels,
Niels Braczek schrieb:
> http://de.selfhtml.org/html/formulare/auswahl.htm#listen_vor selektiert
das HTML Konstrukt ist mir bekannt, das ist auch nicht das Problem.
Oder habe ich mich zu konfus ausgedrückt?
bye
Stefano
--
business: spicOne multimedia http://www.spicone.de - http://www.spic.de
projects: http://www.mythos77.de - http://www.typopolis.de
private: http://blog.stefano-picco.de - http://spicone.deviantart.com
Re: Verständnisfrage, zwei Schleifen verknüpfen
> Oder habe ich mich zu konfus ausgedrückt?
Ja? Schreib mal eine gewünschte Ausgabe und wie die Datenbasis aussieht.
Re: Verständnisfrage, zwei Schleifen verknüpfen
stefano picco schrieb am 05.10.2007 17:07:
> Hallo Niels,
>
> Niels Braczek schrieb:
>> http://de.selfhtml.org/html/formulare/auswahl.htm#listen_vor selektiert
>
> das HTML Konstrukt ist mir bekannt, das ist auch nicht das Problem.
> Oder habe ich mich zu konfus ausgedrückt?
>
> bye
> Stefano
>
Ja, ein bisschen konfus würde ich das schon nennen ;-). Einerseits hast Du
"2 Schleifen". Baust Du beide gerade auf? Sind sie ineinander
verschachtelt? Andererseits willst Du in "Schleife 1" hervorheben, was in
"Schleife 2" schon existiert. Was soll das sein?
Ich habe das so verstanden, dass Du eine DB durchgehst und ein Array
sukzessive mit Werten füllst. Dabei sollen Elemente, die in einem anderen
Array vorkommen, "markiert" werden. Aber wo ist da die 2. Schleife?
$schleife1 = array();
foreach ($dbsuchergebnisse as $element) {
$schleife1[] = array('wert' => $element,
'mark' => in_array($element, $schleife2));
} // foreach
Dadurch ist $schleife1[$n]['mark'] true, wenn $element in $schleife2
vorkommt (für $n = 0..count($schleife1)-1)
Ja, in_array() ist langsam. Evtl. hilft array_search() oder etwas selbst
geschriebenes, kann meine Glaskugel nicht beobachten ;-)
HTH
Werner
--
Werner Flamme, Abt. WKDV
Helmholtz-Zentrum für Umweltforschung GmbH - UFZ
Permoserstr. 15 - 04318 Leipzig
Tel.: (0341) 235-1921 - Fax (0341) 235-451921
http://www.ufz.de - eMail: werner.flamme [at] ufz.de
Re: Verständnisfrage, zwei Schleifen verknüpfen
Hi Jonas,
Jonas Werres schrieb:
> Ja? Schreib mal eine gewünschte Ausgabe und wie die Datenbasis aussieht.
hat grad plötzlich funktioniert, ich habe nun die Array Schleife in das
Ergebnis der DB Schleife gesetzt und es funktioniert:
$vv = array_values($a_vv);
while ($vv_object = mysql_fetch_object($vv_result)) {
$vv_kat = $vv_object->kat;
$vv_name = $vv_object->name;
echo(' <input type="checkbox" value="'.$vv_kat.'" name="a_vv[]"');
foreach($vv as $tvv) {
if($vv_kat == $tvv) {
echo" checked=checked";
}
}
echo('>'.$vv_name.'
');
echo"\n";
}
bye
Stefano
--
business: spicOne multimedia http://www.spicone.de - http://www.spic.de
projects: http://www.mythos77.de - http://www.typopolis.de
private: http://blog.stefano-picco.de - http://spicone.deviantart.com
Re: Verständnisfrage, zwei Schleifen verknüpfen
Hi Werner,
Werner Flamme schrieb:
> Ja, ein bisschen konfus würde ich das schon nennen ;-). Einerseits hast Du
> "2 Schleifen". Baust Du beide gerade auf? Sind sie ineinander
> verschachtelt? Andererseits willst Du in "Schleife 1" hervorheben, was in
> "Schleife 2" schon existiert. Was soll das sein?
ja so ist das, wenn sich Hobby PHPler wie ich Ziele setzen *eg* Sorry
> Ich habe das so verstanden, dass Du eine DB durchgehst und ein Array
> sukzessive mit Werten füllst. Dabei sollen Elemente, die in einem anderen
> Array vorkommen, "markiert" werden. Aber wo ist da die 2. Schleife?
> ...
Schau mal in mein letztes Posting, da habe ich die Lösung geposted, die
halt funktioniert nun. Über Optimierungen und sonstige Codeanpassungen
bin ich immer dankbar, man lernt ja nie aus!
Danke
Stefano
--
business: spicOne multimedia http://www.spicone.de - http://www.spic.de
projects: http://www.mythos77.de - http://www.typopolis.de
private: http://blog.stefano-picco.de - http://spicone.deviantart.com
Re: Verständnisfrage, zwei Schleifen verknüpfen
stefano picco schrieb:
> hat grad plötzlich funktioniert, ich habe nun die Array Schleife in das
> Ergebnis der DB Schleife gesetzt und es funktioniert:
>
> $vv = array_values($a_vv);
>
> while ($vv_object = mysql_fetch_object($vv_result)) {
>
> $vv_kat = $vv_object->kat;
> $vv_name = $vv_object->name;
>
> echo(' <input type="checkbox" value="'.$vv_kat.'" name="a_vv[]"');
>
> foreach($vv as $tvv) {
>
> if($vv_kat == $tvv) {
>
> echo" checked=checked";
> }
>
> }
>
> echo('>'.$vv_name.'
');
> echo"\n";
>
> }
Sorry, aber ich sehe da nur _eine_ Schleife.
Gruß. Claus
Re: Verständnisfrage, zwei Schleifen verknüpfen
Claus Reibenstein schrieb:
> stefano picco schrieb:
>
>> hat grad plötzlich funktioniert, ich habe nun die Array Schleife in =
das
>> Ergebnis der DB Schleife gesetzt und es funktioniert:
>
> Sorry, aber ich sehe da nur _eine_ Schleife.
Es sind zwei - ineinander verschachtelte - Schleifen. Korrekt eingerück=
t
ist das auch offensichtlich:
while ( $vv_object =3D mysql_fetch_object( $vv_result ) ) {
$vv_kat =3D $vv_object->kat;
$vv_name =3D $vv_object->name;
echo '<input type=3D"checkbox" value=3D"',$vv_kat,'" name=3D"a_vv[]"'=
;
foreach ( $vv as $tvv ) {
if ( $vv_kat =3D=3D $tvv ) {
echo ' checked=3D"checked"';
}
}
echo '>', $vv_name, '
';
echo "\n";
}
Mit in_array() wäre das zwar sinnvoller gelöst, hier aber sind es
tatsächlich zwei Schleifen.
MfG
Niels
--
| http://www.kolleg.de =B7 Das Portal der Kollegs in Deutschland |
| http://www.bsds.de =B7 BSDS Braczek Software- und DatenSysteme |
| Webdesign =B7 Webhosting =B7 e-Commerce =B7 Joomla! Content Management =
|
------------------------------------------------------------ ------
Re: Verständnisfrage, zwei Schleifen verknüpfen
stefano picco schrieb:
Besser:
while ( $vv =3D mysql_fetch_object( $vv_result ) ) {
$checked =3D in_array( $vv->kat, $a_vv ) ? ' checked=3D"checked"' : '=
';
printf( '<input type=3D"checkbox" name=3D"a_vv[]" value=3D"%s"%s>%s<b=
r/>',
$vv->kat, $checked, $vv->name
);
}
MfG
Niels
--
| http://www.kolleg.de =B7 Das Portal der Kollegs in Deutschland |
| http://www.bsds.de =B7 BSDS Braczek Software- und DatenSysteme |
| Webdesign =B7 Webhosting =B7 e-Commerce =B7 Joomla! Content Management =
|
------------------------------------------------------------ ------
Re: Verständnisfrage, zwei Schleifen verknüpfen
Niels Braczek schrieb:
> Claus Reibenstein schrieb:
>
>> Sorry, aber ich sehe da nur _eine_ Schleife.
>
> Es sind zwei - ineinander verschachtelte - Schleifen. Korrekt eingerückt
> ist das auch offensichtlich:
>
> while ( $vv_object = mysql_fetch_object( $vv_result ) ) {
Danke für den Hinweis. Das war die Zeile, die ich übersehen habe.
Gruß. Claus
Re: Verständnisfrage, zwei Schleifen verknüpfen
Hi Niels,
Niels Braczek schrieb:
> while ( $vv = mysql_fetch_object( $vv_result ) ) {
> $checked = in_array( $vv->kat, $a_vv ) ? ' checked="checked"' : '';
> printf( '<input type="checkbox" name="a_vv[]" value="%s"%s>%s<br/>',
> $vv->kat, $checked, $vv->name
> );
> }
vielen Dank, werde ich übernehmen und mir mal die Funktion in_array()
zur Brust nehmen.
bye
Stefano
--
business: spicOne multimedia http://www.spicone.de - http://www.spic.de
projects: http://www.mythos77.de - http://www.typopolis.de
private: http://blog.stefano-picco.de - http://spicone.deviantart.com
Re: Verständnisfrage, zwei Schleifen verknüpfen
Hi Niels,
Niels Braczek schrieb:
> Es sind zwei - ineinander verschachtelte - Schleifen. Korrekt eingerückt
> ist das auch offensichtlich:
sorry, wie gesagt bin eher PHP Bastler. War auch nur schnell Copy &
Paste aus dem zusammengeschusterten Code.
bye
Stefano
--
business: spicOne multimedia http://www.spicone.de - http://www.spic.de
projects: http://www.mythos77.de - http://www.typopolis.de
private: http://blog.stefano-picco.de - http://spicone.deviantart.com
Re: Verständnisfrage, zwei Schleifen verknüpfen
stefano picco schrieb:
> Hi Niels,
>
> Niels Braczek schrieb:
>> while ( $vv = mysql_fetch_object( $vv_result ) ) {
>> $checked = in_array( $vv->kat, $a_vv ) ? ' checked="checked"' : '';
>> printf( '<input type="checkbox" name="a_vv[]" value="%s"%s>%s<br/>',
>> $vv->kat, $checked, $vv->name
>> );
>> }
>
> vielen Dank, werde ich übernehmen und mir mal die Funktion in_array()
> zur Brust nehmen.
Und vor allem auch printf() bzw. sprintf(), was unübersichtliche
echo - if - echo - Bandwürmer einfacher und übesichtlicher macht.
Gruß
JPM
Re: Verständnisfrage, zwei Schleifen verknüpfen
Hi Jens,
Jens Peter Moeller schrieb:
> Und vor allem auch printf() bzw. sprintf(), was unübersichtliche
> echo - if - echo - Bandwürmer einfacher und übesichtlicher macht.
okay werde ich machen, bin halt so ein altes DOS Batch ECHO Kind :P
bye
Stefano
--
business: spicOne multimedia http://www.spicone.de - http://www.spic.de
projects: http://www.mythos77.de - http://www.typopolis.de
private: http://blog.stefano-picco.de - http://spicone.deviantart.com