SmartyShark: Dynamische Tabellen - Besondere Frage

Hallo Leute,

ich habe folgendes Problem. Hoffe jemand kann mir helfen.

Ich habe ein MySQL-Query ausgeführt. Das result sind viele
IP-Adressen die nach Ziffern sortiert sind.

Nun möchte ich eine dynamische Tabelle mit PHP erzeugen, die
z.B. bei 500 IP-Adressen immer nur 80 pro Seite anzeigt. Dazu
programmiere ich noch einen Navigationsbalken unter der Tabelle um
die Seiten zu navigieren.

Im Moment wäre ich aber schon bedient, wenn Ihr mir dabei hilft
32 IP-Adressen in einer Tabelle anzuzeigen. Maximal 80 pro Seite, heißt
also das 32 da rein passen. Bei 32 IP-Adressen brauchen wir also nur eine Seite (Der Navigationsbalken ist also im Moment überflüssig).

Code:
-----

Mein PHP-Code zur Erzeugung ist ungefähr folgender (muss noch erweitert werden):

// Erstellung der Tabelle für die Server
$tr = 10;
$td = 4;

echo "<table border='1'>";
for($i=0;$i<$tr;$i++)
{
  $tmp = $i;
  echo "<tr>";

for($j=0;$j<$td;$j++)
  {
   echo "<td style='width:200px'>Test</td>";
   echo "</tr>";
  }
}
echo "</table>";

Wie man sieht brauche ich maximal 4 Spalten pro HTML-Seite und maximal 20 Zeilen.

Problem:
--------

Laut meines obigen Codes habe ich nur die Möglichkeit die IP-Adressen
da wo "Test" steht rein zu schreiben. Das würde aber heißen, das
die Reihenfolge der Adressen von links nach rechts geht.

Ich will das die IP-Adressen die Reihenfolge von oben nach unten bekommen. Das heisst in der ersten Spalte z.B. von 1 - 10, in der 2.Spalte von 11-20 etc.

Das ist etwas tricky. Hat jemand eine Idee?

Gruss
SmartyShark

  1. Hi Leute,

    ich habe es bereits rausgefunden. Man bildet ein dynamisches 2-Dim. Array der IP-Adressen sozusagen als Abbild.

    Dieses Abbild der Matrix kann man dann in die dynamische Tabelle einpflegen.

    Wenn jemand was besseres weiss, bitte sagt es mir.

    Gruss
    SmartyShark

    1. Hallo,

      also ich muss gestehen das ich nicht den Punkt finde wo dein Problem liegt bzw die Frage nicht verstehe. Z.b. aus diesen Absatz:

      Im Moment wäre ich aber schon bedient, wenn Ihr mir dabei hilft
      32 IP-Adressen in einer Tabelle anzuzeigen. Maximal 80 pro Seite, heißt
      also das 32 da rein passen. Bei 32 IP-Adressen brauchen wir also nur eine Seite (Der Navigationsbalken ist also im Moment überflüssig).

      lese ich nur raus das 80 > 32 ist ...

      Also was möchtest du tun? Du fragst Daten aus einer Mysql Tabelle ab und möchtest sie in einer HTML Tabelle darstellen? Die Tabelle per Schleife erstellen und die Anzahl der Zeilen der MYSQL Abfrage per Limit beschränken.

      Das würde aber heißen, das die Reihenfolge der Adressen von links »» nach rechts geht.

      Diese Art der Sortierung sagt mir gar nichts? Ein Beispiel evtl. mit 3-4 IP Adressen was du meinst.

      Gruß

      Markus

      1. Hi Markus,

        ich bin schon gerade an einer Lösung. Kann aber sein das es besser geht. Natürlich wäre ein Limit besser aus Performance-Gründen.
        Ich benutze aber kein Limit sondern hole mir alle IP´s raus.

        Der Grund dafür ist der, das ich doch sowieso wissen muss wieviele IP´s
        mittels dem Query ich bekomme, aufgrund der späteren Tabellenbildung.
        Natürlich kann ich ein Count(..) per Mysql machen und habe so auch die Anzahl. Und mittels dem Count könnte ich dann ein Limit jedesmal machen, wenn der User sich durch den Navigationsbalken durchnavigiert.

        Trotzdem wäre das immer wieder ein MySQL-Limit-Aufruf. Ich umgehe das, und hole mir alle IP´s und speichere diese in eine SESSION-Variable.
        Das mit dem Limit hat natürlich den Vorteil das immer die aktuellen
        IPS angezeigt werden. Ehrlich gezeigt weiss ich momentan nicht wie
        ich die komplette Prozedur mit Limit mache, bedeutet:

        Count --> Limit --> Navigationsbalken benutzen (z.b. nächste 15 anzeigen) --> Limit... !?!?

        Mein Problem von vorhin:

        z.B. 10 Adressen:

        Mit meiner schleife von vorhin wäre es so bei 4 Spalten und
        maximal 3 Zeilen (eigentlich mehr Zeilen, ist jetzt nur ein Beispiel):

        0 1 2  3
        4 5 6  7
        8 9 10

        Ich will es so:

        0 3 6  9
        1 4 7 10
        2 5 8

        Das habe ich jetzt gelöst indem,:

        (1)ich alle ip´s hole, (2)diese dann in ein 2-Dim-Array abbilde und
        (3)dann meine vorige Schleife ausführe mit diesem neuen 2-Dim-Array
        ohne "test".

        Verstehst du?Was ist nun besser?

        Gruss
        SmartyShark

        1. Hallo,

          jap was du mit der Sortierung meinst ist mir jetzt klar, aber das hast ja Mittlerweile schon eine Lösung :-)

          Gruß

          Markus

          1. Trotzdem danke :-)

            Gruss
            SmartyShark