amiga-news ENGLISH VERSION
.
Links| Forum| Kommentare| News melden
.
Chat| Umfragen| Newsticker| Archiv
.

amiga-news.de Forum > Suche [ - Suche - Neue Beiträge - Registrieren - Login - ]

1 -2- 3 4 5 6 7 Letzte Ergebnisse der Suche: 307 Treffer (30 pro Seite)
bruZard   Nutzer

05.12.2011, 21:41 Uhr

[ - Direktlink - ]
Thema: AOS3/AROS Monkey Target
Brett: Amiga, AmigaOS 4

Liebes Tagebuch ....

Timing Probleme bewirken gerade dass die ClsColor für alle Pens gesetzt wird. Aber das ist zu lösen. Wichtig ist dass das Framework nun die überladenen Methoden verwendet um wahlweise auf ein selbst erstelltes Fenster oder auf das Standard "Mojo Style" Fenster zu wirken. Monkey daran zu hindern in jedem Fall ein Fenster zu erstellen indem dies per Konstruktor bekannt gemacht hat leider nicht funktioniert, den Konstruktor einer Monkey Klasse die extern geladen wird kann man leider nicht überladen. Ich habe das nun so gelöst dass es im Verzeichnis /modules/amigaos3/ eine Datei namens "config.monkey" gibt mit der das Standard-Verhalten bei einem Build beeinflusst werden kann.
Wenn sich das AmigaTarget nicht wie Mojo verhalten soll muss in der OnCreate Methode "SetGraphicsMode(AMIGA_MODE)" aufgerufen werden. Wird dies getan erstellt das Framework kein eigenes Fenster und somit auch keinen globalen Kontext für nachfolgende Operationen. In diesem Fall sind die Funktionen zu verwenden bei denen man den Paramter win:Window oder scr:Screen angeben muss.
Im einfachsten Fall verwendet man das OOP Interface und wendet die Methoden direkt an:
code:
Local myWin:Window = new Window;
myWin.create("Hello World, 0, 0, 600, 300)
myWin.cls()

Ein normaler Monkey Code wird nun anstandslos kompiliert, läuft logischerweise aber noch nicht da wichtige Funktionen wie "LoadImage", "DrawImage" etc. noch nicht implementiert sind.

Die Funktion "Plot()" heisst nun "DrawPoint()" da Monkey mit der Version 0.5 diesen Namen eingeführt hat. Es existiert aber immer noch die Version aus 0.45 damit wir mit der Demo kompatibel bleiben. So kann mit der Demo alter und aktueller Code übersetzt werden.

Ich baue gerade die Möglichkeit ein eigene TagLists für selbst erzeugte Fenster zu erstellen. Da man die Klasse Window erst erzeugen muss bevor man mittels "create()" tatsächlich ein Fenster erstellt, besteht die Möglichkeit vor dem "create()" die TagList zu ändern. Man kann natürlich auch alles in einem Rutsch haben:
code:
Local myWindow:Window = new Window().create("My Window", 0, 0, 600, 300)


Zum Abschluss noch der Code der dem "Mal-Beispiel" vom letzten Mal entspricht, aber diesmal dem Mojo-Style folgt:
code:
Import amigaos3

Class myApp extends App
	Field mx:Int
	Field my:int
		
	Method OnCreate()
		'SetColor(255, 0, 0)
		'ClsColor(90, 120, 200)
	End
	
	Method OnUpdate()
		mx = MouseX()
		my = MouseY()
	End
	
	Method OnRender()
		'Cls()
		if MouseDown() DrawPoint(mx, my)
	End
End

Function Main()
	New myApp
End

--
PanzerZ |
methusalem | basic
 
bruZard   Nutzer

04.12.2011, 21:25 Uhr

[ - Direktlink - ]
Thema: AOS3/AROS Monkey Target
Brett: Amiga, AmigaOS 4

Heute gibt es nichts zum downloaden, dafür aber ein Status-Update.

Das Target besitzt nun die Klasse "App". Diese Klasse ist der erste Schritt um dem AmigaTarget beizubringen jeden verfügbaren Monkey Code zu kompilieren. Um das zu erklären muss ich etwas ausholen:

Um mit Monkey ein Spiel schreiben zu können benötigt man das Modul "Mojo". Dieses importiert man einfach via "Import mojo". Nun werden zwei Dinge erwartet:

1. Es muss die Funktion "Main()" existieren. Sie ist der Einsprungpunkt für jedes Monkey-Programm.

2. Es muss eine Klasse existieren die von "App" abgeleitet ist und mindestens folgende Methoden definiert:

- OnCreate()
- OnUpdate()
- OnRender()

In der Funktion "Main()" erzeugt man nun eine neue Instanz dieser Klasse. Es wird dann automatisch die Methode "OnCreate()" aufgerufen. Ist diese Methode abgearbeitet springt Monkey abwechselnd in die Methoden "OnUpdate()" und "OnRender()" und führt den darin enthaltenen Code aus ... für immer.

Für immer?!? Ja, da Monkey für eine Reihe von Zielen kompiliert musste man sich auf den kleinsten gemeinsamen Nenner einigen und das sind Systeme auf denen eine App sich nicht selbst beenden muss, sondern vom System beendet wird: iOS, Android, WindowsPhone, XBox, Flash, HTML5. Das Einzige Ziel für das Mojo eine Abbruchbedingung vorsieht ist GLFW, dort wird die App beendet wenn das Fenster geschlossen wird.

Für das AmigaTarget habe ich die Methode "ExitApp()" implementiert damit der geneigte Programmierer selbst entscheiden kann wann sein Programm beendet wird. Es wird dann der Destructor aufgerufen der alle Libraries schliesst und den Speicher aufräumt.

Ein weiteres Merkmal von Mojo ist dass es dem Programmierer in Monkey nicht gestattet eine Bildschirmauflösung/Farbtiefe zu definieren, dies geschieht über die Templates die jedem Ziel zugeordnet sind. In Android ist es bspw. die "MonkeyApp.xml", unter GLFW muss die "config.h" geändert werden etc.
Damit das Amiga-Target dieses Verhalten nachahmt ruft das Modul automatisch die entsprechende Methode auf und erstellt ein Fenster auf der Workbench in der Grösse 600x400. Das ist notwendig damit die existierenden Monkey-Spiele auch auf dem Amiga kompiliert werden können.
Um zu unterbinden dass das geschieht ruft man den Konstruktor seiner App Klasse mit dem Wert "NOGRAPHICS" auf.
Will man irgendeinen Source kompilieren hat man natürlich das Problem dass der Author nicht wusste dass sein Spiel mal für Amiga kompiliert wird. Das heisst dass es sich nicht beenden lässt. Für diesen Fall habe ich IDCMP_CLOSEWINDOW an ExitApp() gehangen wenn "App" nicht mit "NOGRAPHICS" initialisiert wurde.

Einfach so kompilieren ist aber nicht. Das Problem ist dass ich kein weiteres "Mojo Target" programmieren darf. Ich müsste Mojo in weiten Teilen anpassen und diese Anpassungen mit dem Target mitliefern, das ist aber nicht gestattet. Wer also einen bestehenden Source für Amiga kompilieren will muss diesen leicht ändern. Man schaut einfach in den Kopf des entsprechenden Source und sucht die Zeile "import mojo". Diese ändert man dann in "#if TARGET = "aos3" ; Import amigaos3 ; #else ; Import mojo #endif". Danach kann man den Code dann einfach kompilieren.

Folgendes Bild zeigt ein einfaches Konsolenprogramm welches von 0 - 10 zählt. Links sieht man in welcher Methode die Ausgabe gemacht wurde. Die Steuerung der Methodenaufrufe ist durch das Modul "amigaos3" übernommen.

Bild: http://www.sedm.de/monkey/AmigaTarget_Callbacks.jpg

Hier der Source der die Ausgabe aus obigem Bild erzeugt:
code:
Import amigaos3

Class myApp extends App
	Field time:Int = 0
	
	Method OnCreate()
		Print "OnCreate : Los gehts... wir zählen von 0 - 10 und beenden dann das Programm"
	End
	
	Method OnUpdate()
		Print "OnUpdate : time += 1"
		time+= 1
		
		if time > 10
			Print "OnUpdate : time > 10 ... Ende!"
			ExitApp()
		EndIf
	End
	
	Method OnRender()
		Print "OnRender : time = " + time
	End
End

Function Main()
	New myApp
End


Jetzt müssen alle Funktionen aus Mojo portiert werden. Viele davon werden einfach nichts tun weil sie mit dem Amiga NDK nicht zu realisieren sind, aber es werden genug Funktionen implementiert damit alle Monkey Spiele funktionieren.


P.S.: AROSx64 werde ich mir nochmal zur Brust nehmen.
--
PanzerZ |
methusalem | basic
 
bruZard   Nutzer

02.12.2011, 22:00 Uhr

[ - Direktlink - ]
Thema: AOS3/AROS Monkey Target
Brett: Amiga, AmigaOS 4

Version 0.21 ist unter http://www.sedm.de/monkey/AmigaTarget.zip verfügbar.

Geändert hat sich dass ich ein paar Methoden überladen habe. Bislang hat SetColor() noch RGB Werte als Parameter genommen, man kann jetzt auch direkt die Stift Nummer übergeben. Neu hinzugekommen ist die Funktion "ClsColor()", auch diese ist überladen und kann sowohl Werte für Rot, Grün und Blau annehmen als auch eine Stift Nummer.

Der Fehler beim Build für Aros64 ist behoben, so dass jetzt auch AROS 64Bit User Monkey AmigaTarget verwenden können.

Der Versuch Mojo zu implementieren ist bisher fulminant fehlgeschlagen da AOS selbst bei einfachsten Klassen Operationen ohne lesbare Debug-Info ins Nirvana geht. Bin dort aber noch am Ball.

Ein ausführbares AOS3.x Executable für 0.21 liegt dem Archiv bei. Es ändert die Hintergrundfarbe auf ein freundliches Blau und malt mit gedrückter linker Maustaste nette rote Punkte in das erzeugte Fenster.

Das Example kann problemlos für AROS (egal ob i386, x86 oder x64) übersetzt werden.

Die Update Zyklen werden jetzt etwas länger weil ich ums Verrecken mein Mojo Derivat ans Laufen bekommen will. Endziel ist das Übersetzen aller verfügbaren Monkey Codes für AOS/Aros
--
PanzerZ |
methusalem | basic
 
bruZard   Nutzer

01.12.2011, 21:44 Uhr

[ - Direktlink - ]
Thema: AOS3/AROS Monkey Target
Brett: Amiga, AmigaOS 4

als ich anfing wollte ich eigentlich nur AmigaOS3.x unterstützen, dass AROS dazu kam war Zufall, darum heissen die ganzen Sachen "amigaos3", "aos3" etc.

Für Aros:

Im Monkey-Ordner /bin/ gibt es eine Datei namens winnt.config.txt. Trage dort einfach AROS=1 ein und es werden Binaries für Aros386, ArosPPC und Aros64 erzeugt.

1. Installe AmiDevCpp von http://amidevcpp.amiga-world.de/

2. Ergänze die Windows PATH Variable um den Pfad von [AmiDevCpp]/usr/local/amiga/bin Wie das geht kann man die Jungs von Google fragen. Ein Treffer wäre dieser: http://software4u.de/FAQDetail.aspx?lng=de&id=91

3. Ziehe Dir die Demo (eigentlich keine Demo sondern die Public Domain Version) von Monkey von http://www.monkeycoder.co.nz/file/get.php?file=/Products/demos/MonkeyDemo45c.zip.

4. Entpacke AmigaTarget.zip über das Monkey Verzeichnis

5. ändere die Datei bin/winnt.config.txt wie oben angegeben und starte Monk.

6. Lade das Example "amiga.monkey" aus /bananas/Amiga/ und starte ein Build (Rakete die nach oben zeigt).

7. Kopiere das Build Deiner Wahl (appAros386, appArosPPC, appAros64) aus dem Ordner /bananas/Amiga/amiga.build/aos3/ in Deine Aros Installation und starte es.

8. Freuen


--
PanzerZ |
methusalem | basic
 
bruZard   Nutzer

01.12.2011, 20:39 Uhr

[ - Direktlink - ]
Thema: AOS3/AROS Monkey Target
Brett: Amiga, AmigaOS 4

Neues Update
Bild: http://www.sedm.de/monkey/AmigaTarget_Draw.jpg
Der Monkey Code zum Bild:
code:
Strict

Import amigaos3

Function Main:Int()	
	Local win:Window = CreateWindow("Hallo Amiga", 100, 100, 600, 400)
	Local mx:Int		= 0
	Local my:Int		= 0
		
	Cls(win)
	SetColor(win, 255, 0, 0)
	
	Repeat
		WaitEvent(win)
		mx = MouseX(win)
		my = MouseY(win)
		
		If EventClass(win) = CLOSEWINDOW Then Exit
		If MouseDown(win) then Plot(win, mx, my)
	Forever
	
	CloseWindow(win)
	
	Return 0
End

Changelog:
code:
12/01/2011 v0.2
added	: Window.eventClass:Int()
added	: Window.eventCode:Int()
added	: Window.setColor:Void(r:Int, g:Int, b:Int)
added	: Window.getBestPen:Int(r:Int, g:Int, b:Int)
added	: Window.setAPen:Void(pen:Int)
added	: Window.cls:Void()
added	: Window.plot:Void(x:Int, y:Int)
added	: Window.mouseX:Int()
added	: Window.mouseY:Int()
added	: Window.mouseDown:Int()
added	: Window.mouseUp:Int()
added	: EventClass:Int(win:Window)
added	: EventCode:Int(win:Window)
added	: SetColor:Void(win:Window, r:Int, g:Int, b:Int)
added	: GetBestPen:Int(win:Window, r:Int, g:Int, b:Int)
added	: SetAPen:Void(win:Window, pen:Int)
added	: Cls:Void(win:Window)
added	: Plot(win:Window, x:Int, y:Int)
added	: MouseX:Int(win:Window)
added	: MouseY:Int(win:Window)
added	: MouseDown:Int(win:Window)
added	: MouseUp:Int(win:Window)
changed	: renamed Window.IntuiMessage:Int() to Window.WaitEvent:Int()
changed	: renamed GetIntuiMessage:Int() to WaitEvent:Int()
fixed	: windowtitle was not set


Download: http://www.sedm.de/monkey/AmigaTarget.zip
das AOS3 Executable liegt unter /bananas/Amiga/amiga.build/aos3/appAOS3

Viel Spass beim malen :)
--
PanzerZ |
methusalem | basic
 
