php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > HTML, JavaScript, AJAX, jQuery, CSS, Bootstrap, LESS
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


HTML, JavaScript, AJAX, jQuery, CSS, Bootstrap, LESS Probleme mit HTML5, Bootstrap oder jQuery ?

Antwort
 
LinkBack Themen-Optionen Bewertung: Bewertung: 1 Stimmen, 5,00 durchschnittlich.
  #1 (permalink)  
Alt 11-03-2009, 16:07
Peacie
 Registrierter Benutzer
Links : Onlinestatus : Peacie ist offline
Registriert seit: Nov 2003
Beiträge: 341
Peacie ist zur Zeit noch ein unbeschriebenes Blatt
Peacie eine Nachricht über ICQ schicken Peacie eine Nachricht über AIM schicken Peacie eine Nachricht über Yahoo! schicken
Standard Objekt zugriff

ou weia, ich mal wieder.

hatte ich mal erwähnt, das ich Javascript eigentlich nicht mag

folgendes Problem.
in einem Objekt, welches ich abarbeiten muss gibt es folgende Situation:
Code:
level1.level2.level3.level4
(in meinem objekt sind leider noch tiefere verschachtelungen möglich)
wobei manche Ebenen nicht immer vorhanden sind.
Wie bekomme ich nun raus, ob eine ebene existiert, dessen "vorebene" auch schon nicht da ist.
ich kann zwar mit
Code:
if (level1.level2.level3.level4){.. tuwas..}
prüfen ob level 4 da ist, aber das geht nicht, wenn level 3 auch schon nicht vorhanden ist.

im moment mach ich halt für die werte die ich brauche verschachtelte abfragen:

Code:
if (level1.level2.level3)
{
       if (level1.level2.level3.level4)
           { .. tu was .. }
}
da manche ebenen aber übelst lang sind und ich ein paar von den tiefsten ebenen brauche verschachtele ich mir ja nen wolf

muss ich immer diese verschachteten ifs bauen oder gibt es eine einfachere lösung ?
EDIT:

Beispiel eines ifs....


Code:
if(place.AddressDetails.
Country.AdministrativeArea.
SubAdministrativeArea.Locality.DependentLocality)
	{
	if(place.AddressDetails.
Country.AdministrativeArea.
SubAdministrativeArea.Locality.
DependentLocality.DependentLocalityName)
	{
	alert ("da");
	}
	}
__________________
Mibau Datendesign - Online Ferienwelt

Geändert von Peacie (11-03-2009 um 16:10 Uhr)
Mit Zitat antworten
  #2 (permalink)  
Alt 11-03-2009, 16:37
Griecherus
 PHP Senior
Links : Onlinestatus : Griecherus ist offline
Registriert seit: May 2005
Ort: Berlin
Beiträge: 1.036
Griecherus ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Das Stichwort lautet: Rekursion.

Hier ist übrigens noch ein imho recht guter Artikel dazu, allerdings in PHP: Recursion In PHP

P.S. Um Rekursion zu verstehen, muss man Rekursion verstehen

Grüße

Geändert von Griecherus (11-03-2009 um 16:41 Uhr)
Mit Zitat antworten
  #3 (permalink)  
Alt 11-03-2009, 16:58
Peacie
 Registrierter Benutzer
Links : Onlinestatus : Peacie ist offline
Registriert seit: Nov 2003
Beiträge: 341
Peacie ist zur Zeit noch ein unbeschriebenes Blatt
Peacie eine Nachricht über ICQ schicken Peacie eine Nachricht über AIM schicken Peacie eine Nachricht über Yahoo! schicken
Standard

ahjo, Rekursion ist mir ein Begriff. Ich archiviere mit einer PHP Rekursion unseren Server (also die kundenordner, so ca 5000)
aber wenn da das böse wort Javascript nicht wäre

ich ha nichtmal ansatzweise einen schimmer wie ich rekursiv auf das objekt zugreiffen soll.

aber ich versuch mal ein wenig herum
__________________
Mibau Datendesign - Online Ferienwelt
Mit Zitat antworten
  #4 (permalink)  
Alt 11-03-2009, 17:13
pekka
 PHP Master
Links : Onlinestatus : pekka ist offline
Registriert seit: Jun 2001
Ort: Köln
Beiträge: 6.608
pekka befindet sich auf einem aufstrebenden Ast
Standard

Typeof ist dein Freund:

if (typeof ebene1 != "undefined")
if (typeof ebene1.ebene2 != "undefined")
...

Es geht aber m.W. nicht ohne das Prüfen jeder einzelnen Ebene.
Dafür müßtest Du dir eine eigene Funktion bauen.
Mit Zitat antworten
  #5 (permalink)  
Alt 11-03-2009, 17:30
Peacie
 Registrierter Benutzer
Links : Onlinestatus : Peacie ist offline
Registriert seit: Nov 2003
Beiträge: 341
Peacie ist zur Zeit noch ein unbeschriebenes Blatt
Peacie eine Nachricht über ICQ schicken Peacie eine Nachricht über AIM schicken Peacie eine Nachricht über Yahoo! schicken
Standard

