3.8k Aufrufe
Gefragt in Skripte(PHP,ASP,Perl...) von romero Mitglied (323 Punkte)
Hallo liebe Gemeinde,

ich muss gleich sagen, dass sich mein Thema um was größeres dreht. D.h. das ich hier rüber mehrere Anwendungsziele versuche detaliert dazustellen, wo ich bisher keine oder nur dürftige Antworten gefunden hab.

Es geht um es kurz zu sagen, um einen Script (wird als HTML-Applikation *.hta gespeichert), welches mir erleichtert, Material-Stücklisten zu erstellen. Man wählt 3 Kategorien aus, gibt eine 3-stellige Nummer an und das Script gibt dann (geknüpft an verschiedenen Bedingungen und weiteren Auswahlmöglichkeiten, wie z.B. "Neu" oder "Aktualisierung") eine *.txt mit entsprechendem Inhalt aus.

...

12 Antworten

0 Punkte
Beantwortet von romero Mitglied (323 Punkte)
...
Hier nun der Haupt-Script:

<html>
<head>
<title>Stuecklistenscript</title>
<HTA:APPLICATION ID="RolandRaue" APPLICATIONNAME="RolandRaue" SCROLL="yes" SINGLEINSTANCE="no"/>

<style type="text/css">
body { background-color:lightblue; font-family:Times; font-size:14px; }
table { height:650px; width:1020px; border:3px; border-style: outset; }
td { border:0px solid black }
div { width:1000px; height:380px; margin:0px; border:2px; border-style: inset }
.rollbalken { overflow:scroll; overflow-x:hidden }

</style>
<script type="text/javascript" src="Bereichsauswahl.js"></script>
<script type="text/javascript" src="LinkedSelection.js"></script>
<script language="javascript" type="text/javascript">
<!--

//LinkedSelection wird definiert und entsprechend ausgegeben

function ergebnisZeigen( selected )
{
if( selected.length )
{

var sel = '';
var val = '';
var txt = '';
for( var i = 0; i < selected.length; i++ )
{
sel += ( i>0 ? ' &rarr; ' : '') + selected[i].id;
val += ( i>0 ? ' &rarr; ' : '') + selected[i].value;
txt += ( i>0 ? ' &rarr; ' : '') + selected[i].text;
}

}
}

window.onload = function()
{
var vk = new LinkedSelection( [ 'FLT', 'Sektion', 'Bereich1' ], ergebnisZeigen, Bereich1Auswahl );
}


//Übernehmen-Funktion wird geprüft und ausgegeben, samt Fehlermeldungen

function Übernehmen()
{
//Variablen festlegen

var FlugzeugtypText = document.Auswahl.FLT.options[document.Auswahl.FLT.selectedIndex].text;
var FlugzeugtypValue = document.Auswahl.FLT.options[document.Auswahl.FLT.selectedIndex].value;
var SektionText = document.Auswahl.Sektion.options[document.Auswahl.Sektion.selectedIndex].text;
var SektionValue = document.Auswahl.Sektion.options[document.Auswahl.Sektion.selectedIndex].value;
var Bereich1Text = document.Auswahl.Bereich1.options[document.Auswahl.Bereich1.selectedIndex].text;
var Bereich1Value = document.Auswahl.Bereich1.options[document.Auswahl.Bereich1.selectedIndex].value;
var Bereichsnummer1 = document.Auswahl.Text1.value;

//Auswahllisten-Ausgabe

if( FlugzeugtypValue != "--" && Bereichsnummer1.length == 3 && Bereichsnummer1 != "" )
{
var output = "Flugzeugtyp: " + FlugzeugtypText + " / Sektion: " + SektionText + " / Bereich: " + Bereich1Text + Bereichsnummer1;
var Prüfung = document.getElementById( "Prüfung" ).innerHTML = output;
}

//Fehlerüberprüfung

if ( Bereichsnummer1 == "" )
{
var output = "Ein Fehler ist aufgetreten!!! <br><br>Es wurde keine Bereichsnummer eingetragen."
var Prüfung = document.getElementById( "Prüfung" ).innerHTML = output;

} else if ( Bereichsnummer1.length > 0 && Bereichsnummer1.length < 3 )
{
var output = "Ein Fehler ist aufgetreten!!! <br><br>Die Bereichsnummer ist unvollständig."
var Prüfung = document.getElementById( "Prüfung" ).innerHTML = output;

} else if ( FlugzeugtypValue == "--" || SektionValue == "--" || Bereich1Value == "--" )
{
var output = "Fehler!!! <br><br>Es wurde nichts gewählt!!!"
var Prüfung = document.getElementById( "Prüfung" ).innerHTML = output;

} else if ( isNaN(Bereichsnummer1) )
{
var output = "Fehler!!! <br><br>Es sind Buchstaben enthalten!!!"
var Prüfung = document.getElementById( "Prüfung" ).innerHTML = output;
}

if( Bereich1Text == "AA" )
{
document.Auswahl.Folie_Anlegen[0].checked == true;
}

}


