PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Einträge von einer Liste in die andere Liste übertragen...



Jor
15-04-2008, 15:46
Hallo *,

ich möchte Folgendes umsetzen: Beim Aufruf einer Seite, in der zwei Listen existieren (gegenüber liegend angeordnet), wird die linke Liste automatisch mit Einträgen gefüllt. Aus dieser sollen x Einträge ausgewählt werden können und mit einem Klick auf ein Button von der linken in die rechte Liste übernommen werden. Dort stehen die Einträge zur Übernahme (per Referenz in die Datenbank und durch weiteren Klick auf einen anderen Button) bereit, bzw. soll man hier auch Einträge wieder löschen können.
Nach langem Grübeln und googeln habe ich noch keinen rechten Ansatz gefunden, hat jemand von euch ein Umsetzungsbeispiel oder kann mir mit einem Tipp weiter helfen?

undefined
15-04-2008, 18:41
Falsches Forum, das ist ganz klar eine Javascript Geschichte.
Kleines Beispiel, Diese funktion dreht alle Inhalte eines <select> Tags.


function ReverseSelectBox(o)
{
var BNo = new Array();
var obj = document.getElementById(o);
for ( var i = 0; i < obj.childNodes.length; i++ ) {
// FIXME Gecko CDATA TextNode Unterdruecken!
if ( obj.childNodes[i].nodeName.toLowerCase() == 'option' ) {
BNo.push( obj.childNodes[i].cloneNode(true) );
}
}

for ( var i in obj.childNodes ) {
if ( obj.childNodes[i].firstChild && obj.childNodes[i].nodeType == 1 ) {
obj.replaceChild( BNo.pop(), obj.childNodes[i] );
}
}

}

Jor
15-04-2008, 20:00
Hallo undefined,

danke für deine Antwort. Yep, ich wollte grade auf Java-Script verzichten,
meine Seite soll komplett ohne Javascript auskommen. Dennoch werde ich deinen Code ausprobieren. :)

Geht das nicht auch nur mit PHP?:cool:

zenobic
18-04-2008, 13:44
Geht das nicht auch nur mit PHP?:cool:

Hallo, ja . Dazu z.B:
* eine Form bei jeder Listenänderung submitted werden
* z.B: POST Request -> Daten entsprechend ändern in Datenbank -> Neu auslesen

msi
18-04-2008, 15:46
Hallo, ja . Dazu z.B:
* eine Form bei jeder Listenänderung submitted werden
* z.B: POST Request -> Daten entsprechend ändern in Datenbank -> Neu auslesen

nur php ist unschön weil dadurch viele requests erzeugt werden,
bei sowas lieber auf JS setzen.

Blutgerinsel
18-04-2008, 21:40
Schon mal was von Ajax gehört? Das kann sehr wohl eine PHP Geschichte sein

Es viel eher ein "eindeutiges" Ajax Problem

undefined
18-04-2008, 23:08
Schon mal was von Ajax gehört? Das kann sehr wohl eine PHP Geschichte sein

Es viel eher ein "eindeutiges" Ajax Problem
Ja ja, mit Kanonen auf Spatzen schießen :D
Völlig überflüssig und zudem wollte er ja kein JavaScript verwenden ;)

Blutgerinsel
19-04-2008, 10:53
Ja ja, mit Kanonen auf Spatzen schießen :D
Völlig überflüssig und zudem wollte er ja kein JavaScript verwenden ;)
Naja Ajax gibts schon ewig ist aber jetzt sinnloserweise in Mode....

Die erzeugte Serverlast interessiert offentsichtlich auch Niemanden mehr wie man x Boards schon feststellt.

Diese Technik jedenfalls mit Ajax ein abhängiges Select zu füllen gibts jedenfalls ziemlich häufig. Von daher lag es nahe....

Aber wenn das rein eine PHP Sache sein soll, ist es ohnehin kein Problem...

Mitunter auch ein Vorteil der Superglobalen wie $_REQUEST($_POST / $_GET)
Mit Schleife durchlaufen und damit einen zweiten String erzeugen

undefined
19-04-2008, 13:36
Wie schon geschrieben man kann das mit einem Script ganz einfach Lösen.
Man muß ja nicht immer alles den anderen nachmachen. ;)
Wenn man hier noch eine sortieren funktion hinzufügt geht das wunderbar.


function moveItem(n,v)
{
var o = document.getElementById(n);
var t = document.createElement("option");
var a = document.createAttribute("value");
a.nodeValue = v;
t.setAttributeNode(a);
t.appendChild(document.createTextNode(v));
o.appendChild(t);
}

function dragItem(n,v)
{
var f = document.getElementById(n);
moveItem( (n == 'left') ? 'right' : 'left', v );
for ( var i in f.childNodes )
{
try {
if (f.childNodes[i].getAttribute('value') == v)
f.removeChild( f.childNodes[i] );
} catch(e) { continue; }
}
}

Der Beispiel Code müßte unter Gecko/IE /Opera und Konqueror funktionieren.

