phpbar.de logo

Mailinglisten-Archive

[php] Arrayfunktion - welche?

[php] Arrayfunktion - welche?

Joern Grube jg at cm-jg-portale.de
Die Nov 30 18:54:12 CET 2004


Sebastian Mendel schrieb:
> Joern Grube wrote:
>> $sql = "SELECT
>>         all_staat_id,
>>         all_staat_staat,
>>         all_bundesland_id,
>>         all_bundesland_bundesland,
>>         all_bundesland_staat
>>     FROM
>>         all_staat,
>>         all_bundesland
>>         WHERE all_bundesland_staat = all_staat_id
>>         ORDER BY all_staat_staat, all_bundesland_bundesland ASC";
> 
> Wieso lässt du Daten aus der DB holen die du gar nicht verwendest?
> Und ist `all_bundesland_staat` nicht ein String und `all_staat_id` nicht 
> eine Zahl (im WHERE)?

Mein Mentor hat mir mal beigebracht, dass man auch alles, was in der 
WHERE-Klausel steht, holen soll. Oder bring ich da was durcheinander? 
'all_bundesland_staat' ist die ID des Staates, zu dem das Bundesland 
gehört und identisch mit 'all_staat_id' aus der Tabelle, beide vom Typ 
int. Praktisch sowas wie der "Fremdschlüssel". Ich hätte natürlich die 
Staaten und Bundesländer auch in eine Tabelle schreiben können, 
wahrscheinlich übertreibe ich es manchmal mit der Normalisierung :(

> 
>    SELECT all_staat_staat           AS `staat`,
>           all_bundesland_bundesland AS `land`
>      FROM all_staat,
>           all_bundesland
>     WHERE all_bundesland_staat = all_staat_id
>  ORDER BY all_staat_staat,
>           all_bundesland_bundesland ASC
>
>>
>> // Neue Instanz der DB-Klasse Query erstellen
> 
> 
> welche DB-Klasse ?

Ganz kleines, simples Teil, selbstgebaut, eigentlich nur, um die 
Grundlagen von Klassen zu kapieren.

>> $i = 0;
>>
>> while($i < $anzeige->numRows()) {
>>     echo "<tr onMouseOver=\"this.bgColor='#ccffcc'\" 
>> onMouseOut=\"this.bgColor='#ffffff'\">";
>>     for($a = 1; $a < 4; $a++) {
>>         if($i < $anzeige->numRows()) {
>>             $cell = $anzeige->fetch();
>>             $i++;
>>             echo "<td width=\"33%\">".$cell["all_staat_staat"]." => 
>> ".$cell["all_bundesland_bundesland"]."</td>";
>>         } else {
>>             echo "<td width=\"33%\">&nbsp;</td>";
>>             }
>>     }
>>     echo "</tr>";
>> }
> 
> 
> ganz schön umstandlich ...
> 
> while ( $row = $anzeige->fetchRow() )
> {
>     $staaten[$row['staat']][] = $row['land'];
> }
> 
> foreach ( $staaten as $staat => $laender )
> {
>     echo '<tr><th>' . $staat . '</th><td>' . implode( ', ', $laender ) . 
> '</td></tr>';
> }
> 
> ... irgendwie so ...

Noch nicht ganz das, was ich wollte, aber absolut ausreichend :) Danke sehr.

--
  Mit freundlichen Gruessen Joern Grube

php::bar PHP Wiki   -   Listenarchive