[HTML / Javascript] JS funktioniert nicht richtig - falsch eingebunden ?

Joined
May 20, 2002
Messages
24,877
Points
375


Hab hier ein kleines "Projekt" auf das es bald Noten gibt - und wir sollen uns den Kram selbst beibringen (ja, klingt bescheuert, ist aber tatsächlich so). Und zwar sollen wir mit HTML ne Abfragemaske für nen Personalausweis erstellen. Bin schon recht weit, hatte vorhin ein PRob mit dem Kalender, geht jetzt aber.

edit2: neues Problem !

Also, wie bekomme ich es hin, dass die Radio Buttons (Zeile 66) denn auch angezeigt werden ? Bzw, dass die Beschriftung angezeigt wird.
sobald ich die in die Tabelle stecke bekomme ich nur noch die Buttons, nicht aber die Beschriftung angezeigt :/

 

Attachments

  • BS Perso.zip
    34.3 KB · Views: 7
Last edited:



verflucht O____o

ich habs mit IE, Opera, Chrome und FF4 ausprobiert. Überall schauts so aus:


 

Attachments

  • formular.JPG
    formular.JPG
    25.8 KB · Views: 3
Also ich habs auch im FF4 gemacht..Du musst dringend an deinen Einrückungen arbeiten. Brrr. :D

Code:
<html>
<head>
<title>Personalausweiß beantragen</title>
<script language="JavaScript" src="calendar_eu.js"></script> 
<link rel="stylesheet" href="calendar.css"> 
</head>
<body>
<h1>Formular für die Beantragung eines Personalausweises</h1>
<form action="seite2perso.php" method="post" name="textformular" cellspacing="20">
<table border="0" cellpadding="5" cellspacing="0" bgcolor="#E0E0E0">
	<tr>
		<td align="right"> Name: </td>
		<td><INPUT type="text" 	name="nachname" size="30" maxlenght="30"> </td>
	</tr>
	
	<tr>
		<td align="right"> Vorname: </td>
		<td> 	<INPUT type="text" 	name="vorname" size="30" maxlenght="30"> </td>
	</tr>
	
	<tr>
		<td align="right"> Anschrift: </td>
		<td>	<textarea cols="25" rows="3" name="anschrift"> </textarea> </td>
	</tr>
	
	<tr>
		<td align="right"> Geburtstag: </td>
		<td><input type="text" name="geburtstag" size="30" maxlenght="30" /> 
			<script language="JavaScript"> 
					
					new tcal ({
					// form name
					'formname': 'textformular',
					// input name
					'controlname': 'geburtstag'
					});
			</script> 
	</tr>
	<tr>
		<td align="right"> Geburtsort: </td>
		<td> 	<INPUT type="text" 	name="geburtsort" size="30" maxlenght="30"> </td>
	</tr>
	<tr>
		<td align="right"> Nationalität: </td>
		<td> 	<select name="national" size="1">				
				
				<option selected>deutsch</option>
				<option>englisch</option>
				<option>polnisch</option>
				<option>französisch</option>
				<option>italienisch</option>
				<option>niederländisch</option>
				<option>techisch</option>
				
			</select> 
		</td>
	</tr>
	<tr>
		<td>Größe:*</td><td><INPUT type="text" 	name="groesse"> </td>
	</tr>
	<tr>
		<td>Augenfarbe:* </td> <td><INPUT type="text" 	name="augen"> </td>
	</tr>
	<tr>
		<td> Geschlecht:*</td>
		<td>
				<input type="radio" name="ges" value="männlich"> männlich<br>
				<input type="radio" name="ges" value="weiblich"> weiblich
		</td>
	</tr>
	<tr>
		<td>	<input type="reset" value=" Abbrechen"> </td>
		<td>
				<input type="Submit" value="Absenden"> </td>
	</tr>
</table>

</form>

</html>
 
Man merkt massiv, dass euch keiner gezeigt hat, wie die Spezifikationen von HTML lauten und wie man diese sinnvoll einsetzt.

Zunächst fehlt die Dokumenttypdefinition. Ohne diese kann dein Browser nur raten, welche Spezifikation von HTML verwendet werden soll, was zu den unterschiedlichsten Fehler führen kann und wird.