Jor
21-04-2008, 08:31
Danke für eure Antworten. :)
Ich möchte die Umsetzung nach wie vor ohne Javascript durchführen, die Serverlast ist mir nicht egal, aber in diesem Fall zu vernachlässigen. :cool:
Was mich dabei gestört hatte war, dass keine Mehrfachauswahl machbar ist
(oder aber ich weis nicht wie), diese werde ich jetzt über ein seperates Feld lösen, in das ein Datensatzbereich eingetragen werden kann.
Das 'Sammelfeld' wird dann über die Auswahl per Klick (Liste) und über die Eingabe ins Bereichfeld gefüllt.

Allen nochmal ein Dankeschön... :)

undefined
21-04-2008, 14:30
Hier ist einer Lesefaul ;)
Siehe selfhtml <select multiple="multiple">....

BLUESCREEN3D
21-04-2008, 16:02
Oder auch Checkboxes, die zusammen ein Array bilden:

<input type="checkbox" name="array[0]">

Blutgerinsel
21-04-2008, 17:57
Man sollte auch User mit deaktiviertem Javascript nicht Steine in den Weg legen....
Tut man es dennoch ist es unprofessionell....

Wenn die Page nicht geht ist es dem User egal, er surft woanders...

undefined
21-04-2008, 20:47
Man sollte auch User mit deaktiviertem Javascript nicht Steine in den Weg legen....
Tut man es dennoch ist es unprofessionell....

Wenn die Page nicht geht ist es dem User egal, er surft woanders...
Das ist mal wieder eine der Steinzeit Moral Anekdoten die sich krampfhaft in den Köpfen mancher Programmierer festhalten. Leute wir leben in Zeiten von web 2, wer sich an solche Aussagen festhält ist unprofessionell und bremst sich und seine Kreativität aus ;) Wir habe gerade bei den ganzen Browsern genug damit zu tun es auf jeden gangfähig oder ein gleiche Darstellung zu machen, wer nun auch noch glaubt sich daran halten zu müssen, sollte den Beruf wechseln. ;)

Blutgerinsel
21-04-2008, 22:30
Das ist mal wieder eine der Steinzeit Moral Anekdoten die sich krampfhaft in den Köpfen mancher Programmierer festhalten. Leute wir leben in Zeiten von web 2, wer sich an solche Aussagen festhält ist unprofessionell und bremst sich und seine Kreativität aus ;) Wir habe gerade bei den ganzen Browsern genug damit zu tun es auf jeden gangfähig oder ein gleiche Darstellung zu machen, wer nun auch noch glaubt sich daran halten zu müssen, sollte den Beruf wechseln. ;)
Meinst Du?

Nunja meine Seiten sind auch im Worst Case zu 100% funktional.
Das heisst aber auch nicht das ich JS User nicht unberrücksicht lasse.

Mit Web 2.0 kam auch Ajax aus der Versenkung von dem ich wiederrum nichts halte. Warum? Ajax erzeugt unnötige Serverlast und hat nur in 2/10 Fällen einen "sinnvollen Zweck" der die Serverlast rechtfertigt

Wenn ich auf einer Seite bin und spasseshalber JS deaktivere und dabei nur noch Quatsch rauskommt lach ich mich ins Fäustchen....

Das ist alles eine Frage der professionalität und da heisst es Worst Case und Best Case gleichermaßen zu berrücksichtigen...

zenobic
28-04-2008, 13:21
Danke für eure Antworten. :)
Ich möchte die Umsetzung nach wie vor ohne Javascript durchführen, die Serverlast ist mir nicht egal, aber in diesem Fall zu vernachlässigen. :cool:
Was mich dabei gestört hatte war, dass keine Mehrfachauswahl machbar ist
(oder aber ich weis nicht wie), diese werde ich jetzt über ein seperates Feld lösen, in das ein Datensatzbereich eingetragen werden kann.
Das 'Sammelfeld' wird dann über die Auswahl per Klick (Liste) und über die Eingabe ins Bereichfeld gefüllt.

Allen nochmal ein Dankeschön... :)

Kann man sich ein Beispiel ansehen? Daß hört sich interessant an, worher weisst Du dann daß die Einträge valide sind?

Die Problematik mit der Serverlast liesse sich über SESSION Variablen abfangen, man liest Änderungen über die Pfeil-Buttons nur über SESSION-Vars aus und überträgt dann wenn man fertig ist mit einem zusätzlichen Button alle Einträge in die Datenbank.

Jor
08-05-2008, 12:13
Wenn wirklich Bedarf besteht, dann könnte ich das Script der Seite abändern und bereitstellen, so geht es nicht, da die Seite noch unter Verschluss ist. :o

Die Einträge kommen direkt aus einer DB, die Daten werdne vom Admin gepflegt (äähhh, in dem Fall von mir :rolleyes: ), für "live use" würde ich die
die Daten dennoch durch eine zusätzliche Methode jagen, die Plausibilität etc. überprüft.