Top-Themen

Aktuelle Themen (A bis Z)

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

Mitglied: solaris-ch

solaris-ch (Level 1) - Jetzt verbinden

21.12.2009 um 10:23 Uhr, 4733 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 ..
Ähnliche Inhalte
Datenbanken

Datensatz mit 2 Felder anfügen Access

gelöst Frage von Dr.CornwallisDatenbanken2 Kommentare

Hallo, ich habe 2 Felder: 1. Kombifeld - PersNr zum auswählen 2. Textfeld - hier kann man beliebigen Text ...

Webentwicklung

AJAX-PHP durch WebRTC für Datenaustausch ersetzen?

Frage von mabue88Webentwicklung1 Kommentar

Hallo zusammen, ich habe einen XAMPP Server laufen. Vom Server werden bislang lediglich Daten in Form von Strings an ...

JavaScript

Dropdownfeld auslesen und mit AJAX und JS an PHP senden

gelöst Frage von ITFloriJavaScript7 Kommentare

Hallo zusammen, ich versuche gerade die Auswahl eines Dropdown Menüs in eine Variable schreiben zu lassen und Sie mir ...

JavaScript

JqXHR , ajax blob-header entfernen bei Benutzung von blueimp jquery.fileupload.js und mini-ajax-file-upload-form

Frage von TheFreemanJavaScript4 Kommentare

Hallo zusammen, Ich benutze folgende Scripts für mein File-Upload-GUI: Mein Problem liegt darin, dass beim Senden eines chunks oberhalb ...

Neue Wissensbeiträge
Google Android

Googles "Android Enterprise Recommended" für Unternehmen

Information von kgborn vor 2 StundenGoogle Android

Hier eine Information, die für Administratoren und Verantwortliche in Unternehmen, die für die Beschaffung und das Rollout von Android-Geräten ...

Sicherheit

Intel gibt neue Spectre V2-Microcode-Updates frei (20.02.2018)

Information von kgborn vor 3 StundenSicherheit

Intel hat zum 20. Februar 2018 weitere Microcode-Updates für OEMs freigegeben, um Systeme mit neueren Prozessoren gegen die Spectre ...

Microsoft
ARD-Doku - Das Microsoft Dilemma
Tipp von Knorkator vor 6 StundenMicrosoft2 Kommentare

Hallo zusammen, vor einigen Tagen lief in der ARD u.a. Reportage. Das Youtube Video dazu dürfte länger verfügbar sein. ...

Windows 10

Neue Sicherheitslücke in Windows 10 (Version 1709) durch Google öffentlich geworden

Information von kgborn vor 1 TagWindows 10

Vor ein paar Tagen haben Googles Sicherheitsforscher vom Projekt Zero eine Sicherheitslücke im Edge-Browser publiziert. Jetzt wurde eine weitere ...

Heiß diskutierte Inhalte
Windows Server
AD DS findet Domäne nicht, behebbar?
Frage von schapitzWindows Server36 Kommentare

Guten Tag, ich habe bei einem Kunden ein Problem mit den AD DS. Umgebung ist folgende: Windows Server 2016 ...

Router & Routing
LANCOM VPN CLIENT einrichten
Frage von Finchen961988Router & Routing27 Kommentare

Hallo, ich habe ein Problem und hoffe ihr könnt mir helfen, wir haben einen Kunden der hat einen Speedport ...

Router & Routing
ISC DHCP 2 Subnetze
gelöst Frage von janosch12Router & Routing15 Kommentare

Hallo, ich betreibe bei mir im Netzwerk einen ISC DHCP Server auf Debian, der DHCP verwaltet aktuell ein /24 ...

CPU, RAM, Mainboards
32 gb RAM zu wenig?
Frage von pcguyCPU, RAM, Mainboards13 Kommentare

Hallo zusammen, mein PC verfügt über 32GB Ram. Nun kriege ich bei grossen Dateien im Illustrator die Fehlermeldung das ...