//Die Entertaste findet keine Bedeutung mehr und wird deaktiviert

function Entersperre(event)
{
if( event.keyCode == 13)
{
return false;
}
return true;
}



//-->
</script>

...
0 Punkte
Beantwortet von romero Mitglied (323 Punkte)
...
</head>
<body onKeyPress="return Entersperre(event)">
<form name="Auswahl">
<table align="center">
<tr height=10px>
<td colspan=12></td>
</tr>
<tr height=50px>
<td width=10px></td>
<td colspan=10 width=1020px><h2><center>Stücklistenscript</center></h2></td>
<td width=10px></td>
</tr>
<tr height=25px>
<td colspan=12></td>
</tr>
<tr height=25px>
<td width=10px></td>
<td width=80px align="center">Flugzeugtyp:</td>
<td width=80px><label id="FLTLabel" for="FLT"></label>
<select id="FLT" name="FLT">
<option value="--">Bitte wählen:</option>
<option value="SA1">A318</option>
<option value="SA2">A319</option>
<option value="SA3">A320</option>
<option value="SA4">A321</option>
<option value="LR1">A330-200</option>
<option value="LR2">A330-300</option>
<option value="LR3">A340</option>
<option value="LR4">A340-500</option>
<option value="LR5">A340-600</option>

</select></td>
<td width=280px id="Flugzeugtyp"></td>

<td width=55px align="center">Sektion:</td>
<td width=63px><label id="SektionLabel" for="Sektion"></label>
<select id="Sektion" name="Sektion">
<option value="--">------</option>
</select></td>
<td width=187px id="Sek"></td>

<td width=55px align="center">Bereich:</td>
<td width=60px><label id="SektionBereich1" for="Bereich1"></label>
<select id="Bereich1" name="Bereich1">
<option value="--">------</option>
</select></td>

<td width=40px>
<input type="text" name="Text1" value="" size="1" maxlength="3"></input></td>
<td width=100px id="Fehlerausgabe1" align="center"></td>
<td width=10px></td>
</tr>
<tr height=25px>
<td width=10px></td>
<td colspan=6 rowspan=3 id="Prüfung"></td>
<td width=55px></td>
<td width=60px>
<select name="Bereich2" style="display:inline">
<option value="10_13">A</option>
<option value="10_13">B</option>
</select></td>
<td width=40px>
<input type="text" name="Text2" value="" size="1" maxlength="3" style="display:inline"></input></td>
<td width=100px id="Fehlerausgabe2"></td>
<td width=10px></td>
</tr>
<tr height=25px>
<td width=10px></td>
<td width=55px></td>
<td width=60px>
<select name="Bereich3" style="display:inline">
<option value="10_13">A</option>
<option value="10_13">B</option>
</select></td>
<td width=40px>
<input type="text" name="Text3" value="" size="1" maxlength="3" style="display:inline"></input></td>
<td width=100px id="Fehlerausgabe3"></td>
<td width=10px></td>
</tr>
<tr height=25px>
<td colspan=5></td>
</tr>
<tr height=25px>
<td width=10px></td>
<td colspan=10 align="center">
<input type="button" value="Übernehmen" onClick="Übernehmen()"></input></td>
<td width=10px></td>
</tr>
<tr height=5px>
<td colspan=12></td>
</tr>
<tr height=25px>
<td width=10px></td>
<td colspan=2>Art der Stücklistenanlegung:</td>
<td>
<input type="radio" name="STL_Anlegen" value="STL_Neu">Stückliste neu anlegen.</input></td>
<td colspan=3>
<input type="radio" name="STL_Anlegen" value="STL_Aktualisieren">bestehende Stückliste aktualisieren.</input></td>
<td colspan=4></td>
<td width=10px></td>
<tr height=5px>
<td colspan=12></td>
</tr>
<tr height=25px>
<td width=10px></td>
<td colspan=2>Folien-Stückliste:</td>
<td>
<input type="radio" name="Folie_Anlegen" value="Folie_ohne">kein separate Folienstückliste</input></td>
<td colspan=3>
<input type="radio" name="Folie_Anlegen" value="Folie_BTH">Burnthrough (Terflame / Terul 18 / ...)</input></td>
<td colspan=4>
<input type="radio" name="Folie_Anlegen" value="Folie_WS">Nur WS (Terim. 7/8 / Terul 19)</input></td>
<td width=10px></td>
<tr height=5px>
<td colspan=12></td>
</tr>
</tr>
<tr height=25px>
<td width=10px></td>
<td colspan=10 align="center">
<input type="button" value="Start" onClick="Go()"></input></td>
<td width=10px></td>
</tr>
<tr height=10px>
<td colspan=12></td>
</tr>
<tr height=380px>
<td width=10px></td>
<td height=380px width=1000px colspan=10 bgcolor=white border=2px><div id="msgs" class="rollbalken"></div>
</td>
<td width=10px></td>
</tr>
<tr height=5px>
<td colspan=12></td>
</tr>
</table>
</form>