Du könntest dich entweder direkt auf HTML 5 stürzen, was sicherlich sinnvoll ist wenn du es derzeit lernst und in Zukunft intensiver nutzen möchtst, dann lauet diese:
Code:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
Beachte jedoch, dass HTML 5 noch kein Standard ist.

Ansonsten würde ich XHTML 1.0 Transitional empfehlen
Code:
<!DOCTYPE HTML>

Eineliste der empfohlenen Dokumenttypdefinitionen findest du hier: http://www.w3.org/QA/2002/04/valid-dtd-list.html. Die Spezifiaktionen selbst findest du hier: http://www.w3.org/standards/techs/html

Neben der neueren Möglichkeiten die HTML 5 bietet ist schon die kürzere Dokumenttypdefinition von Vorteil, da jedes weitere Zeichen, welches übertragen werden muss (auch Kommentare), die Aufrufgeschwindigkeit der Webseite verringern, welches direkten Einfluss auf die Geschwindigkeit hat, mir der Spider oder Crawler von Suchmaschinen deine Seite durchstöbern, aber auch das Wohlempfinden der Nutzer beeinträchtigt, denn wer nutzt schon gerne eine langsame Seite.

Je nachdem wofür du dich entscheidest kann man nun weiter fortfahren und raten, wie du es schreiben solltest.

Im Allgemeinen sei jedoch gesagt, dass Tabellen, also Strukturen der Art:
Code:
<table border="0" cellpadding="5" cellspacing="0" bgcolor="#E0E0E0">
	<tr>
		<td align="right"> Name: </td>
		<td><INPUT type="text" 	name="nachname" size="30" maxlenght="30"> </td>
	</tr>
	<tr>
		<td align="right"> Vorname: </td>
		<td> 	<INPUT type="text" 	name="vorname" size="30" maxlenght="30"> </td>
	</tr>
</table>

Nur für Tabellen gedacht sind und es somit ein semantischer Fehler ist sie zu Platzierung von anderen Elementen zu verwenden, wenn es sich nicht um tabellarische Daten handelt.

Des Weiteren ist etwas wie
Code:
<td align="right"> Name: </td>
für die meisten Dokumenttypdefinitionen inkorrekt, mir ist derzeit auch keiner bekannt, welcher dies definiert.

Der Gedanke dahinter ist, dass HTML als Auszeichnungssprache ähnlich wie XML lediglich Bereiche defniert. Ein großer Unterschied ist dabei sicherlich, dass einie Bestandteile von HTML vorformatiert sind, wie z.B.
Code:
<b>Name:</b>
Welches den Text fett anzeigt. Wenn man nun jedoch nachträglich dieses Verhalten anpassen möchte, so gibt es dazu die Cascading Style Sheets (kurz CSS), welche dies definieren.


Kurz gesagt:
HTML dient dazu Bereiche festzulegen und besitzt für kleinere Aufgaben vordefinierte Anweisungen.
CSS dient dazu die Bereiche zu designen, also etwas zu zentrieren, farblich zu veränden, usw.
JS dient dazu eine HTML-Seite dynamsich zu gestallten.



Zuletzt möchte ich dir folgendes Beispiel an Herz legen, um ein gutes Formular zu schaffen:
Code:
<!DOCTYPE html>
<html>
<head>
    <title>Formular</title>
    <meta charset="UTF-8">
    <style type="text/css">
        fieldset
        {
            width:     300px;
        }

        input, select
        {
            float:     right;
        }

        label
        {
            display:  block;
            clear:    both;
        }
    </style>
</head>
<body>
    <form action="#" method="post">
        <fieldset>
            <legend>Einfaches Formular</legend>
            <label>Vorname:  <input type="text" name="vorname" /></label>
            <label>Nachname: <input type="text" name="nachname" /></label>
        </fieldset>
    </form>
</body>
</html>
Näheres zu Formularen findest du hier: http://www.w3.org/TR/html5/forms.html
Man sollte jedoch noch sagen, dass man die Cascading Style Sheets in eine eigene Datei einfügen und über
Code:
<link rel="stylesheet" href="main.css" type="text/css" />
einbinden sollte.
 


