Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

AJAX Form Feld von PHP Script anfügen

Frage Entwicklung Webentwicklung

Mitglied: solaris-ch

solaris-ch (Level 1) - Jetzt verbinden

21.12.2009 um 10:23 Uhr, 4651 Aufrufe, 11 Kommentare

Hallo zusammen

Ich habe folgende Aufgabenstellung bei der ich nicht weiterkomme:

1. ein Formular mit diversen Formularfeldern und einem "Add Step" genannten Button
2. get_step.php dieses File generiert neue Steps. Ein Step ist grundsätzlich nichts anderes als weitere Formularfelder, welche aber anhand Datenbankdaten erstellt werden.

Nun sollte es so funktioniere, das wenn ich "Add Step" drücke, vom PHP Script ein neuer solcher Step - Inhalt angefordert wird, und an bestimmter Stelle im Formular eingefügt wird...

Hat jemand eine Idee wie ich das machen kann?

Gruss und danke!
Mitglied: nxclass
21.12.2009 um 13:45 Uhr
Erstmal würde ich ein PHP Script schreiben das den HTML Code bzw. XML Daten generiert welche später eingefügt werden sollen.
Danach musst Du noch dein HTML Formular und den Button mit dem entsprechenden Javascript Code versehen.

Die Zauberworte für Javascript sind 'Event Handler' und 'XMLHttpRequest' bzw 'ActiveXObject'.

Ich habe folgende Aufgabenstellung ...
... mehr sag ich deshalb erstmal nicht.
Bitte warten ..
Mitglied: solaris-ch
21.12.2009 um 13:57 Uhr
Hallo nxclass

ja, also ich bin schon ein wenig über ddas Aufgabenstadium raus .
Das PHP ist geschrieben, der Button existiert und ich habe bereits mit mehreren Librarys rumgespielt.
Mit Prototype kam ich relativ weit, jedoch wurde der Inhalt nicht "appended"...

Die entsprechende Funktion sah dann so aus:

function getStep() {

var url = 'get_step.php';
var pars = 'campID='+campID;
cStepContainer.style.visibility = 'visible';
var myAjax = new Ajax.Request(
url,
{
method: 'POST',
parameters: pars
});
}

Gruss und sorry für die Halbinfo zu Beginn.
Bitte warten ..
Mitglied: nxclass
21.12.2009 um 20:13 Uhr
... woher soll er auch wissen was er ersetzen/anfügen soll.

vollgendes Beispiel habe ich aus dem WIKI: http://de.wikipedia.org/wiki/Ajax_%28Programmierung%29
01.
var myAjax = new Ajax.Request(  "datum.php",  { 
02.
    method: 'get', 
03.
    onComplete: zeige_datum 
04.
} );
Dir fehlt also noch der Funktionsaufruf ('zeige_datum') welcher dann das Ergebnis in deinen HTML Code einfügt.

d.h.
01.
var myAjax = new Ajax.Request( url, { 
02.
  method: 'POST', 
03.
  parameters: pars, 
04.
  onComplete: appendForm 
05.
}); 
06.
//... 
07.
function appendForm( request ) 
08.
09.
    $('deine_form_id').innerHTML = request.responseText; 
10.
    // alert( request.responseText ); 
11.
}
Ich benutze AJAX nur selten, da es mir für solche Aufgaben einfach zu überladen ist. Ein xmlHttpRequest Objekt ist auch schnell selbst geschrieben.
Bitte warten ..
Mitglied: solaris-ch
22.12.2009 um 07:20 Uhr
Hallo nxclass

du hast mir den Anstoss gegeben den ich brauchte Vielen Dank dafür!

Habe das ganze noch etwas umgebaut, da es mir den neuen Request nicht angefügt hat, sondern den alten ersetzt. Aber nun sieht das ganze so aus:

01.
function getStep(campID) { 
02.
	 
03.
	var url = 'get_step.php'; 
04.
	var pars = 'campID='+campID; 
05.
	moreStep.style.visibility = 'visible'; 
06.
		var myAjax = new Ajax.Request( 
07.
		url,  
08.
09.
			method: 'POST',  
10.
			parameters: pars, 
11.
			onComplete: zeige_step 
12.
		}); 