bruZard   Nutzer

26.05.2011, 14:50 Uhr

[ - Direktlink - ]
Thema: HTML? Parameter übergeben
Brett: Programmierung

Das geht mit HTML gar nicht denn HTML ist keine Programmiersprache. Du solltest vielleicht eine klassischere Methode wählen. PHP zum Beispiel.

--
PanzerZ |
methusalem | basic
 
bruZard   Nutzer

04.02.2011, 19:24 Uhr

[ - Direktlink - ]
Thema: jQuery ajax POST problem
Brett: Programmierung

Ja, einfach HTML einhängen. Du musst aber auch mitzählen wieviele Eingabefelder Du hast und neue Namen dafür erzeugen.
--
PanzerZ |
methusalem | basic
 
bruZard   Nutzer

04.02.2011, 19:07 Uhr

[ - Direktlink - ]
Thema: jQuery ajax POST problem
Brett: Programmierung

In meinem Framework "jBB" habe ich Listen implementiert. Du könntest dies verwenden um bei einem Klick auf "Add Nick" ein weiteres Eingabefeld zu erzeugen und das letzte der Liste hinzuzufügen (ListAddLast). Wenn das Form submittet wird kannst Du Dein Query zusammen basteln indem Du die Liste iterierst (ListNextItem).

jBB findest Du unter http://www.sedm.de/jmax
--
PanzerZ |
methusalem | basic
 