jaja, ich hab gestern die ganze Nacht dran gehockt, es sieht mittlerweile deutlich übersichtlicher aus als das was ich hochgeladen hab :D ... aber immernoch grußelig ;)

@Osbes: danke schon mal für den ausführlichen Beitrag. Wie gesagt, wir werden vollkommen allein gelassen. Das mit den Tabellen zur "Platzierung" hab ich aus Selfhtml übernommen. Ich werd mich bemühen :)

Das ganze ist irgendwie so sinnlos... Beispiel für die Benotung: "Implentieren sie die Funktion "Suche""... (in einem XML Dokument). Das war es. Nicht was wir suchen sollen, nicht was ausgegeben werden soll... also noch mal nachgefragt: "Ja, einfach ein Feld, welches die XML nach dem eingegebenen Begriff durchsucht".
Hab ich gebastelt - wird gesucht und angezeigt, sonst nix. Krieg ich mecker: "jaaaa, neeeee, da muss dann auch das und das und das"...

es ist ein Krampf :/


aber nochmal Danke an alle, ich klemm mich dahinter :)

 
Vllt hättest du ihm deinen Code noch kommentieren sollen damit er mit den CSS Angaben was anfangen kann @Osbes.
Es ist imo etwas schwierig sich mit CSS Angaben auseinander zu setzen wenn man sich damit nich auskennt, besonders mit dem float hab ich selbst jetzt noch Probleme zu finden wie und wo es umgesetzt wird.
Problem bei diesem Code wird sein, dass jedes fieldset, jedes input und select und jedes label diese Eigenschaften übernimmt und nicht nur die des jeweiligen Formulars.
Vllt wäre es anders besser:
Code:
fieldset{ 
width: 300px;//definiert die Breite des Fieldset Objekts
}

fieldset input{ //definiert Angaben zu Inputfeldern innerhalb eines fieldset Objektes
float: right; //kann man sich herleiten, lässt das Objekt einfach rechts "fließen" Objekte danach fließen links um das Objekt herum.
}

fieldset label{ //definiert Angaben zu jedem label in einem fieldset Objekt
clear: both; //löscht das floating auf beiden Seiten, das Objekt wird unter den floatenden Objekten "eingerückt" 
display: block; //Stellt das label Objekt als Block dar, es wird nicht wie Text z.B. inline eingebaut, wie es bsp. bei Text der Fall wäre.
}
Osbes korrigiere die Kommentare wenn sie falsch oder unverständlich sind :D
 
edit: ich schreib mal in normaler Farbe...

hihi, ja da hackt es gerade zumindest ein bisschen. Ich hätte die fieldsets gerne in einem großen fieldset drin. natürlich überlappen die sich dann. Hab auch schon da oben mit dem "width" rumgespielt, habs auch versucht in die einzelnen fieldsets zu schreiben, aber kommt nix bei rund :/
edit3: so, das mit der weite haut nun auch hin, bleiben nur noch die dropdown felder

Code:
<!DOCTYPE HTML>
<html>
<head>
 <title>Formular</title>
 <meta charset="UTF-8">
 <script language="JavaScript" src="calendar_eu.js"></script> <!-- Javascript einbinden -->
<link rel="stylesheet" href="calendar.css">  <!-- Javascript einbinden -->
<style type="text/css">

 
input, select
{
    float:     right;
	background-color: #E0E0E0;
}
 
label
{
    display:  block;
    clear:    both;
}

</style>
</head>
<body>
	<form action="daten_uebermittelt.php" method="post" name="textformular" >
	<fieldset style="width: 40%">
		<legend><b>Antragsformular</b></legend>
	<fieldset style="width: 90%">
		<legend><b>Name</b></legend>
		<label>Vorname:  <input type="text" name="vorname" /></label>
		<label>Nachname: <input type="text" name="nachname" /></label>
	</fieldset>
<br>
	<fieldset style="width: 90%">
		<legend><b>Anschrift</b></legend>
		<label>Straße / Nr.: <input type="text" name="anschrift" /></label>
		<label>Plz: <input type="text" name="plz" /></label>
		<label>Ort: <input type="text" name="ort" /></label>
	</fieldset>