13.
14.
 
15.
 
16.
function zeige_step(request){  
17.
	$('moreStep').innerHTML += request.responseText;  
18.
	 // alert( request.responseText );  
19.
}
Besten Dank für deine Hilfe! Auf ein nächstes Mal
Bitte warten ..
Mitglied: solaris-ch
22.12.2009 um 11:31 Uhr
Mist, muss nochmal öffnen. Sorry.

Nun funktioniert die Geschichte eigentlich. Nur:

Im Script: get_step.php werden u.A. Checkboxen und Textfelder generiert.
Wenn ich nun den Button betätige um einen neuen "Step" zu erzeugen, vorher aber eine Checkbox markiert habe, wird zwar der neue Step angefügt, jedoch die zuvor bei Step1 markierte Checkbox wieder "deselektiert"...

Wieso ist das?

Gruss
Bitte warten ..
Mitglied: nxclass
22.12.2009 um 12:29 Uhr
das Input Feld wird ersetzt ? - hast Du da auch
01.
checked="checked"
eingefügt ?
Bitte warten ..
Mitglied: solaris-ch
22.12.2009 um 12:40 Uhr
Ne, sorry. Ich drück mich etwas unverständlich aus. Auch Fragen will gelernt sein.

Also: get_step.php sieht wie folgt aus:

01.
session_start(); 
02.
include_once("class/dbhandler.class.php"); 
03.
$db 		= new DbHandler(); 
04.
$db->mySqlConnect(); 
05.
$campID 	= $_POST['campID']; 
06.
$today		= date("Y-m-d H:i:s"); 
07.
$uid		= $_SESSION['uid']; 
08.
 
09.
// get step id 
10.
 
11.
$insert_step = "insert into cat.step (create_date,create_by,campaign_id) 
12.
values (sysdate(),'$uid','$campID')"; 
13.
 
14.
mysql_query($insert_step); 
15.
$step_id = mysql_insert_id(); 
16.
 
17.
$count_step = "select id from cat.step where campaign_id='$campID'"
18.
$cres = mysql_query($count_step); 
19.
$stepnumber = mysql_num_rows($cres); 
20.
 
21.
	echo "<br /><br />Step: $stepnumber, StepID: $step_id 
22.
	<table width=920px> 
23.
	<tr> 
24.
	<td class=tdtitle style=\"width:25%\">Step Name</td> 
25.
	<td class=feld colspan=7><input type=\"text\" id=\"campStepName\" name=\"campStepName[]\"/>\n</td> 
26.
	 
27.
	</tr> 
28.
	 
29.
	<tr> 
30.
	<input type=\"hidden\" name=\"stepNum\" value=\"$stepnumber\"
31.
	<input type=\"hidden\" name=\"stepId\" value=\"$step_id\"
32.
	<td class=tdtitle>Target Quantity</td> 
33.
	<td class=feld colspan=7><input type=\"text\" id=\"campTargetQtyFT\" name=\"campTargetQtyFT[]\"/>\n</td> 
34.
	</tr> 
35.
	 
36.
	<tr> 
37.
	<td class=tdtitle>Channels 
38.
	<p class=cAdditional>What channel is being used (call center, DM etc.) for In- and Outbound</p></td> 
39.
	<td class=feld colspan=6>"; 
40.
	// checkbox für die kommunikations kanäle 
41.
		$q_campChannelsCB = "select distinct id, show_text from cat.constant where area='campChannelsCB' order by foreign_id ASC, show_text ASC"
42.
		$r_campChannelsCB = mysql_query($q_campChannelsCB); 
43.
		echo "<table class=tablecb cellspacing=0><tr>\n"
44.
		$count = 0; 