danke ich hatte sowas befürchtet :/

ich hatte schon kurz an toSource() gedacht und dann parsen, wobei das im IE nicht korrekt funktioniert.

ich meld mich wenn ich a) ne lösung gefunden hab oder b) zu alt geworden bin für den kram
__________________
Mibau Datendesign - Online Ferienwelt
Mit Zitat antworten
  #6 (permalink)  
Alt 11-03-2009, 17:32
pekka
 PHP Master
Links : Onlinestatus : pekka ist offline
Registriert seit: Jun 2001
Ort: Köln
Beiträge: 6.608
pekka befindet sich auf einem aufstrebenden Ast
Standard

Schau auch mal bei den großen Frameworks, Prototype und JQuery usw.. Vielleicht haben die sowas in der Richtung, oder zumindest Hilfsfunktionen.
Mit Zitat antworten
  #7 (permalink)  
Alt 11-03-2009, 19:35
wahsaga
  Moderator
Links : Onlinestatus : wahsaga ist offline
Registriert seit: Sep 2001
Beiträge: 25.236
wahsaga befindet sich auf einem aufstrebenden Ast
Standard

Du kannst dir, wenn du das rekursiv prüfen willst, ein Array anlegen, in dem die Bezeichner, die du auf den jeweiligen Ebenen abfragen willst, abgelegt sind.

Und dann machst du dir zu Nutze, dass man auf objekt.blubb auch über objekt["Blubb"] bzw. objekt[stringVariableDieDenWertBlubbEnthält] zugreifen kann.

So kannst du mit dem objekt starten, und prüfen ob es als Untereigenschaft das besitzt, was als erstes in deinem Array steht. Wenn ja, dann speicherst du dir die Referenz darauf - und machst damit dann wiederum mit der nächsten Ebene weiter.