</body>
</html>

...
0 Punkte
Beantwortet von romero Mitglied (323 Punkte)
...

Die Bereichauswahl-Datei sieht so aus (gekürzter Inhalt):

var Bereich1Auswahl = {
'FLT' : {
'SA1' : ['SA1', 'A318'],
'SA2' : ['SA2', 'A319'],
'SA3' : ['SA3', 'A320'],
'SA4' : ['SA4', 'A321'],
'LR1' : ['LR1', 'A330-200'],
'LR2' : ['LR2', 'A330-300'],
'LR3' : ['LR3', 'A340'],
'LR4' : ['LR4', 'A340-500'],
'LR5' : ['LR5', 'A340-600']
},

'Sektion' : {
'SA1' : [
['10_1', '10']
],

'SA2' : [
['10_2', '10']
],

'SA3' : [
['10_3', '10']
],

'SA4' : [
['10_4', '10']
],

'LR1' : [
['13_14_1', '13 / 14'],
['16_18_1', '16 / 18']
],

'LR2' : [
['13_14_2', '13 / 14'],
['16_18_2', '16 / 18']
],

'LR3' : [
['13_14_3', '13 / 14'],
['16_18_3', '16 / 18']
],

'LR4' : [
['13_14_4', '13 / 14'],
['16_18_4', '16 / 18']
],

'LR5' : [
['13_14_5', '13 / 14'],
['16_18_5', '16 / 18']
]
},

'Bereich1' : {

'10_1' : [
['A', 'A'],
['B', 'B']
],
'10_2' : [
['A', 'A'],
['B', 'B']
],
'10_3' : [
['A', 'A'],
['B', 'B']
],
'10_4' : [
['A', 'A'],
['B', 'B']
],
'13_14_1' : [
['AA', 'AA'],
['BB', 'BB']
],
'16_18_1' : [
['A', 'A'],
['B', 'B']
],

'13_14_2' : [
['AA', 'AA'],
['BB', 'BB']
],
'16_18_2' : [
['A', 'A'],
['B', 'B']
],

'13_14_3' : [
['AA', 'AA'],
['BB', 'BB']
],
'16_18_3' : [
['A', 'A'],
['B', 'B']
],
'13_14_4' : [
['AA', 'AA'],
['BB', 'BB']
],
'16_18_4' : [
['A', 'A'],
['B', 'B']
],
'13_14_5' : [
['AA', 'AA'],
['BB', 'BB']
],
'16_18_5' : [
['A', 'A'],
['B', 'B']
]
}
};

...
0 Punkte
Beantwortet von romero Mitglied (323 Punkte)
...
Die LinkedSelection-Datei sieht so aus:

