Na dann will ich mal nicht so sein.
Im Prinzip willst du ja eigentlich gar keinen (klassischen) Array, du willst ja alles clientseitig aufbewahren (in der clientseitigen Merkliste) und dann einfach die gesamte "Liste" an ein weiteres Interface weitergeben.
Nun gibt es grundsätzlich 2 Möglichkeiten, wenn ein Auftrag erfasst wird:
1. Klassisches Form: Alle Felder des Forms werden geleert und die Seite wird neu geladen.
In diesem Fall wirst du tatsächlich serverseitige Speicherung benötigen, die du dann wieder ausliest und an den Client zurückgibst. So à la: "Hey, du hast hier was fallengelassen, nimm es doch wieder an". Das ist wahrscheinlich einfacher.
2. Modernes Form: Alle Felder werden ausgelesen und per ajax/xhr an den Server/das Interface geschickt. Dann werden die Felder, die nicht mehr benötigt werden, gelöscht. Dies ist recht JS-lastig, sieht aber in der Regel besser aus und ist ein bisschen besser für den Server (weniger Traffic).
Du bist momentan bei Variante 1 und somit werde ich nur diese behandeln.
Wenn "submitted" wird, kannst du alle Felder entweder manuell oder flexibel zusammenzählen. Hier mal flexibel:
PHP:
$merkliste = array();
for($i = 1; $i <= 24; $i++) { //24 durch die maximale Adresszahl ersetzen
sprintf($identifier, "adresse%02d", $i);
if(isset($_POST[$identifier])) $merkliste[] = $_POST[$identifier];
}
//Dann in einer Session speichern
$_SESSION['merkliste'] = $merkliste;
Entsprechend bei Auslieferung des Formulars befüllen:
PHP:
//...
//Checken, ob die $_SESSION['merkliste'] überhaupt gesetzt ist, kannst du selbst. Musst du übrigens auch...
for($i = 0; $i < count($_SESSION['merkliste']); $i++) {
//Gefüllte Felder
sprintf($identifier, "adresse%02d", $i+1);
echo "<td><input id='$identifier' type='text' value='$_SESSION['merkliste'][$i]'></input></td>";
}
for(;$i < 24; $i++) {
//übrige, leere Felder
sprintf($identifier, "adresse%02d", $i+1);
echo "<td><input id='$identifier' type='text' value=''></input></td>";
}
Nun willst du auch im Formular die Adresse hinzufügen, und das mit JS.
Also machen wir es so:
Code:
//address ist eine variable, die die Adresse enthält, die gemerkt werden soll.
for(var i = 1; i <= 24; i++) {
var identifer = (i < 10) ? "adresse0" : "adresse";
identifier += i;
if(document.getElementById(identifer).value == '') document.getElementById(identifer).value = address;
}
Das Grundgerüst der Seite bleibt bestehen. Also hat der Knopf "Merken" eine Funktion. Wie schon zu Beginn geschrieben, hab ich ein Brett vor dem Kopf um dem Knopf zu sagen "lege diese Anschrift auf den Merkzettel".
Aber ein form-submit wird das Formular leeren... Das "Grundgerüst" bleibt schon bestehen, aber eigentlich ist es äquivalent zu einem Reload...
Das Ganze könnte man noch ein bisschen optimieren, aber für ein grobes Beispiel sollte es reichen. Ein paar Sätze noch zum OT:
Da ich aber nicht vorhabe den Beruf eines Programmierers zu ergreifen, reichen mir "Hausfrauenkenntnisse"
Nichts für ungut: Es gibt einen Grund, warum es die Berufsgruppe der Programmierer gibt. Wahrscheinlich kann jeder mit Fahrausweis autofahren, aber das heisst nicht, dass auch jeder ein professionelles Rennen fahren kann. Oder genauso wie jeder seine Steuern machen kann und muss, kann noch nicht jeder auch die Buchhaltung in einem Unternehmen machen.
Das heisst nicht, dass du professioneller Programmierer sein musst, um programmieren zu können, aber mehr als "Hausfrauenkenntnisse" müssen es halt schon sein.
ich möchte es soweit lernen das ich mir weiterhelfen kann.
Joa, das wäre dann so etwa eine Programmiererlehre. Aber es gibt auch nicht zum Spass den Beruf des studierten Softwareingenieurs. Die Lernkurve ist nach oben offen...
Außerdem kann ich Englisch, und ich kann es auch relativ gut verstehen. Allerdings habe ich auch noch etwas anderes zu tun als mich dann mit einer englischen Seite zu beschäftigen.
Also entweder willst du es lernen oder dann halt nicht. Wenn du einigermassen gut in englisch bist, wirst du englische Dokumentationen zu Programmiersprachen schneller lesen als deutsche. Darauf könnte ich fast wetten. Das Verständnis über einige Details kann man ja dann immer noch auf deutsch bekommen, aber irgendwann sollte man auch da den Dreh raushaben. Aber ohne den Willen, auch englisch zu lesen, wird das nie passieren.
Und viele, die eben auf solche Seiten verweisen, können selbst nicht mehr Englisch wie ich.
Also ist das Problem nur die Zeit? Wenn man keine Zeit hat, etwas zu tun, bezahlt man eben jemanden, das zu übernehmen...
Und ich hätte mich gefreut wenn als erste Antwort gekommen wäre "Hast du mal über Sessions nachgedacht?" Diese Antwort die ich bekommen habe klingt fast wie "Schau bei Google".
Das klingt nicht nur so. Aber du wurdest ja auch nicht gelyncht, als du nachfragtest. Es sollte klar sein, dass wir nicht dieselbe Frage x Mal beantworten wollen. Auch eine Grundregel für Programmierer: Erstmal googlen.
Und wie schon mehrfach erwähnt, habe ich bisher keine Möglichkeit gefunden, eine Variable per Klick in die Session zu bekommen.
Ja, und dafür hast du schon mehrere Lösungsansätze bekommen. Wir gehen immer von einem Mindestmass an Grundwissen aus; gerade, wenn es sich um ein professionelles Einsatzfeld handelt. Mit dem Grundwissen hättest du dein Problem schon längst (und in weniger als 3 Tagen) gelöst.
Ja, ich werde mir die Zeit nehmen mich damit näher zu beschäftigen. Und wenn ich immer nachfragen muss. Allerdings habe ich in der Buchhaltung genug zu tun. Ich möchte mir nur weiterhelfen können.
Verlangt dein Chef, dass du in der Buchhaltung das Formular neu schreibst? Bei dieser Komplexität sind das unter 300 Tacken für einen guten Programmierer (alles geschätzt, bin kein professioneller Webentwickler) und die Sache ist innert eines, vielleicht innert 2 Tagen erledigt
Und ich nehme das nicht als persönlichen Angriff. Ich verlange auch nirgends, das mir einer was fertig programmiert. Das möchte ich nämlich selbst machen, damit ich weiß warum was wie klappt.
Und hier ist der grosse Unterschied zwischen Privat und Professionell: In der Informatik funktioniert sehr viel. Aber das wenigste ist auch korrekt. Als Beispiel seien deine Datenbankabfragen genannt: Funktionieren tut es, ja. Aber es ist nicht korrekt, weil unsicher. Und dieses Problem ist auch oft der Grund, warum bei Upgrades von Systemen plötzlich nichts mehr läuft: Die Spezifikationen sind gleich geblieben, aber die Implementierung hat sich geändert, im Hoffen darauf, dass sich die Applikationsprogrammierer an die Spezifikationen gehalten haben. Und wenn das nicht der Fall war, kostet das. Massiv.
Ein anderes Beispiel: Eure Hauptseite ist https-Verschlüsselt. Aber gerade eure admin-Subdomain ist es nicht. Dort, wo das Adminpasswort eingegeben wird. Nicht, dass das deine Schuld ist - aber es zeigt schon im kleinen Kreis, wo die Probleme liegen können.
Und privat macht das fast nichts. Im professionellen Bereich ist sowas unverzeihlich, unter anderem, weil es viel zu oft passiert.
Im Übrigen ist das Passivwissen: Wenn du etwas siehst, wirst du sagen können: "Oh, so funktioniert das also. Macht Sinn". Aber du wirst es nicht selbst schreiben können.
PS: Deinen Ansatz habe ich noch nicht getestet, da ich noch anderweitig beschäftigt bin.
Kein Problem. In diesem Post wirst du ohnehin einen besseren Ansatz finden.
*Seufz*
Siehst du, ich will dir das Programmieren nicht ausreden. Aber Programmieren ist halt "ganz oder gar nicht". Ich zum Beispiel kann kein französisch. Punkt. Braucht man nicht zu diskutieren. Ich verstehe vieles, aber ich kann nicht richtig schreiben oder sprechen. Kann ich mich mit anderen auf französisch verständigen? Ein bisschen, mit viel Entgegenkommen der anderen Seite. Aber das ist nicht "Können".
Und beim Programmieren ist es ähnlich: Lesen und so halb verstehen reicht nicht. Die Kür des Softwaredesigns muss man zwar als Programmierer nicht unbedingt beherrschen, aber die (mathematischen) Grundlagen sehr wohl.
Aber naja. Ich klinke mich hier mal aus und räume das Feld für diejenigen, die sich fachlich besser auskennen. Du bist immer willkommen, wenn du spezifische Fragen zu einem Ansatz hast, aber du bist noch gar nicht in der Lage, Ansätze richtig zu verarbeiten (bzw. Code davon zu erstellen), weil dir die Grundlagen fehlen. Privat wäre mir das ja noch egal, aber in diesem Bereich wird sich das wohl ellenlang hinziehen, solange kein Grundwissen da ist.
Den Code hast du eigentlich schon fixfertig (möglicherweise mit leicherten Fehlern, die lecht zu beheben wären) von mir bekommen (wenn er auch nicht optimal ist) und dein momentanes Problem sollte gelöst sein. Dass es langfristig so nicht funktionieren wird, wissen wir alle.
Gruss
cwriter