ENGLISH VERSION |
|
Links | | | Forum | | | Kommentare | | | News melden |
Chat | | | Umfragen | | | Newsticker | | | Archiv |
amiga-news.de Forum > Suche | [ - Suche - Neue Beiträge - Registrieren - Login - ] |
|
||||||
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: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.Local myWin:Window = new Window; myWin.create("Hello World, 0, 0, 600, 300) myWin.cls() 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:Changelog: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 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:Nun kannst Du in Deiner Datenbank nach "Suggestions" suchen ...$query = $_GET["query"]; code:...und mit der Rückgabe Dein JSON Objekt zusammenbasteln...$result = MYSQL_QUERY("SELECT * FROM myTable WHERE name LIKE '$query%' ORDER BY name ASC"); code:Dieser Code ist nicht getestet!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 ] }"; -- 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: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 =).var meinDiv = window.document.getElementByID("meinDiv"); etc. 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: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:$row = MYSQL_FETCH_OBJECT($result); $id = $row->id; $name = $row->name; echo $id."|".$name; JS: code:Es geht ein Requester auf in dem steht: "ID: 123 Name: Klaus"success : function(result){ var res = result.split("|"); alert("ID: " + res[0] + " Name: " + res[1]); } -- 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:Gehen wir davon aus dass Dein HTML so aussieht:function getNames(member){ $.ajax({ url : 'meinSchoenesPHPScript.php' , method: 'POST', data: 'search=' + member , success: function(result){ /* packe den Inhalt von result in das Textfield */ } }); } code:Packst Du obige Funktion in das onChange() Event:<input type="text" name="member"> code: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).<input type="text" name="member" onChange="getNames(this.value);"> 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:und danachsudo apt-get install winetricks code:Das öffnet eine Liste mit ein paar Sachen die man nach installieren kann.winetricks -- 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 |
|||||
|
Impressum |
Datenschutzerklärung |
Netiquette |
Werbung |
Kontakt
Copyright © 1998-2024 by amiga-news.de - alle Rechte vorbehalten. |