/**
* LinkedSelection ist ein Klasse zur Steuerung dynamisch verketteter Auswahllisten
* @param inputSelects ein Array mit den IDs der Auswahllisten in hierarchischer Reihenfolge
* Bsp: [ 'select1', 'select2', 'select3' ]
* @param callback Funktion, welche beim Abschließen (und Ändern) der Auswahl aufgerufen werden soll
* @param data das Daten-Objekt in JSON
* Bsp: { 'select1':['wert1','text1'], 'select2':['wert5','text5'] }
**/
function LinkedSelection( inputSelects, callback, data )
{
var self = this; /* um aus EventHandlern auf diese Instanz zugreifen zu können */
var selects = new Array(); /* Liste der verketteten Auswahllisten */

/**
* Die Funktion changeHandler wird dem onchange-Handler jeder Auswahlliste zugewiesen.
* Wenn eine gültige Auswahl getroffen wurde, soll entweder die als nächste
* Auswahlliste (nextSelect) bekannte Auswahlliste mit Daten befüllt werden,
* oder die Callback-Funktion ausgeführt werden.
**/
var changeHandler = function()
{
var value = this.selectedValue();

// Auf die nächste Auswahlliste folgende Auswahllisten müssen wieder
// in den default-Zustand versetzt werden
if( typeof(this.nextSelect) == 'object' )
{
for( var i = this.nextSelect.selectID + 1; i < selects.length; i++ )
selects[i].replaceOptions( new Array() );
}

// Abbrechen, wenn ein Dummy-Wert ausgewählt wurde
if( value == '--' )
{
if( this.selectID < selects.length )
selects[ this.selectID +1 ].replaceOptions( new Array() );

return;
}

if( typeof(this.nextSelect) == 'object' )
{
/*
* nextSelect ist eine Auswahlliste
*/

// Wenn keine Daten zur gemachten Auswahl zur Verfügung stehen,
// müssen wir sicherstellen, dass wir auf keine nicht vorhandenen Objekte zugreifen.
if( !data[ this.nextSelect.id ][ value ] )
{
if( !data[ this.nextSelect.id ] )
data[ this.nextSelect.id ] = {};

data[ this.nextSelect.id ][ value ] = new Array();
}

// Neue Optionen in der nächsten Auswahlliste setzen
this.nextSelect.replaceOptions( data[ this.nextSelect.id ][ value ] );

// Wenn die Auswahlstrecke nicht beendet ist, muss die Callback-Funktion
// dennoch aufgerufen werden, damit entsprechend auf Änderungen
// reagiert werden kann.
callback( new Array() );
}
else
{
/*
* Die Auswahlstrecke ist absolviert
*/

// Wahlen der einzelnen Listen in ein Array schreiben um
// dieses an die Callback-Funktion zu übergeben.
var selected = new Array();
for( var i = 0; i < selects.length; i++ )
{
selected.push( { 'id' : selects[i].id,
'value': selects[i].selectedValue(),
'text' : selects[i].selectedText() } );
}
callback( selected );
}
};

/**
* replaceOptions ersetzt die aktuellen Optionen der Auswahlliste durch
* die im Array newOptions gelieferten Daten. Wenn ein leeres Array übergeben
* wird, wird die default-Option "--" gesetzt.
* @param newOptions ein Array mit den neuen Optionen
* Bsp: [ ['value1','text1'], ['value2','text2'], ]
**/
var replaceOptions = function( newOptions )
{
/*
* Diese Funktion setzt bewusst DOM-Methoden ein und verzichtet
* auf die vom Options-Objekt gegebenen Möglichkeiten.
*/

// alte Optionen der Auswahlliste löschen
var opts = this.getElementsByTagName( 'option' );
while( opts.length > 0 )
this.removeChild( opts[0] );

// wenn keine neuen Optionen übergeben wurden, default-Option setzen
// andernfalls "Bitte wählen" voranstellen
if( newOptions.length == 0)
this.addOption( '--', '------' );
else
this.addOption( '--', 'Bitte wählen:' );

// neue Optionen in die Auswahlliste schreiben
for( var i = 0; i < newOptions.length; i++ )
this.addOption( newOptions[i][0], newOptions[i][1] );
};

/*
* Fügt der Auswahlliste eine neue Option hinzu
* @param value Wert der neuen Option
* @param text Name der neuen Option
*/
var addOption = function( value, text )
{
var opt = document.createElement( 'option' );
opt.value = value;
opt.appendChild( document.createTextNode( text ) );
this.appendChild( opt );
};

/**
* holt den Wert der aktuell gewählten Option
* @returns den Value der aktuell gewählten Option
**/
var selectedValue = function()
{
return this.options[ this.selectedIndex ].value;
};

/**
* holt den Text (Name) der aktuell gewählten Option
* @returns den Text der aktuell gewählten Option
**/
var selectedText = function()
{
return this.options[ this.selectedIndex ].text;
};

/**
* Selektiere die Option mit dem Wert value, wenn keine Option mit dem Wert
* value existiert, wird die Auswahl nicht geändert.
* @param value der Wert den eine Option haben muss, um ausgewählt zu werden.
**/
var selectByValue = function( value )
{
for( var i = 0; i < this.options.length; i++ )
{
if( this.options[i].value == value )
this.selectedIndex = i;
}
}

/**
* Initialisiere den Manager für verkettete Auswahllisten.
* Findet Auswahllisten anhand der (per inputSelects) bekannten IDs.
* Bestückt die Auswahllisten mit den nötigen Funktionen und Event-Handlern
**/
this.init = function()
{
// bestücke bestehende selects
for( var i = 0; i < inputSelects.length; i++ )
{
var t = document.getElementById( inputSelects[i] );

// ignoriere falsche IDs
if(!t)
continue;

// neue Funktionen und Event-Handler zuweisen und in selects registrieren
t.replaceOptions = replaceOptions;
t.addOption = addOption;
t.selectedValue = selectedValue;
t.selectedText = selectedText;
t.selectByValue = selectByValue;
t.selectID = selects.length;
t.onchange = changeHandler;
selects.push( t );

// registriere Auswahlliste als nextSelect bei der vorhergehenden
if( selects.length > 1 )
selects[ selects.length-2 ].nextSelect = t;
}
};

// initialisieren!
this.init();
}