bruZard   Nutzer

04.02.2011, 18:23 Uhr

[ - Direktlink - ]
Thema: jQuery ajax POST problem
Brett: Programmierung

jQuery besitzt die Methode "serialize", mit dieser kannst Du alle Felder eines Forms in einem Rutsch codieren ("nick01=bernd&nick02=horst ...") und per Ajax an ein PHP Script schicken. Das PHP Script baut dann das Formular neu auf mit einem Nickname mehr als ihm geschickt wurde und schickt es an JS zurück. Mit $('#myFormDivID').html(resultFromPHP); zeigst Du das veränderte Form wieder an.

Es gibt noch wesentlich performantere Methoden, aber damit könnte ich ein Seminar füllen.
--
PanzerZ |
methusalem | basic
 
bruZard   Nutzer

02.02.2011, 17:44 Uhr

[ - Direktlink - ]
Thema: jQuery ajax POST problem
Brett: Programmierung

"method:" ist falsch, dort muss "type:" stehen.
--
PanzerZ |
methusalem | basic
 
bruZard   Nutzer

25.01.2011, 16:43 Uhr

[ - Direktlink - ]
Thema: Javascript+PHP+MySQL: Personen auswählen
Brett: Programmierung

Logisch, mein Fehler.
--
PanzerZ |
methusalem | basic
 