<br>
	<fieldset style="width: 90%">
		<label>Geburtsdatum: <input type="text" name="geburtsdatum"  />
			<script language="JavaScript"> 
					
					new tcal ({
					// form name
					'formname': 'textformular',
					// input name
					'controlname': 'geburtsdatum'
					});
			</script> </label>
		<label>Geburtsort: <input type="text" name="geburtsort" /></label>
		<label for="national">Nationalität:</label> 
			<select name="national" id="national">				
				<option selected>deutsch</option>
				<option>englisch</option>
				<option>polnisch</option>
				<option>französisch</option>
				<option>italienisch</option>
				<option>niederländisch</option>
				<option>techisch</option>	
			</select>		
	</fieldset>
<br>
	<fieldset style="width: 90%">
		<label>Größe (in cm): <input type="text" name="groesse" /></label>
		<label>Augenfarbe: <input type="text" name="augenfarbe" /></label>
		<label for="geschlecht">Geschlecht:</label> 
			<select name="geschlecht" id="geschlecht">				
				<option selected>weiblich</option>
				<option>männlich</option>				
			</select>	
	</fieldset>
<br>	
	<fieldset style="width: 90%">
	<legend><b>Formular</b></legend>
	<input type=submit value="Absenden">
	<input type=reset value="Abbrechen">
	</fieldset>
	</fieldset>
 
 </form>
</body>
</html>


Auch die Dropdown Felder wollen noch nicht wie ich will

auf der Seite hier schau ich mich übrigens gerade um :)

http://reference.sitepoint.com/html/
 
Last edited:
Wie wäre der folgende Vorschlag?

Code:
<!DOCTYPE html>
<html>
<head>
    <title>Formular</title>
    <meta charset="UTF-8">
    <style type="text/css">
        *
        {
            margin:           0;
            padding:           0;
        }
    
        form > fieldset
        {
            width:            350px;
        }
    
        fieldset
        {
            margin:           5px;
            padding:          5px;
        }
        
        legend
        {
            font-weight:      bold;
            margin:           0 5px;
            padding:          0 3px;
        }
        
        input,
        select
        {
            float:            right;
            min-width:        150px;
            background-color: #E0E0E0;  
            color:            black;
            border:           1px solid black;
            padding:          2px;
            margin-left:      10px;
        }
        
        input:focus,
        select:focus
        {
            background-color: yellow;  
            color:            black;
        }

        label
        {
            display:          block;
            clear:            both;
            margin:           5px;
        }
    </style>
</head>
<body>
    <form action="daten_uebermittelt.php" method="post">
        <fieldset>
            <legend>Antragsformular</legend>
            <fieldset>
                <legend>Name</legend>
                <label>Vorname <input type="text" name="vorname"></label>
                <label>Nachname <input type="text" name="nachname"></label>
            </fieldset>
            <fieldset>
                <legend> Anschrift</legend>
                <label>Straße / Nr. <input type="text" name="anschrift"></label>
                <label>Plz <input type="text" name="plz"></label>
                <label>Ort <input type="text" name="ort"></label>
            </fieldset>
            <fieldset>
                <label>Geburtsdatum <input type="text" name="geburtsdatum" ></label>
                <label>Geburtsort <input type="text" name="geburtsort"></label>
                <label>Nationalität
                    <select name="national">                
                        <option selected>deutsch</option>
                        <option>englisch</option>
                        <option>polnisch</option>
                        <option>französisch</option>
                        <option>italienisch</option>
                        <option>niederländisch</option>
                        <option>techisch</option>    
                    </select>  
                </label> 
            </fieldset>
            <fieldset>
                <label>Größe (in cm): <input type="text" name="groesse"></label>
                <label>Augenfarbe: <input type="text" name="augenfarbe"></label>
                <label>Geschlecht: 
                    <select name="geschlecht" >                
                        <option selected>weiblich</option>
                        <option>männlich</option>                
                    </select>
                </label>
            </fieldset>
            <input type="submit">
            <input type="reset">
        </fieldset>
    </form>
</body>
</html>

Du kannst dabei die Auswahlfelder ebenso innerhalb des Labels definieren.

@baracuda
Das wäre sicherlich hilfreich gewesen, jedoch ist es immer schwer alles zu erklären, dafür gibt es zu viel zu lernen, als dass man es in einen Beitrag pressen kann.

