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
stefano picco [ Fr, 05 Oktober 2007 16:48 ] [ ID #1837604 ]

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 =
|
------------------------------------------------------------ ------
Niels Braczek [ Fr, 05 Oktober 2007 17:01 ] [ ID #1837605 ]

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
stefano picco [ Fr, 05 Oktober 2007 17:07 ] [ ID #1837606 ]

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.
Jonas Werres [ Fr, 05 Oktober 2007 17:16 ] [ ID #1837607 ]

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
Werner Flamme [ Fr, 05 Oktober 2007 17:27 ] [ ID #1837608 ]

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
stefano picco [ Fr, 05 Oktober 2007 17:26 ] [ ID #1837609 ]

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
stefano picco [ Sa, 06 Oktober 2007 14:27 ] [ ID #1838203 ]

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
Claus Reibenstein [ Fr, 05 Oktober 2007 23:50 ] [ ID #1838213 ]

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 =
|
------------------------------------------------------------ ------
Niels Braczek [ Sa, 06 Oktober 2007 23:30 ] [ ID #1838216 ]

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 =
|
------------------------------------------------------------ ------
Niels Braczek [ Sa, 06 Oktober 2007 23:35 ] [ ID #1838217 ]

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
Claus Reibenstein [ Sa, 06 Oktober 2007 23:39 ] [ ID #1838218 ]

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
stefano picco [ Mo, 08 Oktober 2007 13:45 ] [ ID #1839485 ]

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
stefano picco [ Mo, 08 Oktober 2007 13:47 ] [ ID #1839487 ]

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
dev-null-use-reply-ad [ Mo, 08 Oktober 2007 14:36 ] [ ID #1839494 ]

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
stefano picco [ Mo, 08 Oktober 2007 14:46 ] [ ID #1839498 ]
PHP » de.comp.lang.php.misc » Verständnisfrage, zwei Schleifen verknüpfen

Vorheriges Thema: Notice: Constant WERT1 already defined in
Nächstes Thema: SWiki, weil einfach einfach einfach ist.