bruZard   Nutzer

25.01.2011, 16:37 Uhr

[ - Direktlink - ]
Thema: Javascript+PHP+MySQL: Personen auswählen
Brett: Programmierung

Warum das JSON Objekt unbedingt das Query beinhalten muss kann ich dir nicht sagen. Prinzipiell funktioniert das Ganze aber so: In PHP kommt per GET folgendes an:
code:
$query = $_GET["query"];

Nun kannst Du in Deiner Datenbank nach "Suggestions" suchen ...
code:
$result = MYSQL_QUERY("SELECT * FROM myTable WHERE name LIKE '$query%' ORDER BY name ASC");

...und mit der Rückgabe Dein JSON Objekt zusammenbasteln...
code:
while($row = MYSQL_FETCH_OBJECT($result))
{
  $sug.= "'".$row->name."',";
}
$sug = substr($sug, strlen($sug) - 2); // letztes Komma und Hochkomma abschneiden
echo "{ query : '$query', suggestions : [ $sug ] }";

Dieser Code ist nicht getestet!
--
PanzerZ |
methusalem | basic

[ Dieser Beitrag wurde von bruZard am 25.01.2011 um 16:37 Uhr geändert. ]
 
bruZard   Nutzer

25.01.2011, 15:40 Uhr

[ - Direktlink - ]
Thema: Javascript+PHP+MySQL: Personen auswählen
Brett: Programmierung

