Dynamische Kartensetzung per PHP
Sven
- php
0 Samuel Vogel0 Tom0 Henning Bösch0 Sven
0 Tom
Hallo,
ich habe eine große Karte in ca. 480 einzelne GIF's zerschnitten. Nun soll der Benutzer in einen kleinen Ausschnitt durch die gesamte Karte wandern. Dazu soll der Benutzer duch eine Steuerung entscheiden können, ob er noch oben, unten oder rechts und links auf der Karte weiter will. Wie könnte ich soetwas per PHP und einer Textdatei mit den Bildkoordinaten oder einer MySQL-Datenbank lösen? Ich konnte bisher im Internet nichts brauchbares finden.
Bisher habe ich soetwas nur mit HTML umgesetzt. Aber da warens nur 100 GIF's ;-)
Gruß
Sven
hallo,
Ich würde das so machen:
Gehen wir davon aus du hast 16 Bilder:
1 2 3 4
4 5 6 7
9 10 11 12
13 14 15 16
Link auf die Seite: <a href="karte.php?bild=1">Karte</a>
echo "<img src='bild".$bild.".gif' alt='bild".$bild."'>"; //gibt das Bild aus
echo "<a href='karte.php?bild="--$bild"'>links</a>"; //Nach links
echo "<a href='karte.php?bild="++$bild"'>rechts</a>"; //Nach rechts
echo "<a href='karte.php?bild="$bild+4"'>oben</a>"; //Nach oben
echo "<a href='karte.php?bild="$bild-4"'>unten</a>"; //Nach unten
}
Ich hoffe du verstehst alles wenn nicht dann frag einfach nochmal.
samy,
Hello,
da Du die Karte in ROWS und COLS zerschnitten hast, würde ich das auch so steuern.
Das aktive Element hat eine Zeilennummer und eine Spaltennummer. Davon ausgehend kann man nun entweder mit den absoluten Werten per GET arbeiten, damit diese auch Bookmarkfähig sind, oder pr POST und relativen Angaben und den aktuellen Werten in einem hidden-Field desr Formulars:
Und dann mach 4 Richtungen mit 8 Orientierungen
8 1 2
7 3
6 5 4
1 => rows-1;
2 => cols+1, rows-1;
3 => cols+1;
4 => cols+1; rows+1;
Für die Bildausschnitte legtst Du ein Array an:
bildlink[row][col]:
$bildlink = array(1=>array(1=>"bild_1_1.jpg",
2=>"bild_1_2.jpg",
3=>"bild_1_3.jpg",
),
2=>array(1=>"bild_2_1.jpg",
2=>
usw.
Und wenn es mit den Bildnamen in Zeilen und Spalten so passt, kann man die ja auch berechnen aus den aktuellen und dem Button, der geklickt wurde.
Liebe Grüße aus http://www.braunschweig.de
Tom
Hallo,
1 2 3 4
4 5 6 7
9 10 11 12
13 14 15 16Link auf die Seite: <a href="karte.php?bild=1">Karte</a>
Man muss noch eine Überprüfung einbauen, die vehindert, dass man aus der Karte rausläuft. So ist es ja nicht unbedingt gewünscht, das man von 12 nach 13 kommt, wenn man nach rechts geht. In einer Datenbank könnte man die Zielnummern von einem Punkt aus für alle Richtungen speichern. Ich denke, das ist aber nur nötig, wenn die Karte nicht regelmäßig ist (z.B. Ausbeulungen oder Lücken).
Gruß,
Henning
Die Karte ist ein Viereck, zerteilt in einzelne Stücke - genau genommen 480 Gif's. Ich habe solche Kartenteile wieder zusammengefügt, indem ich für jede Seite eine HTML-Datei erstellt habe. Nun würde mich interessieren, wie ich die vielen einzelnen HTML-Dateien durch eine PHP-Datei ersetzen kann.
Nur verstehe ich Deinen Vorschlag nicht. Ich habe in PHP nur sehr wenig Ahnung.
Nun kann man denn nicht eine TXT-Datei mit allen Bildern anlegen?
Wie zum Bsp.:
map1 = Bild001.gif
map2 = Bild002.gif
map3 = Bild003.gif
map4 = Bild004.gif
map380 = Bild380.gif
In dem Link könnte dann so aussehen Karte.php?map1&map2&map3&map&map21&map22&map23
Nur wie erkläre ich das in PHP?
Gruß
Sven
Hallo,
1 2 3 4
4 5 6 7
9 10 11 12
13 14 15 16Link auf die Seite: <a href="karte.php?bild=1">Karte</a>
Man muss noch eine Überprüfung einbauen, die vehindert, dass man aus der Karte rausläuft. So ist es ja nicht unbedingt gewünscht, das man von 12 nach 13 kommt, wenn man nach rechts geht. In einer Datenbank könnte man die Zielnummern von einem Punkt aus für alle Richtungen speichern. Ich denke, das ist aber nur nötig, wenn die Karte nicht regelmäßig ist (z.B. Ausbeulungen oder Lücken).
Gruß,
Henning
Hallo Sven, <= </faq/#Q-05a>
Wenn Du willst, dass wir Dich ernst nehmen und Dir helfen,
dann lies bitte endlich die </faq/> und halte Dich daran.
Konkret: Bitte zitiere nur das, worauf Du Dich beziehst,
und gliedere Dein Posting anstaendig:
</faq/#Q-09a> und </faq/#Q-09b>
Nur verstehe ich Deinen Vorschlag nicht. Ich habe in PHP nur sehr wenig Ahnung.
Dann lerne es.
Kauf ein gutes neues Buch, oder benutze die Online-Ressourcen.
Wenn Du Links brauchst, frag nach.
Nun kann man denn nicht eine TXT-Datei mit allen Bildern anlegen?
map1 = Bild001.gif
map2 = Bild002.gif
map3 = Bild003.gif
map4 = Bild004.gif
map380 = Bild380.gif
Also, wenn schon
$map1 = "Bild001.gif";
oder besser
$map[1] = "Bild001.gif";
u.s.w.
Die Syntax und die Grundlagen musst Du schon selbst erarbeiten.
In dem Link könnte dann so aussehen Karte.php?map1&map2&map3&map&map21&map22&map23
Das ist keine schlaue Schreibweise,
weil Du dann den Querystring
mit komplizierten Verfahren selbst
analysieren musst.
Normalerweise uebergibt man als URL-Parameter
jeweils Paare mit Name und Wert.
karte.php?pos1=map1&pos2=map2
Dann stehen die Werte auch gleich in
einem Array namens $_GET zur Verfuegung,
so, als haette man definiert:
$_GET['pos1']="map1";
$_GET['pos2']="map2";
Nur wie erkläre ich das in PHP?
Es gibt viele Wege.
Eine Moeglichkeit waere, das ganze
mit einem zweidimensionalen Array
zu definieren.
1 2 3 4
| | | |
1 - 01 02 03 04
2 - 04 05 06 07
3 - 09 10 11 12
4 - 13 14 15 16
In PHP wuerde man den Inhalt der
Felder in einem zweidimensionalen Array speichern.
$feld[1][1]="01";
$feld[2][1]="02";
$feld[3][1]="03";
$feld[4][1]="04";
$feld[1][2]="05";
$feld[2][2]="06";
u.s.w.
Als URL-Parameter muesste man dann
nur noch die "Koordinaten" fuer die
obere linke Ecke angeben.
Wenn also folgendes angezeigt werden soll:
02 03 04
05 06 07
10 11 12
dann sollte man nur uebergeben muessen:
karte.php?x=2&y=1
denn die obere linke Ecke hat die
"Koordinaten" 2/1
Wie gesagt, das ist nur eine Idee,
es gibt noch viele andere Wege.
Das eigentliche Programmieren musst Du
schon selbst in die Hand nehmen.
Gruesse,
Thomas
Hello Sven,
wie ich gehört habe, hast Du Ärger mit deinem Thread und konntest meine Antwort nicht umsezten? Deinen Hilferuf habe ich allerdings nicht mehr beantworten können, denn er war wohl schon gelöscht worden.
---------------------------------------------------------------------
Ich möchte an dieser Stelle nochmals ausdrücklich einen Wunsch an die Forumsgesiter richten. Die Regel, dass der Opener in einem Thread bleiben soll, solange er noch im Forum steht, kann ich durchaus nachvollziehen. Allerdings würde ich mir da auch noch zwei wichtige Features für dieses (das wichtigste der...) Forum wünschen:
1. Sortiermöglichkeit nach letztem Zugriff
2. Markeiren von Threads, die man im Auge behalten möchte
---------------------------------------------------------------------
Das Verhalten der "Meckerer" fand ich nicht angemessen. der Stammthread stand schon weit unter der Häfte der aktiven. Es wird hier manchmal leider mehr Rücksicht auf "Geschäftsordnung" gelegt, als auf Content[tm]
Jungs (und Mädels -- von Euch habe ich solche penetrante Vorschriftenreiterei noch nicht erlebt), sollten wir nicht mehr auf Content achten als auf Formalien?
---------------------------------------------------------------------
Nun zur eigentlichen Frage, gleich hier, damit ich nicht in Versuchung gerate, einen neuen Thread aufzumachen [...und meine Spende scheint auch noch noch nicht angekommen zu sein und ist auch nicht so hoch fürs erste...]:
Es gibt da ja verschiedene Lösungswege. Wenn eine Karte später gepflegt werden soll oder z.B. Links in die Teilkarten eingebaut werden sollen, dann empfiehlt sich eine offene Struktur. Außerdem sollte man darüber nachdenken, ob das Bookmarken von einzelnen Karten erwünscht ist oder nicht.
Danach richtet sich auf jeden Fall die Steuerungsseite bzw. das Steuerungsscript aus. Die Karten als solche sollten immer, egal ob es eine geschlossene Lösung oder eine offene, über Parameter allokierbar sein.
Das führt dann z.B. zu einer Nomenklatur, die aus dem Georaster abgeleitet wird. Die linke obere Ecke der Karte wird mit ihren Gauß-Krüger-Koordinaten Einfluss auf den Dateinamen haben.
Der könnte dann also sein:
Ausschnitt_XXXXXX_YYYYYY.jpg
Dann wäre der passende Kartenausschnitt über die Koordinaten X und Y und eine Bauvorschrift für den Namen auffindbar.
Oder aber man würde den Kartenausschnitt chaotisch bezeichnen und dann eine Datenbank für die Lokalisierung benutzen
Ausschitt x y Dateiname
----------- -------- --------- -----------------------
Bodensee 1 1 Bodlinksoben1234klein.jpg
Bodensee 2 1 Tiefestellevom 20031212.jpg
Bodensee 3 1 Habichimbesoffenenkopfgemacht.jpg
Bodensee 1 2 gleichunterbodlinksoben.gif
Bodensee 2 2 geilstefraudieichtraf.jpg
Ich hoffe, Dir wird klar, was man unter einem chaotischen System versteht. Ohne die Datenbank bekommst Du dir Karte nicht wieder vernünftig zusammen.
Liebe Grüße aus http://www.braunschweig.de
Tom
Hallo Tom,
mir würde das hier schon reichen!
http://www.mittellande.org/karten/karte.php3
Hello Sven,
mir würde das hier schon reichen!
http://www.mittellande.org/karten/karte.php3
ich vermute, dass das nur ein Vorbild ist??
Dann schick mir doch mal Deine oberen linken 4*4 Karten als eMail und ich schick Dir ein Beispiel.
Ich brauch dann naoch Angaben über
MINROW=
MINCOL=
MAXROW=
MAXCOL=
Liebe Grüße aus http://www.braunschweig.de
Tom