45.
		while($rr_campChannelsCB = mysql_fetch_array($r_campChannelsCB)){ 
46.
			echo "<td class=feldcb><input type=\"checkbox\" name=\"campChannelsCB\" value=\"".$rr_campChannelsCB['id']."\" id=\"".$rr_campChannelsCB['show_text']."_$stepnumber\"><label for=\"".$rr_campChannelsCB['show_text']."_$stepnumber\">&nbsp;".$rr_campChannelsCB['show_text']."</td>\n"
47.
			$count++; 
48.
			if($count == 5){ 
49.
				echo "</tr><tr>\n"
50.
				$count = 0; 
51.
52.
				 
53.
54.
		$rest = 5-$count; // bestimmen wieviele leere <td> noch benötigt werden 
55.
		for($c = 0; $c < $rest; $c++){ 
56.
			echo "<td class=feldcb></td>\n"
57.
58.
		echo "</tr></table>\n"
59.
		 
60.
	echo "</td> 
61.
	</tr> 
62.
	 
63.
	<tr> 
64.
	<td class=tdtitle>Communication Period Start 
65.
	<p class=cAdditional>Start and end date of campaign</p></td> 
66.
	<td class=feld><input type=\"text\" id=\"campComPeriodStartCA_$stepnumber\" name=\"campComPeriodStartCA[]\">YYYY-MM-DD 
67.
	</td> 
68.
	<td class=tdtitle>Comminication Period End</td> 
69.
	<td class=feld colspan=4><input type=\"text\" id=\"campComPeriodEndCA_$stepnumber\" name=\"campComPeriodEndCA[]\">YYYY-MM-DD</td> 
70.
	</tr> 
71.
	<tr>";
Jedesmal wenn auf der Startseite "Add Step" gedrückt wird, erzeugt obiges PHP Script Checkboxen. Wenn nun eine Checkbox angewählt wird und danach erneut "Add Step" gedrückt wird, passiert folgendes:

1. die vorher angewählte Checkbox wird wieder "abgewählt"
2. das neue Formular wird unter das bereits erstellte angefügt, was auch gut ist.

Nur Punkt 1 ist schlecht. Weil wenn einer einen solchen Step hinzufügt, die Formularfelder ausfüllt und erst danach "Add Step" drückt verfallen alle bisherigen Angaben.

Hoffe du verstehst was ich meine.
Gruss, tom
Bitte warten ..
Mitglied: nxclass
23.12.2009 um 09:29 Uhr
Das hat sicherlich etwas mit deinem Javascript zu tun - evtl. ist es ein Nebeneffekt des AJAX Request.
Da musst Du wahrscheinlich mal den Javascript Ablauf verfolgen.
Bitte warten ..
Mitglied: solaris-ch
23.12.2009 um 10:34 Uhr
Wie meinst du das, den Javascript Ablauf verfolgen?
Bitte warten ..
Mitglied: nxclass
24.12.2009 um 00:04 Uhr
schau Dir mal die Erweiterung 'Firebug' für Firefox an - damit kann man u.a. sehr einfach Javascript debugen.
Bitte warten ..
Mitglied: solaris-ch
28.12.2009 um 07:53 Uhr
Besten Dank. Habe mich durch das ganze Script durchgewühlt und durch den ganzen Ablauf verfolgt. Aber ich begreiff einfach nicht wieso der die olle Checkbox nicht markiert behält, sondern den Haken rausnimmt. Niemand ne Idee?
Bitte warten ..
Neuester Wissensbeitrag
Ähnliche Inhalte
Heiß diskutierte Inhalte
Windows Userverwaltung
Ausgeschiedene Mitarbeiter im Unternehmen - was tun mit den AD Konten? (32)

Frage von patz223 zum Thema Windows Userverwaltung ...

LAN, WAN, Wireless
FritzBox, zwei Server, verschiedene Netze (21)

Frage von DavidGl zum Thema LAN, WAN, Wireless ...

Viren und Trojaner
Aufgepasst: Neue Ransomware Goldeneye verbreitet sich rasant (20)

Link von Penny.Cilin zum Thema Viren und Trojaner ...

Windows Netzwerk
Windows 10 RDP geht nicht (18)

Frage von Fiasko zum Thema Windows Netzwerk ...