Script vereinfachen nur wie?

aTa

Erfahrenes Mitglied
Servus,
folgendes Script sorgt dafür dass Firmen usw aus der DB ausgegeben werden, bei 40 Firmen habe ich 40 mal diesen Select Befehl der sich dann halt verändert und nur dadurch unterscheidet, das die ID der Firma anders ist.
Nun habe ich mal geschaut wie groß das Ding ist und hab 25KB gelesen, also ich finde das etwas zu gross.
Habt ihr evtl. nen Vorschlag wie ich das vereinfachen kann.
Vielen Dank schonmal!
PS: das ist nicht der ganze Code sondern nur der obere Teil mit der ersten Ausgabe.
PHP:
<?
echo '</td><td valign="top" width="600"><table cellspacing="0" cellpadding="0" border="0" width="100%">'."\n";
$sql = "SELECT Firma FROM firmen WHERE ID = $id LIMIT 1";
$result = mysql_query($sql) OR die(mysql_error());
while($row = mysql_fetch_assoc($result))
{
echo '<tr><td colspan="5" class="tableheader"><img src="images/button_grau.gif" border="0" height="9" width="9">&nbsp;'.$row['Firma'].'</td></tr>';
echo '<tr><td colspan="5" height="3"></td></tr>';
echo '<tr><td colspan="5" height="1" bgcolor="#000000"></td></tr>';
echo '<tr><td><b>Abteilung</b></td><td><b>Nachname</b></td><td><b>Vorname</b></td><td><b>Telefon</b></td><td><b>Fax</b></td></tr>';
echo '<tr><td colspan="5" height="3"></td></tr>';
}

  switch ($_GET["id"]) {
    case "1":
         $sql = "SELECT   T1.*,T2.*,T3.* FROM personen T1 JOIN firmen T2 JOIN abteilungen T3 WHERE T1.Firma = T2.ID AND T1.Abteilung = T3.ID AND T2.ID='1'";
         $result = mysql_query($sql) OR die(mysql_error());
         $i = 1;
         while ($row = mysql_fetch_array($result))
         {
         if ($i % 2) echo '<tr class="tablestyle">'."\n"; else echo '<tr>'."\n";
         if ($titel != $row['Abteilung'])
         {
         echo '<td><b>' . $row ['Abteilung'] . '</b></td>'."\n";;
         }
         else
         {
         echo '<td></td>'."\n";;
         }
         echo '<td>'.$row['Nachname'].'</td>'."\n".'<td>'.$row['Vorname'].'</td>'."\n".'<td>'.$row['Telefon'].'</td>'."\n".'<td>'.$row['Fax'].'</td>'."\n".'</tr>'."\n";
         $titel = $row['Abteilung'];
         $i += 1;
         }
         break;
 
Wodurch ändert sich die ID denn immer? Sollen überhaupt alle Datensätze gleichzeitig abgefragt werden? Oder wo genau hoffst du eine mögliche Verbesserung?
 
Naja die ID ändert sich immer dann wenn ich in der Navigation einen neuen Navipunkt auswähle.
Und die Navi wird aus der DB generiert.
Ich suche eben eine Möglichjkeit dass ich bei 40 verschiedenen Firmen keine 40 verschiedenen Abfragen habe sondern nur eine einzige wenn Möglich.

Erledigt, ich hatte im case immer eine feste ID und im Select auch, diese habe ich einfach durch $id ersetzt.

Danke trotzdem :)
 
Erledigt, ich hatte im case immer eine feste ID und im Select auch, diese habe ich einfach durch $id ersetzt.
Das wäre auch mein nächster Ansatzpunkt gewesen. Übrigens kann der Quellcode doch optimiert werden:
PHP:
<?php

         $query = '
		SELECT
		        T1.*,
		        T2.*,
		        T3.*
		  FROM
		        `personen` AS `T1`
		    JOIN `firmen` AS `T2`
		    JOIN `abteilungen` AS `T3`
		  WHERE
		        `T1`.`Firma` = `T2`.`ID`
		    AND `T1`.`Abteilung` = `T3`.`ID`
		    AND `T2`.`ID`        = "'.intval($_GET['id']).'"
		';
	$result = mysql_query($query)
		or die(mysql_error());

?>
<h2><?php echo mysql_result($result, 0, 'T1.Firma'); ?></h2>
 <table>
	<tr>
		<th>Abteilung</th><th>Nachname</th><th>Vorname</th><th>Telefon</th><th>Fax</th></tr>
<?php

	$i = 0;
	while( $row = mysql_fetch_assoc($result) ) {
 		…
	}

?>
</table>
 

Neue Beiträge

Zurück