Björn Lindner: umständliches Script vereinfachen

Hi,

mein erster Versuch ein PHP Script zu schreiben war ja ganz doll, solange es auf einem Server ohne Laufzeitbeschränkung lag.
Doch jetzt muß es zu einem provider mit Beschränkung.
Kurz um, es muß kürzer werden.
Ich aber keine Ahnung hab davon.
Schauts doch bitte mal an, und gebt mir tips.

<script language="php">
$flagg=0;
for($a=0;$a<=$i;$a++)
{
$temp2=$plz[$a][0];
if ($temp2 == $postleitzahl)
{
  echo "<tr>";
  echo " <td width='10%'>" .$plz[$a][0] ." </td>";
  echo " <td width='25%'>" .$plz[$a][3] ."</td>";
  echo " <td width='40%'>" .$plz[$a][4] ."</td>";
  echo " <td width='25%'>" .$plz[$a][5] ."</td>";
  echo "</tr>";

$temp3=$plz[$a][0];
  if ($temp3==$postleitzahl)
  {
   $zaehler++;
   $merke1=$plz[$a][1];
   $merke2=$plz[$a][2];
  }
}
}
if ($zaehler==0)
{
for($z=0;$z<=$j;$z++)
{
  $temp5=$koord[$z][0];
  if($temp5==$postleitzahl)
  {
   $flagg=1;
   for($b=0;$b<=$i;$b++)
   {
    $temp4=$plz[$b][0];
    if($temp4<>$temp5)
    {
     $x1=$koord[$z][1];
     $doublex1 = doubleval ($x1);
     $y1=$koord[$z][2];
     $doubley1 = doubleval ($y1);
     $x2=$plz[$b][1];
     $doublex2 = doubleval ($x2);
     $y2=$plz[$b][2];
     $doubley2 = doubleval ($y2);
     $dx=($doublex1-$doublex2)*80;
     $dy=($doubley1-$doubley2)*110;
     $entf[$b][0]=bcsqrt((bcpow($dx,2,10)+bcpow($dy,2,10)),10);
     $entf[$b][1]=$plz[$b][0];
    }
   }
  }
}
echo "<hr>";
for($e=$i;$e>=0;$e--)
{
  for($j=1;$j<=$e;$j++)
  {
   if($entf[$j-1][0]>$entf[$j][0])
   {
    $t=$entf[$j-1][0];
    $s=$entf[$j-1][1];
    $entf[$j-1][0]=$entf[$j][0];
    $entf[$j-1][1]=$entf[$j][1];
    $entf[$j][0]=$t;
    $entf[$j][1]=$s;
   }
  }
}
$w=0;
for($e=$i;$e>=0;$e--)
{
  for($j=1;$j<=$e;$j++)
  {
   if($entf[$j-1][0]<>$entf[$j][0] && $entf[$j][0]<>0)
   {
    $post[$w][0]=$entf[$j][0];
    $post[$w][1]=$entf[$j][1];
    $w++;
   }
  }
}
$k=11-$zaehler;
$l=$k;
for($c=0;$c<=$k;$c++)
{
  for($m=0;$m<=$i;$m++)
  {
   $temp7=$plz[$m][0];
   if ($temp7 == $post[$c][1] && $l<>0)
   {
    echo "<tr>";
    echo " <td width='10%'>" .$plz[$m][0] ." </td>";
    echo " <td width='25%'>" .$plz[$m][3] ."</td>";
    echo " <td width='40%'>" .$plz[$m][4] ."</td>";
    echo " <td width='25%'>" .$plz[$m][5] ."</td>";
    echo "</tr>";
    $l--;
   }
  }
}
}
if ($zaehler<10 && $zaehler<>0)
{
$flagg=1;
for($b=0;$b<=$i;$b++)
{
  $temp4=$plz[$b][0];
  if($temp4<>$postleitzahl)
  {
   $x1=$merke1;
   $y1=$merke2;
   $x2=$plz[$b][1];
   $doublex2 = doubleval ($x2);
   $y2=$plz[$b][2];
   $doubley2 = doubleval ($y2);
   $dx=($x1-$doublex2)*80;
   $dy=($y1-$doubley2)*110;
   $entf[$b][0]=bcsqrt((bcpow($dx,2,10)+bcpow($dy,2,10)),10);
   $entf[$b][1]=$plz[$b][0];
  }
}
for($e=$i;$e>=0;$e--)
{
  for($j=1;$j<=$e;$j++)
  {
   if($entf[$j-1][0]>$entf[$j][0])
   {
    $t=$entf[$j-1][0];
    $s=$entf[$j-1][1];
    $entf[$j-1][0]=$entf[$j][0];
    $entf[$j-1][1]=$entf[$j][1];
    $entf[$j][0]=$t;
    $entf[$j][1]=$s;
   }
  }
}
$w=0;
for($e=$i;$e>=0;$e--)
{
  for($j=1;$j<=$e;$j++)
  {
   if($entf[$j-1][0]<>$entf[$j][0] && $entf[$j][0]<>0)
   {
    $post[$w][0]=$entf[$j][0];
    $post[$w][1]=$entf[$j][1];
    $w++;
   }
  }
}
$k=11-$zaehler;
$l=$k;
for($c=0;$c<=$k;$c++)
{
  for($m=0;$m<=$i;$m++)
  {
   $temp7=$plz[$m][0];
   if ($temp7 == $post[$c][1] && $l<>0)
   {
    echo "<tr>";
    echo " <td width='10%'>" .$plz[$m][0] ." </td>";
    echo " <td width='25%'>" .$plz[$m][3] ."</td>";
    echo " <td width='40%'>" .$plz[$m][4] ."</td>";
    echo " <td width='25%'>" .$plz[$m][5] ."</td>";
    echo "</tr>";
    $l--;
   }
  }
}
}
if($flagg==0)
{
echo "<tr>";
echo " <td width='100%'>". 'Die von ihnen eingegebene Postleitzahl konnte nicht gefunden werden' ." </td>";
  echo "</tr>";
}
</script>

