Problem bei sql Abfrage / Ausgabe in Tabelle

spikaner

Quereinsteiger @ php
Wie realisiere ich eine, DB-Abfrage und Tabellenausgabe am besten, folgendes Problem ich will datensätze ID Kreisförmig Auf- Absteigend in einer Tabelle ausgeben (siehe Beispielbild 1)
ausserdem soll bei der ausgabe der ID ein Hyperlink erstellt werden der die maximale entfernung zur Mitte angibt http://bla.de/bla.php?entfernung=3 z.B (Beispielbild 2)
nur wie realisiere ich sowas am einfachsten/besten/überhaupt?
Ich zerbreche mir schon Tagelang den Kopf komme aber auf keine Lösung.

mfg Spikaner

beispiel.jpgbeispiel2.jpg
 
Kannst Du bitte ein bisschen mehr Info geben, ich kann mir noch nicht richtig vorstellen, worauf Du hinauswillst und das wäre für einen Lösungsansatz erforderlich.

Grüße
jrook
 
Kannst Du bitte ein bisschen mehr Info geben, ich kann mir noch nicht richtig vorstellen, worauf Du hinauswillst und das wäre für einen Lösungsansatz erforderlich.

Grüße
jrook

Ich versuchs mal genauer zu beschreiben, ich will rund um die ID (in der datenbank) die Ausgabe "Kreisförmig" auf und absteigend verteilen.
Sprich Ausgangs ID wie im oberen post in der Mitte 19 dann erster "Kreis" ID 18 - 15 und 20 - 23 3. 2. ID 14 - 7 und 24 - 31 usw. insgesammt sollen so dann 8 kreise enstehen ingesammt in einer Tabelle 9 * 9 felder

beispiel3.jpg
P.S. ist jetzt nur so hingekritzelt ^^

mfg
 
Zuletzt bearbeitet:
Also ganz simpel würde ich sagen, du erzeugst ein Multi-Array mit 81 Feldern.
Jedes Array-Element bekommt 3 Kind-Elemente. Zeile,Spalte und Wert, wobei Wert die Id des Datensatzes ist.
Feld 0 bekommt Spalte=5 Zeile=5 und wird mit dem Startwert initialisert (hier 19).
Der Aufbau bewegt sich in Kreisen, die Vielfache von vier als mögliche Werte zulassen.

Kreis 1 die Arrayfelder1,2,3,4 erhält die Werte von:
GrößterWert (ArrayFeld 1) = Ausgangswert-(kreisnummer-1)*4-1 bis
= 19-(1-1)*4-1
<=>19-0*4-1
<=>19-1 = 18
KleinsterWert (ArrayFeld 4) = Ausgangswert-Kreisnummer*(Kreinummer+1)/2*4
=19-1*(1+1)/2*4
<=>19-1*2/2*4
<=>19-4 = 15


Kreis 2 die Arrayfelder 5,6,7,8 erhält Werte von:
KleinsterWert (ArrayFeld 5) = Ausgangswert+(kreisnummer-1)*4+1 bis
= 19 + (1-1)*4+1
<=>19 + 0*4+1
<=> 19+1 = 20
GrößterWert (ArrayFeld 8)= Ausgangswert+Kreisnummer*(Kreisnummer+1)/2*4
=19+1*(1+1)/2*4
<=>19+1*2/2*4
<=>19+1*4
<=>19+4 = 23


Also Feld 9 Das erste Feld in Kreis 2 (übrigens Zeile=5, Spalte=3, in Deiner Skizze der Wert 14) sieht die Rechnung dann wie folgt aus.
GrößterWert (ArrayFeld 9) = Ausgangswert-(kreisnummer-1)*4-1 bis
= 19-(2-1)*4-1
<=>19-1*4-1
<=>19-4-1
<=> 19-5 = 14
KleinsterWert (Array-Feld 16) = Ausgangswert-Kreisnummer*(Kreinummer+1)/2*4
=19-2*(2+1)/2*4
<=>19-2*3/2*4
<=>19-6/2*4
<=> 19-3*4
<=> 19-12 = 7

und soweiter.
Danach schreibst du zwei for-Schleifen und benutzt die Iteratoren als Indizes für Dein Array Feld und gibst den entsprechenden Wert aus.

Etwas unübersichtlich, aber es sollte funktionieren.

Viele Grüße
jrook
 
jrook,
danke für die schnelle Antwort aber wie fang ich damit an bzw. sieht sowas aus..
also momentan versteh ich nur "Bahnhof" (bei der Umsetzung)

mfg Spikaner
 
Habe das jetzt soweit gelöst (habe den Post doch noch verstanden^^) aber ein problem bleibt
wenn ich jetzt z.B. ID 10 anklicke soll er abwärts auch zählen sprich 10 9 8 usw 3 2 1 und dann wieder bei 99 98 97 weitermachen wie realisiere ich das bei der DB Abfrage?

beispiel3.jpg
PHP:
$sql_query_string = "SELECT * FROM planeten WHERE id Between 20 AND 40";
$result =mysql_query($sql_query_string) or die('query fehlgeschlagen');
while(($datensatz=mysql_fetch_assoc($result)))
echo $datensatz['id'];
//aber
$sql_query_string = "SELECT * FROM planeten WHERE id Between 90 AND 30"; //funktioniert ja nicht..

mfg Spikaner
 
Zuletzt bearbeitet:
Was ist daran falsch, ich komme einfach nicht darauf das script läuft zwar durch aber es entsteht kein array..
PHP:
    If ($aufenthaltsort > 40){
        $i=0;
        $variable1 = $aufenthaltsort + 40;
        $variable2 = 1;
        $variable3 = 99;
        $variable4 = 99 - 40 + $aufenthaltsort;
        $sql_query_string = "SELECT * FROM planeten WHERE id Between '".$variable2."' AND '".$variable1."'";
        $result = mysql_query($sql_query_string) or die('query fehlgeschlagen');
        while(($planet=mysql_fetch_object($result)))
        {
            $planeten[$i] = $planet->id;
            $i++;
        }
        $sql_query_string = "SELECT * FROM planeten WHERE id Between '".$variable4."' AND '".$variable3."'";
        $result =mysql_query($sql_query_string) or die('query fehlgeschlagen');
        while(($planet=mysql_fetch_object($result)))
        {
            $planeten[$i] = $planet->id;
            $i++;
        }
    }

mfg Spikaner
 
Gibt das Query überhaupt daten zurück?
Hast das schonmal getestet?
Mal mit einem echo versuchen, ob das Query etwas zurückgibt..
 
Zurück