Des Weiteren sollte man auf Kommentare innerhalb von HTML, CSS oder JS wenn möglich verzichten, da dieswieder Übertragungszeit kostet. Sie werden zwar nicht dargestellt, jedoch müssen sie übertragen werden.
Aber ich stimme dir zu, dass es zum Verstehen hilfreich gewesen wäre.

Bei dir ist nur
CSS:
clear: both; //löscht das floating auf beiden Seiten, das Objekt wird unter den floatenden Objekten "eingerückt"
unvollständig. Gerade in diesem Fall dient es dazu, dass die Höhe des Labels auf die gesamte Höhe des Inhaltes angepasst wird.
Im Übrigen ist nur
CSS:
/* CSS Kommentar */
der korrekte Syntax für einen Kommentar in CSS.
 
Super !

vielen lieben Dank.

Ich wurschtel mich zwar durch indem ich jede Anweisung einzeln übernehme und verändere um zu sehen was die tut, aber das hilft mir ungemein.

Danke :)

Ich deeeenke, das war es dann fürs erste.
 
datepicker hab ich integriert, das ging super einfach und sieht toll aus.

und ich hab nun das nächste Problem ;)

Code:
     <div id="Inhalt">
    <h2>Ihre Daten wurden wie folgt übermittelt:</h2>
	<br>
    <br>
	<?php 
//Bildschirmausgabe
echo "Nachname		: ".$_POST['nachname']."<br />\n";
echo "Vorname		: ".$_POST['vorname']."<br />\n";
echo "Anschrift		: ".$_POST['anschrift']."<br />\n";
echo "PLZ			: ".$_POST['plz']."<br />\n";
echo "Ort			: ".$_POST['ort']."<br />\n";
echo "Geburtsdatum	: ".$_POST['geburtsdatum']."<br />\n";
echo "Geburtsort	: ".$_POST['geburtsort']."<br />\n";
echo "Nationalität	: ".$_POST['national']."<br />\n";
echo "Größe			: ".$_POST['groesse']."cm"."<br />\n";
echo "Augenfarbe	: ".$_POST['augenfarbe']."<br />\n";
echo "Geschlecht	: ".$_POST['geschlecht']."<br />\n";
//Initialisierung
$nachname=$_POST['nachname'];
$vorname=$_POST['vorname'];
$anschrift=$_POST['anschrift'];
$plz=$_POST['plz'];
$ort=$_POST['ort'];
$geburtsdatum=$_POST['geburtsdatum'];
$geburtsort=$_POST['geburtsort'];
$groesse=$_POST['groesse'];
$augenfarbe=$_POST['augenfarbe'];
$geschlecht=$_POST['geschlecht'];



//Ausgabe in Textdatei - \r\n für Zeilenumbruch. 
$ausgabe=$nachname. ", ". $vorname."\r\n". $anschrift."\r\n". $plz."\r\n". $ort."\r\n". $geburtsdatum."\r\n". $geburtsort."\r\n". $groesse."\r\n". $augenfarbe."\r\n". $geschlecht."\r\n"."\r\n";
$datei=fopen("datensatz.txt","a"); //a für mehrer Datensätze, w für überschreiben - ausgabe in datensatz.txt
$output=fwrite($datei,$ausgabe); 
fclose($datei); 

// Ausgabe in XML Datei. Neue Datensätze als Child von IDEM

$xml = simplexml_load_file("daten.xml");

$idem = $xml->addChild("IDEM");
$idem->addChild("VORNAME", "$_POST[vorname]");
$idem->addChild("NACHNAME", "$_POST[nachname]");
$idem->addChild("ANSCHRIFT", "$_POST[anschrift]");
$idem->addChild("PLZ", "$_POST[plz]");
$idem->addChild("ORT", "$_POST[ort]");
$idem->addChild("GEBURTSDATUM", "$_POST[geburtsdatum]");
$idem->addChild("GEBURTSORT", "$_POST[geburtsort]");
$idem->addChild("NATIONALITÄT", "$_POST[national]");
$idem->addChild("GROESSE", "$_POST[groesse]");
$idem->addChild("AUGENFARBE", "$_POST[augenfarbe]");
$idem->addChild("GESCHLECHT", "$_POST[geschlecht]");