MFG Björn

  1. Hi,

    hammerhart das Script - aber wenn Du eine PHP-Website willst solltest Du vielleicht auch PHP lernen...

    Ciao
    Andreas

    1. Hi Andreas,

      ich weiß nicht wie das jetzt so genau gemeint war, sicher ist aber, das ich mich durchaus versuche in PHP einzuarbeiten, wie man ja auch irgendwie an dem Script sieht.
      Ich denke aber, das es rein programmiertechnisch auch noch kürzer gehen muß.
      Und dazu hole ich mir auch gern Gedanken schon etwas eingefleischterer Programmierer.
      Wenn Du daruntzer verstehst, da ich PHP nicht lernen will, muß ich Dich leider enttäuschen.

      MFG Björn Lindner

      1. Hallo Björn,

        Ohne daß ich mich mit PHP sonderlich gut auskennen würde, so wäre es für die Eggsbädde sicherlich hilfreich zu wissen, was das Programm machen soll. Weiterhin wäre es von Vorteil, wenn das Programm ordentlich kommentiert wäre, und die Einrückungen des Codes stimmen würden. :-)
        Überarbeite das ganze doch nochmal, versuch zeitkritische Stellen auszumachen (einfach an bestimmten Stellen eine Zeitmessung vornehmen) und stell das ganze als skript.txt online, damit der geneigte Leser sich das durchlesen kann.
        Vielleicht hilft es auch, freie Skripte mit ähnlicher Funktionalität anzuschauen, um zu sehen, wie es andere machen.

        Gruß AlexBausW

        Please visit my SELFvisitingcard @ http://www.atomic-eggs.com/selfspezial/daten/150.html

        1. Danke Alex,

          werd ich erstmal tun, und mich dann wieder melden.

          MFG Björn