Bei mir funktioniert es.
HTML:
code:
<input type="text" name="search" id="searchText">


JS:
code:
$(window).ready(function(){
			$('#searchText').autocomplete({
				serviceUrl : "ac.php"
			});
		});


PHP:
code:
<?php
	echo "{ query : 'Kl', suggestions : ['Klaus', 'Klasse', 'Kloß'] }";
?>

--
PanzerZ |
methusalem | basic
 
bruZard   Nutzer

24.01.2011, 21:22 Uhr

[ - Direktlink - ]
Thema: Javascript+PHP+MySQL: Personen auswählen
Brett: Programmierung

Das zu checken schaffe ich heute nicht mehr. Ich poste hier morgen die Lösung.
--
PanzerZ |
methusalem | basic
 
bruZard   Nutzer

24.01.2011, 21:12 Uhr

[ - Direktlink - ]
Thema: Javascript+PHP+MySQL: Personen auswählen
Brett: Programmierung

Steht in der Doku: "Autocomplete must be initialized after DOM has finished loading."

Das heißt Du musst Deinen Code so erweitern dass der Kram erst verfügbar ist wenn das DOM fertig geladen wurde:

code:
$(document).ready(function(){
  /*
    Hier kommt Dein Code rein, er wird erst ausgeführt 
    wenn wirklich das gesamte Dokument beim User im 
    Browser angekommen ist
  */
});

--
PanzerZ |
methusalem | basic
 
bruZard   Nutzer

24.01.2011, 20:27 Uhr

[ - Direktlink - ]
Thema: Javascript+PHP+MySQL: Personen auswählen
Brett: Programmierung

Ich finde keine Dokumentation zu diesem Plugin, somit ist es recht schwer hilfreich zu sein.
--
PanzerZ |
methusalem | basic
 
bruZard   Nutzer

24.01.2011, 20:16 Uhr

[ - Direktlink - ]
Thema: Javascript+PHP+MySQL: Personen auswählen
Brett: Programmierung

Einfach nach jQuery einbinden. Es fügt sich nahtlos ein.
--
PanzerZ |
methusalem | basic
 
bruZard   Nutzer

24.01.2011, 19:49 Uhr

[ - Direktlink - ]
Thema: Javascript+PHP+MySQL: Personen auswählen
Brett: Programmierung

jQuery macht Folgendes: Es erweitert alle HTML Objekte um Eigenschaften und Methoden. Beispielsweise kannst Du nur mit JavaScript nicht einfach "window.width;" schreiben um die Fensterbreite zu ermitteln. Die Eigenschaft "width" wird erst durch jQuery dem Objekt "window" hinzugefügt. Das Objekt "$" ist sozusagen das "MasterObject", es beinhaltet Methoden um Browser-übergreifend auf die Elemente des DOM zuzugreifen und diesen zu manipulieren. ein "$('#meinDiv');" definiert durch die Art des Parameters dass Du gern das Objekt zu "meinDiv" haben möchtest das all die fantastischen Methoden hat die Dumit purem JavaScript erst alle selbst programmieren müsstest. Das MasterObject hat aber auch Methoden die nicht an ein Element des DOM gebunden sind, wie eben die Methode "ajax" die es crossplatform ermöglicht ein PHP Script aufzurufen, Daten zu übergeben und den Output des Scripts zurück zu bekommen. Alles was das PHP Script per "echo" ausgibt kommt als Rückgabewert zurück.