So nun habt ihr eine Übersicht über mein bisheriges Geschafftes.

Nun zu meinen Fragen: Wie schaff ich es, dass bei den Auswahlmöglichkeiten der Folie-Stückliste (bisher nur getestet), wenn ich da eine Auswahltreffe, welche aber für den Bereich in 1. Linie unzulässig ist, trotz anwählen eines anderen Bereichs bestehen bleibt?

Bsp: Bereich AA002 soll dann bei Foliestückliste "ohne separate Foliestückliste" vorselektieren. Wenn ich nun wähle "mit BTH", dann erscheint folgendes: AA002, FAA002, TAA002, soweit richtig. Nun wähle ich aber einen neuen Bereich, z.B. BB002, dann erscheint BB002, FBB002, TBB002. Da soll er wieder in die Ausgangsposition springen (Anmerkung: die Vorselektierung erfolgt schon mit der Auswahl des Bereiches). Denn bei DD002 soll er in die Auswahl "mi
0 Punkte
Beantwortet von son_quatsch Experte (5.3k Punkte)
Das Problem ist, dass sich niemand die Arbeit machen wird, diese riesigen Code-batzen zu kopieren und zurechtzulegen, nur um dann in größerer Zeit erstmal zu verstehen, was du gemacht hast und dann letztendlich das eigentliche Problem suchen (und auch noch lösen).

Das Spiel "Frage-Antwort" klappt viel besser, wenn du es den ganzen Code auf genau das Problem kürzt - also auf z.B. 10 Zeilen. Wenn du das ganze dann im reinsten JavaScript machst, hast du noch mehr Chancen auf Antworten, da HTA eher wenige ansprechen dürfte.
0 Punkte
Beantwortet von romero Mitglied (323 Punkte)
ok dann werd ich nach und nach meine fragen hier versuchen simpel zu erklären.

ich besitze 3 auswahllisten mittels radio-button.je nach dem was ich anklicke soll ein entsprechender text (hab ich schon geschrieben) und ein entsprechender wert gespeichert und ausgegeben werden (mit speichern meine ich das reine "merken"). nun ist da aber folgendes:

bei bestimmten bereichen,soll er aber schon in ein bestimmtes radio-button springen.sprich bei z.b. DD123 soll er "checked=true" beim 2. radio-button setzen. das klappt auch wunderbar.bei den anderen bereichen springt er ins 1. radio-button.das klappt auch.also diesen unterschied zwischen den bereichen funzt,also das diese unterschieden werden.

wenn ich nun im bereich AA123 den 2. radio-button anwähle, soll er dann AA123,FAA123, TAA123 ausgeben.und daklappt es nicht.

if( Bereich1Text != "DD" )
{
document.Auswahl.Folie_Anlegen[0].checked = true;
var output = Bereich1Text;
var Prüfung = document.getElementById( "Prüfung" ).innerHTML = output;
}

if( Bereich1Text != "DD" && document.Auswahl.Folie_Anlegen[1].checked == true )
{
var output = Bereich1Text + " / F" + Bereich1Text + " / T" + Bereich1Text;
var Prüfung = document.getElementById( "Prüfung" ).innerHTML = output;
}

