phpbar.de logo

Mailinglisten-Archive

[php] Schnittmenge zweier Arrays finden und verarbeiten

[php] Schnittmenge zweier Arrays finden und verarbeiten

Friederun Göllner goellner at macnews.de
Sam Aug 28 18:40:18 CEST 2004


Hi Norbert,

herzlichen Dank, Du bringst mich der Loesung auf jeden Fall naeher!

>So hast Du fuer jede Verarbeitungsart einen Resultset.

Den Ansatz merke ich mir, der ist aber hier nicht so schoen. Ich will 
aus einer Tabelle mit allen Farben alle anzeigen, aber nur die, die 
bereits vorgewaehlt (als Datensatz in einer zweiten Tabelle angelegt) 
sind als gewaehlt markieren (checkbox).

Leider gelingt es mir nicht, die foreach-Schleifen korrekt in den 
Code einzufuegen. Aber darin liegt auf jeden Fall die Loesung. Ich 
will ja nicht erst die Farben, die schon gewaehlt sind anzeigen, 
sondern alle Farben und mittendrin die vorgewaehlten als checked 
markieren. Damit man die Anzeige aller Farben auch sortieren kann ...

Ich kriege das ganze nun nicht in einander verschachtelt, denn als 
Ergebnis des ersten Array soll ja schon einiges gemacht werden und 
nur an einer Stelle setzt der Vergleich mit dem zweiten Array an. So 
funktioniert es _nicht_:

echo "<table border =\"0\">\n";
$sql5 = "SELECT feld1, feld2,feld3 FROM farben";
$ergebnis = mysql_query($sql5, $verbindung)
	or die("Anfrage fehlgeschlagen: " . mysql_error());
if($ergebnis) {
$count = 0;
echo "<tr>\n";
while ($zeile=mysql_fetch_array($ergebnis))
{
$count++;
if(0 ===(($count - 1) % 3)) echo "</tr><tr>";
echo "<td nowrap>\n";
// diese Bedingungen gelten nur fuer alle farben
$sql6 = mysql_query("SELECT feld1 FROM farben2 WHERE farben2.ID = '" 
. 
	$_GET['id'] . "'", $verbindung);
$row=mysql_fetch_array($sql6);
   foreach($zeile as $value1) {
     foreach($row as $value2) {
        if($value1 == $value2) echo "<input type=\"checkbox\" 
name=\"FarbenID[]\" value=\"$zeile[0]\" checked> $zeile[2], 
$zeile[1]&nbsp;&nbsp;&nbsp;&nbsp;</td>\n";
        else echo "<input type=\"checkbox\" name=\"FarbenID[]\" 
value=\"$zeile[0]\"> $zeile[2], 
$zeile[1]&nbsp;&nbsp;&nbsp;&nbsp;</td>\n";
           //nur hier soll der Vergleich greifen, alles andere soll 
nur fuer Array1 gelten
         }
      }
    }
while ($count % 3)
{
$count++;
echo "<td>&nbsp;</td>\n";
}
echo "</tr>\n";
echo "</table>\n";

Kannst Du mir da nochmal weiterhelfen?
Vielen Dank!
Friederun
-- 

php::bar PHP Wiki   -   Listenarchive