--
PanzerZ |
methusalem | basic
 
bruZard   Nutzer

24.01.2011, 19:23 Uhr

[ - Direktlink - ]
Thema: Javascript+PHP+MySQL: Personen auswählen
Brett: Programmierung

Das ist ein Selektor, das Original aus JavaScript wäre:
code:
var meinDiv = window.document.getElementByID("meinDiv"); etc.

In jQuery schreibt man halt einfach "var meinDiv = $('#meinDiv')" und erhält das Objecthandle auf ein Element mit der ID "meinDiv". an muss das Objekt aber nicht in eine Variable übertragen (var meinDiv =).
Man kann auch Klassen selektierten, dann muss man die Raute durch einen Punkt ersetzen. Hierbei ist aber zu beachten dass Klassen mehrfach in einem Dokument vorkommen können und man deshalb kein Objekt, sondern ein Objekt-Array zurück bekommt.

Ein Sonderfall ist Ajax. Hier selektiert man nichts mit dem $ sondern ruft die Methode "ajax()" aus dem Objekt "$" auf. Als Parameter übergibt man der Method ein JSON Objekt. Bspw: { url : 'meinScript.php', method : 'POST' }
Einen Ajax Request auf die klassische Art, also ohne Framework, zu basteln grenzt an Selbstverstümmelung ;)

Die Dokumentation von jQuery ist sehr gut und ausführlich, zudem gibt es fantanstillionen viele Tutorials dazu.

[ Dieser Beitrag wurde von bruZard am 24.01.2011 um 19:23 Uhr geändert. ]
 
bruZard   Nutzer

24.01.2011, 19:09 Uhr

[ - Direktlink - ]
Thema: Javascript+PHP+MySQL: Personen auswählen
Brett: Programmierung

Kann er auch nicht, habe ja keinen funktionierenden Code gepostet. Aber der hier geht:
code:
function openWin(width, height){
			var win = $('#window');
			
			$('#modalOverlay').fadeTo('slow', 0.7);
			
			if(width > 0 && height > 0){
				win.css({ 
					'width' : width + 'px', 
					'height' : height + 'px', 
					'left' : '50%', 
					'top' : '50%', 
					'margin-left' : '-' + (width / 2) + 'px', 
					'margin-top' : '-' + (height / 2) + 'px' 
				});
			}
			
			win.fadeIn();
		}

--
PanzerZ |
methusalem | basic
 
bruZard   Nutzer

24.01.2011, 18:34 Uhr

[ - Direktlink - ]
Thema: Javascript+PHP+MySQL: Personen auswählen
Brett: Programmierung

Nein, das geht leider nicht so einfach. Zwar hat jedes Element einer HTML Seite in jQuery die Eigenschaften .width, .height, .padding und .margin, aber es wäre ordentlich Aufwand alle Elemente auszulesen, ihre Position zu ermitteln, die Breiten und Abstände zu holen und daraus dann zuverlässige Daten zu generieren. Aus diesem Grund stellt man so ein Overlay i.d.R. auf "overflow : auto;" damit ggf. Scrollbalken erscheinen wenn der Inhalt zu groß wird.

Was man machen kann: Man rechnet sich die Größe pro Inhalt per Hand aus und übergibt Breite und Höhe an die Funktion winOpen(), diese müsste dann die Werte im CSS anpassen.