if( Bereich1Text == "DD" )
{
document.Auswahl.Folie_Anlegen[1].checked = true;
var output = Bereich1Text + " / F" + Bereich1Text + " / T" + Bereich1Text;
var Prüfung = document.getElementById( "Prüfung" ).innerHTML = output;
}


irgendwie springt er immer in die ausgangs-auswahl rein.
wenn ich das aber so umschreibe,dass das er dann,wenn ich auf das 2. radio-butto klicke,AA123,FAA123,TAA123 ausgibt,dann springt er aber nimmer zurück wenn ich dann z.b. BB wähle.dann bleibt er im 2. radio-button.

soll ich das ganze in eine for-schleife schreiben?denn mit if kann ich es auch,aber dann müsste ich jeden bereich extra machen und das dauert halt zu lange.

lg romero
0 Punkte
Beantwortet von
sowahl in Variablennamen als auch in IDs sind Umlaute nicht sinnvoll bzw. erlaubt, gleiche Bezeichnungen für JS-Variablen und IDs sind zwar erlaubt, verwirren aber den IE, sollten also vermieden werden.

Warum du createElement statt des günstigeren new Option nutzt erschließt sich mir nicht, Unwissenheit scheint es ja nicht zu sein!

Ob das dein Problem behebt weiß ich nicht, dazu müsstest du mal ein Online-Beispiel präsentieren.
0 Punkte
Beantwortet von romero Mitglied (323 Punkte)
online-beispiel ist eher schlecht,da das ganze als datei vorliegt bzw als datei genutzt werden soll.also als *.hta-datei.

soll sozusagen wie ein programm nutzbar sein.bisher läuft alles auch super,nur diese paar "perfektionen" noch nicht.

warum da oben createElement steht statt new option kann ich nicht sagen,da ich dieses übernommen hab und meinen bedingungen angepasst habe.aber diese linkedselection ist ja nur für die auswahllisten,nicht aber für die radio-buttons...

wie kann ich das ganze mittels for-schleife machen???

also das er für jeden ausgewählten bereich (variable "i" von 0 bis "länge des bereiches") das selbe durchlaufen lässt.
also bei AA001 gibt es 3 möglichkeiten,was er ausgeben soll (mit einem zum anfang,nach einer bedingung, "gecheckdem",radio-button).bei BB001 ebenfalls 3 möglichkeiten,was er ausgeben soll,aber genauso wie bei dem AA001. Nur bei DD001 und bei EE001 soll die vorauswahl bzw ein bestimmter radio-button vorausgewählt werden.aber auch da die anderen 2 sollen ebenfalls wählbar sein...

das bekomme ich nicht hin.

mittels IF kann ich für jeden Buchstaben-Doppel eine eigene if-bedingung schreiben aber da werd ich doch bekloppt...

ich dachte da halt an eine for-schleife,welche die einzelnen "bereiche" (also AA=0, BB=1,...) durchläuft und für jedes "i" diese bedingungen ausgibt,dabei aber diese 3 möglichkeiten ausgibt.
0 Punkte
Beantwortet von romero Mitglied (323 Punkte)
gibt es eine möglichkeit diesen "onchange" in eine tabelle einzufügen?

weil das scheint ja nicht zu klappen bzw. ist dafür nicht vorgesehen.ich kann es zwar über onclick machen,das ziel ist das selbe,aber wenn der nutzer,z.b. ich,dann mit dem mausrad oder den pfeiltasten was anderes auswählt,passiert da nix.

in meinem test ohne tabelle funzt onchange wunderbar,nur in der tabelle nicht.gibts dafür ne lösung???
0 Punkte
Beantwortet von
du verlangst hier permanent, dass wir uns mit deinem Code und deinen intransparenten Bezeichnern (xx4564) auseinandersetzen, benutzt zudem Begriffe wie "Tabelle" in nur halbvollständigen Sätzen und dazu den absoluten Totschläger "funzt wunderbar" oder "funzt nicht", ohne je zu schreiben was du darunter verstehst.

Reduziere dein Problem auf das Wesentliche (im Quellcode) und beschreibe dies sinnvoll und nachvollziehbar und vermeide halbausgegorene Sätze. Vorher wird das nichts!

PS: natürlich liegt das als Datei vor - das ist in Computern heutzutage so üblich, sogar auf Webservern!
...