$handle = fopen("daten.xml", "wb"); 
fwrite($handle, $xml->asXML());
fclose($handle);

?>

Code:
<ROOT>
  <IDEM>
   <VORNAME>Max</VORNAME>
   <NACHNAME>Mustermann</NACHNAME>
   <ANSCHRIFT>Musterstraße15</ANSCHRIFT>
   <PLZ>12345</PLZ>
   <ORT>Musterhausen</ORT>
   <GEBURTSDATUM>06/15/2011</GEBURTSDATUM>
   <GEBURTSORT>Musterstadt</GEBURTSORT>
   <NATIONALITÄT>deutsch</NATIONALITÄT>
   <GROESSE>167</GROESSE>
   <AUGENFARBE>blau</AUGENFARBE>
   <GESCHLECHT>männlich</GESCHLECHT>
  </IDEM>
  <IDEM>
   <VORNAME>Maria</VORNAME>
   <NACHNAME>Musterfrau</NACHNAME>
   <ANSCHRIFT>Musterallee 17</ANSCHRIFT>
   <PLZ>54321</PLZ>
   <ORT>Musterhafen</ORT>
   <GEBURTSDATUM>06/02/2011</GEBURTSDATUM>
   <GEBURTSORT>Musterheim</GEBURTSORT>
   <NATIONALITÄT>italienisch</NATIONALITÄT>
   <GROESSE>170</GROESSE>
   <AUGENFARBE>grün</AUGENFARBE>
   <GESCHLECHT>weiblich</GESCHLECHT>
  </IDEM>
</ROOT>


mit dem ersten Schnippsel schreib ich die Daten aus den Formularfeldern in eine txt Datei und eine xml Datei.

Jetzt brauch ich irgendeine Funktion, mit der ich nach diesen Datensätzen suchen kann. Also, wenn ich z.B. nur "Hans" eingebe, dann soll er mir den kompletten node von Hans zurück geben.

Ich denke (?) ich brauch dafür auf jeden Fall die xml Datei und muss den nodes noch eine ID zuweisen. Aber wie mache ich es, dass sich diese automatisch inkrementiert ? ... bzw, geht das überhaupt ?
Hab schon so vieles gelesen und einiges ausprobiert, aber nüscht hilft :)
 
hö? welche Datei willst du jetzt durchsuchen?
In der TXT Datei würde ich einfach irgendein Zeichen zu einem Trennzeichen auserkoren und dann halt den eingegebenen Zeichensatz mit dem Zeichensatz zwischen den Trennzeichen durchsuchen.
In einer XML ist das ganze noch einfacher da PHP mit XMLs arbeiten kann soweit ich das weis. Ansonsten schreibste dir nen Attribut in die XML nah welchem du suchen kannst.
zum Incrementieren einer ID musst du die XML einlesen, gucken welche Nummer drin steht und dann einfach diese Zahl +1 machen und in die XML einbauen wenn du sie mit den neuen Daten erweiterst. In PHP ist das eigentlich kein großes Ding, warte ich such mal nen Codeschnipsel zusammen.
 
kleine Anmerkung:

wir sollen in txt und in xml speichern.

hab einfach mal beides gepostet da ich mir dachte: vllt. gehts ja mit dem einen einfacher als mit dem anderen


ich hab jetzt eine "suche" implementiert, die einfach nach dem eingegeben wort die textdatei durchsucht und mir dann sagt: "an der und der stelle und zeile isses"
das ging dann doch recht gut, aber ich hätte halt schon lieber den kompletten datensatz. nur check ich des nich :D

wenn es hilft lad ich meinen kram gerne noch noch, oder poste alles oder so ^^
 