code:
$(#window).css("width", width);
$(#window).css("height", height);
$(#window).css("margin-left", "-" + width / 2);
$(#window).css("margin-top", "-" + height / 2);


[ Dieser Beitrag wurde von bruZard am 24.01.2011 um 18:37 Uhr geändert. ]
 
bruZard   Nutzer

24.01.2011, 18:20 Uhr

[ - Direktlink - ]
Thema: Javascript+PHP+MySQL: Personen auswählen
Brett: Programmierung

Da gibt es eine wesentlich einfachere Lösung: Man macht das Fenster modal und überlagert den Rest der Size mit einem Div. Ich habe obigen Code und das Ausprobierbeispiel angepasst damit Du mal schauen kannst wie das aussieht.

Wenn das Fenster aufgeht lässt sich dahinter nichts mehr anklicken.
--
PanzerZ |
methusalem | basic
 
bruZard   Nutzer

24.01.2011, 17:53 Uhr

[ - Direktlink - ]
Thema: Javascript+PHP+MySQL: Personen auswählen
Brett: Programmierung

Ein "Fenster" kannst Du so öffnen:
code:
<!DOCTYPE html>
<html>
<head>
	<title>Member-Search</title>
	
	<style type="text/css">
		body{
			background-color	: #ffffff;
			font				: 10pt normal Arial, Helvetica, sans-serif;
			text-align			: center;
			color				: #000000;
			margin				: 0;
			padding				: 0;
		}
		
		#searchButton{
			position			: fixed;
			width				: 400px;
			height				: 100px;
			border				: 4px solid #eeeeee;
			z-index				: 1;
		}
		
		#searchButton input{
			padding				: 20px;
			font-size			: 12pt;
			font-weight			: bold;
			margin-top			: 20px;
		}
		
		#window{
			position			: fixed;
			display				: none;
			width				: 800px;
			height				: 500px;
			left				: 50%;
			top					: 50%;
			margin-left			: -400px;
			margin-top			: -250px;
			border				: 1px solid #999999;
			box-shadow			: 0px 0px 10px #000000;
			-moz-box-shadow		: 0px 0px 10px #000000;
			background-color	: #ffffff;
			text-align			: left;
			z-index				: 10;
		}
		
		#window input{
			padding : 5px;
			margin	: 5px;
		}
		
		#modalOverlay
		{
			position			: fixed;
			display				: none;
			width				: 100%;
			height				: 100%;
			background-color	: #000000;
			z-index				: 5;
		}
	</style>
	
	<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js"></script>
	
	<script type="text/javascript">
		function openWin(){
			$('#modalOverlay').fadeTo('slow', 0.7);
			$('#window').fadeIn();
		}
		
		function closeWin(){
			$('#modalOverlay').fadeOut();
			$('#window').fadeOut();
		}
	</script>
</head>
<body>
<div id="modalOverlay"></div>

<div id="window">
	<input type="button" value="X" onClick="closeWin();">
	<p>
		<h1>Formular</h1>
		Hier kommt Dein Formular zur Member-Suche rein.
	</p>
</div>

<div id="searchButton">
	<input type="button" value="Add Member" onClick="openWin();">
</div>
</body>
</html>


Zum ausprobieren: http://www.sedm.de/pub/samples/ajax-search/

[EDIT]Für das Eyecandy habe ich noch CSS3 Box-Shadow und das sanfte ein- und ausfaden des Fensters eingebastelt[/EDIT]


[ Dieser Beitrag wurde von bruZard am 24.01.2011 um 18:19 Uhr geändert. ]
 
bruZard   Nutzer

24.01.2011, 17:11 Uhr

[ - Direktlink - ]
Thema: Javascript+PHP+MySQL: Personen auswählen
Brett: Programmierung

Du brauchst keine weitere Bibliothek. Wenn Du mehr als einen Wert zurückgeben willst kannst Du das mittels eines JSON Objektes tun, oder den String entsprechend zusammenbasteln.

Beispiel (PHP):
code:
$row = MYSQL_FETCH_OBJECT($result);
$id = $row->id;
$name = $row->name;
echo $id."|".$name;

Das könnte folgenden String an JavaScript zurückgeben: "123|Klaus". In JavaScript kannst Du diesen String wieder splitten und erhältst ein Array mit den Einzelteilen:

JS:
code:
success : function(result){
    var res = result.split("|");

    alert("ID: " + res[0] + " Name: " + res[1]);
}

Es geht ein Requester auf in dem steht: "ID: 123 Name: Klaus"

--
PanzerZ |
methusalem | basic
 
bruZard   Nutzer

24.01.2011, 16:56 Uhr

[ - Direktlink - ]
Thema: Javascript+PHP+MySQL: Personen auswählen
Brett: Programmierung

jQuery ist 26kb klein. Du kopierst es auf Deinen Server und bindest es einfach in den Header Deiner Seite ein:
code:
<script type="text/javascript" src="jquery-1.4.4.min.js"></script>

--
PanzerZ |
methusalem | basic
 
bruZard   Nutzer

