Magst du mir hir die Formel verraten? Da ich irgendwie nix finde oder falsch suche.
Magst du uns die nötigen Informationen verraten um dir evtl. helfen zu können?
Also jetzt mal so fast ganz von vorne weil das wohl nicht zum ziel führt.
Ich bin jetzt dabei die Rechnung zu ändern, weil diese einfach viel zu komplex ist und auch viel Zeit dauert wie mir ja schon mitgeteil wurde.
In der Tabelle Orte stehen PLZ Laenge und Breitenangabe.
Breite und Länge sind in Grad angegeben.
Um in der Datenbank nicht so viel zu Rechnen habe ich die oben stehende Formel übernommen.
SQRT(($laenge - o.laenge) * ($laenge - o.laenge) + ($breite - o.breite) * ($breite - o.breite)) <= ".$umkreis_grad."
Den angegebenene Umkreis muss ich also in Grad umrechnen.
Das funktioniert am Equator so
$umkreis_grad = 360 / 40008 * $umkreis;
Da ich aber weiter Nördlich Wohne stimmt der Wert 400008 nicht mehr, da der Umkreis sich der Erde ja kleiner wird.
Als anhaltspunkt wo sich denn der jenige befindet, der den Umkreis angegeben hat, habe ich seine PLZ damit kann ich ganz ein mir die Breiten und Längengrade aus der Tabelle Orte holen.
Aber ich kenne jetzt diese Formel einfach nicht.
Um das ganze noch zu vervollständigen Poste ich euch noch mal mein Datenbankdesign.
Ach und nein ich möchte nicht den Wirkungsgrad von Bomben berechnen XD. Wobei die Bezeichnung schon heftig währe. ( Events )
Das ist die Tabele Orte
CREATE TABLE orte
(
ort\_id
int(11) NOT NULL,
staat
varchar(2) collate latin1_general_ci NOT NULL,
bundesland
varchar(2) collate latin1_general_ci NOT NULL,
regierungsbezirk
varchar(50) collate latin1_general_ci NOT NULL,
landkreis
varchar(50) collate latin1_general_ci NOT NULL,
verwaltungszusammenschluss
varchar(100) collate latin1_general_ci NOT NULL,
ort
varchar(100) collate latin1_general_ci NOT NULL,
laenge
double NOT NULL,
breite
double NOT NULL,
plz
smallint(5) NOT NULL,
PRIMARY KEY (ort\_id
)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci;
Und das die Tabelle event
CREATE TABLE event
(
event\_id
int(11) NOT NULL auto_increment,
kat\_id
int(11) NOT NULL,
user\_id
int(11) NOT NULL,
erstellt
date NOT NULL,
titel
varchar(200) collate latin1_general_ci NOT NULL,
location
varchar(200) collate latin1_general_ci NOT NULL,
strasse
varchar(200) collate latin1_general_ci NOT NULL,
hausnummer
varchar(10) collate latin1_general_ci NOT NULL,
plz
varchar(5) collate latin1_general_ci NOT NULL,
ort
varchar(200) collate latin1_general_ci NOT NULL,
hotline
varchar(200) collate latin1_general_ci NOT NULL,
hotmail
varchar(250) collate latin1_general_ci NOT NULL,
thotline
varchar(200) collate latin1_general_ci NOT NULL,
thotmail
varchar(250) collate latin1_general_ci NOT NULL,
fsa\_datum
date NOT NULL,
ugb\_datum
date NOT NULL,
fsu\_zeit
varchar(20) collate latin1_general_ci NOT NULL,
ugb\_zeit
varchar(20) collate latin1_general_ci NOT NULL,
beschreibung
text collate latin1_general_ci NOT NULL,
freigabe
varchar(200) collate latin1_general_ci NOT NULL,
einlasskreterien
text collate latin1_general_ci NOT NULL,
abendkasse
varchar(100) collate latin1_general_ci NOT NULL,
ticketvorverkauf
varchar(100) collate latin1_general_ci NOT NULL,
gespert
int(1) NOT NULL,
spergrund
text collate latin1_general_ci NOT NULL,
PRIMARY KEY (event\_id
)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=8181 ;
So und jetzt nochmal zur Zielbeschreibung.
Die Tabelle Event kann groß werden. Es muss Problemlos funktionieren mit ein Paar 100.000 Datensätzen.
Dabei kann die suche eingeschränkt werden.
Und zwar nur nach denen die nicht gespert sind also gespert = fals / 0
Und es müssen nur die Berechnet werde die in der Zukunft oder am gleichen Tag statt finden. Eine Ausgabe von Events des lätzten jahres brauche ich nicht. Zumindest nicht an dieser Stelle.
Wenn jemand den Inhalt der Tabelle orte haben möchte einfach nur sagen.
Struppi.