Das Problem in der Textdatei ist ja nicht das Suchen nach dem WOrt sondern das Unterscheiden der anderen Datensätze, wo fängt der eine an und wo hört der andere auf, denke das is dein Problem.
Die Lösung: Lass die Textdatei so aussehen:
DatensatzBeginn;Vorname: Hans, Nachname: Meier, Wohnort: Köln, Strasse: Hauptstraße 1, DatensatzEnde; DatensatzBeginn; usw...
Durchsuch die Textdatei nach den "Trennzeichen" DatensatzBeginn und DatensatzEnde, wobei eines von beiden auch zugunsten eines "NEXT" oder so weg fallen könnte. Du bräcuhtest nichtmal diese langen Strings sondern könntest auch Sonderzeichen benutzen. Man kann hier so kreativ gestalten wie man will, meist wird die Ausgabe im Browser eh im selbigen zusammen gebastelt und nich bereits in der Textdatei.
Heisst, arbeite mit den Trennzeichen und such dir entsprechende Sachen anhand derer zusammen.
 
och menno, dabei war ich so stolz dass er mit die daten mit umbrüchen in die txt schreibt :D

aber ok, ich werd das mal versuchen. danke erstmal und ich meld mich dann wieder :)
 
Kannst auch die Umbrüche als Trennzeichen nehmen, was spricht dagegen? Im Prinzip sind das ja auch nur Zeichen für den Computer:D

Du hast ja eine Trennung zwischen den Datensätzen, zwei Umbrüche, jetzt musst du nur an der Stelle den Vornamen suchen an der er auch steht, also nach dem ersten Komma im jeweiligen Datensatz.
Das is wien grep in Linux, dass man sich kompliziert zusammen bastelt.
Bei der XML kannst du es dir ganz einfach machen da du eh schon SimpleXML benutzt und du damit anhand von Tags suchen kannst.
 
Ich muss gleich noch zum Institut, daher kann ich dir nicht sofort helfen, aber ich möchte dir noch schnell folgendes an Herz legen:

Nutzer anstelle von
PHP:
$_POST['nachname']
lieber
PHP:
$nachname = \filter_input(INPUT_POST, 'nachname ', FILTER_SANITIZE_STRING, FILTER_FLAG_STRIP_LOW);
echo \htmlspecialchars($nachname);
http://www.php.net/manual/de/function.filter-input.php

Dies hat zwei Gründe.
  1. Es ist nicht sichergestellt, dass das Array $_POST einen Index nachname besitzt, da es vom Nutzer abhängt und somit außerhalb deiner Kontrolle liegt. Dieses Problem umgehen wir, indem wir es mit Hilfe von filter_input laden.
  2. Du provozierst XSS-Attacken, wenn du die EIngabe unmaskiert ausgibst. Daher solltest du es zunächst mit Hilfe von htmlspecialchars maskieren.

Sollte
PHP:
\filter_input
nicht funktionieren, dann nutze
PHP:
filter_input
Dies bedeutet lediglich, dass deine PHP Version nicht mindestens 5.3 entspricht und somit keine Namespaces unterstützt.




Weitere Tipps gibt es am Nachmittag. Denke schon mal darüber nach, dass du HTML und PHP trennen solltest und nutze wenn möglich keine doppelten Hochkommatas in PHP, sondern einfache. Denn innerhalb von doppelten werden Variablen etc. umgewandelt, was eine beliebte Fehlerquelle ist.

PS:
Anstelle von
PHP:
$handle = fopen("daten.xml", "wb"); 
fwrite($handle, $xml->asXML());
fclose($handle);

kannst du direkt

PHP:
\file_put_contents('./daten.xml', $xml->asXML());

verwenden. Einen Handler explizit zu verwenden macht nur Sinn, wenn du mit ihm mehr vor hast, z.B. die Geschwindigkeit beim schreiben steuern willst, was aber auch nur bei sehr großen Datenmengen Sinn macht. Ansonsten ist es schlechter.
 
Nun, so weit mit Maskierungen zu arbeiten war ich jetzt nicht, da mope ja eher am Anfang steht.
Du vertiefst das ganze ja schon ziemlich gut^^
btw die Methoden die du da vorschlägst kannte ich noch gar nicht, man lernt nie aus ;)

Osbes kannst du vllt deinen Code anders darstellen? Ich schaue hier über ein Netbook rein und die Schrift überschreitet den weißen Rahmen immer wenn sie etwas länger wird, da sie nicht umgebrochen wird.
€: Womit schreibt ihr beide eigentlich euren Code?
Ich benutz seit meiner Ausbildung vor 4 Jahren den Scite Editor und suche mittlerweile nach schöneren Alternativen.
 
Back
Top Bottom