24.01.2011, 16:46 Uhr

[ - Direktlink - ]
Thema: Javascript+PHP+MySQL: Personen auswählen
Brett: Programmierung

Den Inhalt eines Textelements kannst Du mit jQuery so manipulieren (das anstatt des Kommentars einfügen):

code:
// input:text > Eingabefelder vom Typ "input type='text'" auswählen
// [name=member] > dann nur das Feld auswählen welches "member" heißt
// .val(result) > den Inhalt des Textfeldes durch denInhalt der Variable "result" ersetzen.

$('input:text[name=member]').val(result);

--
PanzerZ |
methusalem | basic

[ Dieser Beitrag wurde von bruZard am 24.01.2011 um 16:47 Uhr geändert. ]
 
bruZard   Nutzer

24.01.2011, 16:32 Uhr

[ - Direktlink - ]
Thema: Javascript+PHP+MySQL: Personen auswählen
Brett: Programmierung

Am besten verwendest Du ein Framework wie jQuery, das vereinfacht einiges und nimmt Dir auch noch die Puzzelei mit der Browserkompatiblität ab. Mittels jQuery ist auch Ajax "easy peasy":
code:
function getNames(member){
    $.ajax({
        url : 'meinSchoenesPHPScript.php' ,
        method: 'POST',
        data: 'search=' + member ,
        success: function(result){ /* packe den Inhalt von result in das Textfield */ }
    });
}

Gehen wir davon aus dass Dein HTML so aussieht:
code:
<input type="text" name="member">

Packst Du obige Funktion in das onChange() Event:
code:
<input type="text" name="member" onChange="getNames(this.value);">

Bei jeder Änderung des Inhalts wird der Inhalt mittels der Funktion "getNames()" an das PHP Script geschickt welches im Ajax-Objekt bei "url:" angegeben ist (bedenke dass man nicht Domain-übergreifend "ajaxen" kann).
Willst Du mehr als nur ein Eingabe an das Script schicken musst Du Dir eine URL zusammenbauen. Beispiel: search=Klaus&var1=123&var2=456 [...]

Dein PHP Script holt sich nun die Daten aus dem POST Array (ganz genauso als hättest Du sie per "submit" verschickt, holt passende Einträge aus der Datenbank (bspw: "SELECT * FROM myMembers WHERE name LIKE 'Klaus%' ORDER BY name ASC").

Alles was Du mittels "echo" in PHP ausgibst wird zurück an die Funktion bei "success" geschickt, in diesem Beispiel in der Variable "result".

--
PanzerZ |
methusalem | basic
 
bruZard   Nutzer

22.12.2010, 18:13 Uhr

[ - Direktlink - ]
Thema: directx unter wine installieren?
Brett: Andere Systeme

Das neueste (11) geht nur eingeschränkt bis gar nicht. Ansonsten mache mal im Terminal
code:
sudo apt-get install winetricks

und danach
code:
winetricks

Das öffnet eine Liste mit ein paar Sachen die man nach installieren kann.
--
PanzerZ |
methusalem | basic
 
bruZard   Nutzer

26.09.2010, 16:29 Uhr

[ - Direktlink - ]
Thema: was ist {if elemt_x == "test" in html?
Brett: Programmierung

Das sind Conditional-Comments, diese versteht aber nur der IE. Das "$count" ist eine PHP Variable.
--
PanzerZ |
methusalem | basic
 
bruZard   Nutzer

19.08.2010, 09:43 Uhr

[ - Direktlink - ]
Thema: html: elementhöhe in prozent
Brett: Programmierung

Nein, ohne CSS geht das nicht. Wenn es CSS sein darf probiere mal folgendes:
HTML:
code:
<iframe src="content_main.php" id="myFrame" scrolling="auto" name="content"></iframe>


CSS:
code:
#myFrame{ width : 100%; height : 80%; border : none; }

--
PanzerZ |
methusalem | basic
 
 
1 -2- 3 4 5 6 7 Letzte Ergebnisse der Suche: 307 Treffer (30 pro Seite)

Suchbegriffe
Schlüsselwörter      Benutzername
Suchoptionen
Nur in diesen Foren suchen
   nur ganze Wörter
Nur Titel anzeigen
alle Treffer anzeigen

.
Impressum | Datenschutzerklärung | Netiquette | Werbung | Kontakt
Copyright © 1998-2024 by amiga-news.de - alle Rechte vorbehalten.
.