Code:
var EbenenBezeichner = ["Ebene1", "Ebene2, "Ebene3"];
var objektReferenz = deinStartObjekt;
while(objektReferenz[aktuellesArrayelement] existiert) {
  objektReferenz = objektReferenz[aktuellesArrayelement];
  aktuellesArrayelement = naechstesArrayElement;
}
Innerhalb der Schleife musst du dann noch die Ebenen mitzählen, um am Ende sagen zu können, ob alle bis zur letzten existiert haben.
Oder du machst es gleich mit 'ner For-Schleife, denn die Anzahl zu prüfender Ebenen kennst du ja - und "break"st dann aus dieser einfach aus, wenn eine Ebene nicht vorhanden ist.

Wirkliche Rekursion mit verschachtelten Funktionsaufrufen braucht man dann gar nicht wirklich - die "Rekursion" findet quasi an der Stelle statt, wo man objektReferenz immer wieder mit der Referenz auf das Objekt auf der nächsten Unterebene überschreibt.
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
Mit Zitat antworten
  #8 (permalink)  
Alt 12-03-2009, 12:07
Peacie
 Registrierter Benutzer
Links : Onlinestatus : Peacie ist offline
Registriert seit: Nov 2003
Beiträge: 341
Peacie ist zur Zeit noch ein unbeschriebenes Blatt
Peacie eine Nachricht über ICQ schicken Peacie eine Nachricht über AIM schicken Peacie eine Nachricht über Yahoo! schicken
Standard

so, danke für die anregungen, ich bau es gleich mal ein und hoffe dann das fertige schnipsel präsentieren zu können
__________________
Mibau Datendesign - Online Ferienwelt
Mit Zitat antworten
  #9 (permalink)  
Alt 12-03-2009, 13:25
Peacie
 Registrierter Benutzer
Links : Onlinestatus : Peacie ist offline
Registriert seit: Nov 2003
Beiträge: 341
Peacie ist zur Zeit noch ein unbeschriebenes Blatt
Peacie eine Nachricht über ICQ schicken Peacie eine Nachricht über AIM schicken Peacie eine Nachricht über Yahoo! schicken
Standard

ok, das hab ich nun soweit, allerdings muss ich gleich noch ne RTFM frage stellen, die ich aber irgendwie nicht wirklich hinbekomm

Das Prinzip funktioniert gut, ich kann die Funktion mit verschiedenen Schemata füttern:

Code:
schema1 = 
	["AddressDetails",
	 "Country",
	 "AdministrativeArea",
	 "SubAdministrativeArea",
	 "Locality",
	 "DependentLocality",
	 "DependentLocalityName"];
	route = place; // place beinhaltet das original Objekt
	last_objekt=solve_objekt(schema1,0);
	
	function solve_objekt(schema,level)
	{
	if (typeof route[schema[level]] != "undefined")
		{	
			route=route[schema[level]]
			level++;
			solve_objekt(schema,level);
		}
	else 
		{	
		if (typeof route == "string")
		{return route;}
		else
		{return null;}
		}
	}
allerdings müsste ich mit dem Scriptablauf warten, bis die Funktion fertig ist. Und nun warscheinlich die RTFM Frage.
Wie kann ich das Sript anhalten, bis die Funktion durchgelaufen ist.

EDIT:

ich gehe grad noch auf die while variante ein. das teste ich grad noch

__________________
Mibau Datendesign - Online Ferienwelt

Geändert von Peacie (12-03-2009 um 13:31 Uhr)
Mit Zitat antworten
  #10 (permalink)  
Alt 12-03-2009, 14:25
Peacie
 Registrierter Benutzer
Links : Onlinestatus : Peacie ist offline
Registriert seit: Nov 2003
Beiträge: 341
Peacie ist zur Zeit noch ein unbeschriebenes Blatt
Peacie eine Nachricht über ICQ schicken Peacie eine Nachricht über AIM schicken Peacie eine Nachricht über Yahoo! schicken
Standard

ok, variante 2:
Code:
level=0;
schema1 = 
["AddressDetails",
"Country",
"AdministrativeArea",
"SubAdministrativeArea",
"Locality",
"DependentLocality",
"DependentLocalityName"];
route = place;
while (typeof route != "undefined") 
{	
	var route=route[schema1[level]];
	level++;
	if (typeof route == "string") {break;};
}
if (typeof route == "string")
{
alert (route); // weiterverarbeitung
}
diese variante hätte letztendlich den längeren code, da ich für jedes schema ne neue while machen müsste, alerdings hab ich nix mehr mit timeout am hut

danke für die denkanstösse, hab durchs testen einiges dazugelernt

EDIT:

Code:
while (route)
{
..
}
würde in dem fall sogar reichen

__________________
Mibau Datendesign - Online Ferienwelt

Geändert von Peacie (12-03-2009 um 14:33 Uhr)
Mit Zitat antworten
  #11 (permalink)  
Alt 12-03-2009, 14:50
Peacie
 Registrierter Benutzer
Links : Onlinestatus : Peacie ist offline
Registriert seit: Nov 2003
Beiträge: 341
Peacie ist zur Zeit noch ein unbeschriebenes Blatt
Peacie eine Nachricht über ICQ schicken Peacie eine Nachricht über AIM schicken Peacie eine Nachricht über Yahoo! schicken
Standard

sodale, hab mich nach bischen rumtesten für variante 2 entschieden.

OffTopic:

wenn mal jemand auf die wahnwitzige idee kommen sollte, ein revers geocodiertes objekt von google maps aufzudröseln, kann ich ihm da nun ne ecke weiterhelfen

__________________
Mibau Datendesign - Online Ferienwelt
Mit Zitat antworten
  #12 (permalink)  
Alt 13-03-2009, 01:11
Peacie
 Registrierter Benutzer
Links : Onlinestatus : Peacie ist offline
Registriert seit: Nov 2003
Beiträge: 341
Peacie ist zur Zeit noch ein unbeschriebenes Blatt
Peacie eine Nachricht über ICQ schicken Peacie eine Nachricht über AIM schicken Peacie eine Nachricht über Yahoo! schicken
Standard

nochmal ich mit ein wenig beispielkrams

wer lust hat schaut es sich mal an, es ist abenteuerlich, in welcher form die daten zurückgeliefert werden :/

http://www.mibau-datendesign.de/cont...ing/index.html

in diesem beispiel sind 3 objekte geokodiert, aller 3 haben eine "AddressLine" und alle an einer anderen stelle.

ich empfehle hier Firefox zu nutzen, da werden auch die rohdaten des objekts angezeigt
__________________
Mibau Datendesign - Online Ferienwelt

Geändert von Peacie (13-03-2009 um 01:16 Uhr)
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

ADSMAN V3 - Werbe-Manager ansehen ADSMAN V3 - Werbe-Manager

ADSMAN V3 - mehr als nur ein Bannermanager! Banner, Textanzeigen und PagePeel Manager! Mit ADSMAN PRO haben Sie die Marketinglösung für eine effektive und effiziente Werbeschaltung mit messbaren Ergebnissen. Unterstützt werden Bannerformate in beliebi

25.10.2018 virtualsystem | Kategorie: PHP/ Bannerverwaltung
PHP News und Artikel Script V2

News schreiben, verwalten, veröffentlichen. Dies ist jetzt mit dem neuen PHP News & Artikel System von virtualsystem.de noch einfacher. Die integrierte Multi-User-Funktion und der WYSIWYG-Editor (MS-Office ähnliche Bedienung) ermöglichen...

25.10.2018 virtualsystem | Kategorie: PHP/ News
Top-Side Guestbook

Gästebuch auf Textbasis (kein MySQL nötig) mit Smilies, Ip Sperre (Zeit selbst einstellbar), Spamschutz, Captcha (Code-Eingabe), BB-Code, Hitcounter, Löschfunktion, Editierfunktion, Kommentarfunktion, Kürzung langer Wörter, Seiten- bzw. Blätterfunktion, V

22.10.2018 webmaster10 | Kategorie: PHP/ Gaestebuch
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 14:57 Uhr.