PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Mehrere Variablen aus PHP per Javascript öffnen


Ihm
2014-02-07, 20:15:14
Irgendwie stehe ich gerade auf dem Schlauch. Vorweg: kein AJAX.
Ich würde gerne folgende Befehle irgendwie zusammenfassen. Welches Trennzeichen ist dafür nötig?

Beispiel:
<div id="reboot" title="Reboot Machine">
<button class="inactive" onclick="exec_dialog('Reboot Machine?', 'action/reboot.php?host=machine1')">reboot</button>
</div>

<div id="reboot" title="Reboot Machine">
<button class="inactive" onclick="exec_dialog('Reboot Machine?', 'action/reboot.php?host=machine2')">reboot</button>
</div>

Folgendes in der Adresszeile bootet "machine1" bzw. "machine2" ordnungsgemäß:
http://xyz.xyz.com/action/reboot.php?host=machineX

Aber wie kann ich mehrere "machines" gleichzeitig rebooten?

Danke

RattuS
2014-02-07, 20:50:33
Selber Key, mehrere Values:
exec_dialog('Reboot Machine?', 'action/reboot.php?host%5B%5D=machine1&host%5B%5D=machine2')
Dekodiert entspricht der QueryString:
host[]=machine1&host[]=machine2
Daraus wird in PHP ein Array in $_GET['host']. var_dump davon:
["host"]=> array(2) { [0]=> string(8) "machine1" [1]=> string(8) "machine2" }

Ihm
2014-02-07, 22:33:10
Selber Key, mehrere Values:
exec_dialog('Reboot Machine?', 'action/reboot.php?host%5B%5D=machine1&host%5B%5D=machine2')
Dekodiert entspricht der QueryString:
host[]=machine1&host[]=machine2
Daraus wird in PHP ein Array in $_GET['host']. var_dump davon:
["host"]=> array(2) { [0]=> string(8) "machine1" [1]=> string(8) "machine2" }

Ja, das war auch mein erster Gedanke, wenn auch ein wenig anders.
Aber dann meldet er sich mit "Unknown Host" zurück.
Einzeln ausgeführt funktioniert alles, nur eben nicht als Aufzählung in einer Zeile.
Was mache ich bloss falsch? :confused:

Sephiroth
2014-02-07, 22:48:17
o.0 Wie wäre es mit über das Array iterieren und für jede Maschine den Befehl auszuführen?

http://www.php.net/manual/en/control-structures.foreach.php
http://de2.php.net/manual/en/function.array-walk.php

RattuS
2014-02-08, 01:52:43
Aber dann meldet er sich mit "Unknown Host" zurück.
Einzeln ausgeführt funktioniert alles, nur eben nicht als Aufzählung in einer Zeile.
Ohne zu wissen, was bei exec_dialog bzw. serverseitig gemacht wird, ist das alles nur der Blick in eine Glaskugel. Wie wäre es mit einem Code-Ausschnitt?

Gibt es denn überhaupt einen Grund, warum beide Anweisungen im selben Request gemacht werden sollen? Sonst hat Sephiroth doch schon recht: mach einfach mehrere Requests hintereinander.


<div id="reboot" title="Reboot Machines">
<button class="inactive" onclick="rebootMachines(allMachines);">reboot</button>
</div>

<script type="text/javascript">

var allMachines = [
'machine1',
'machine2'
];

function rebootMachines(machines) {
var machineCount = machines.length;
for (var i = 0; i < machineCount; i++) {
exec_dialog('Reboot ' + machines[i] + '?', 'action/reboot.php?host=' + machines[i]);
}
};

</script>

patermatrix
2014-02-08, 15:46:45
Nur noch eine kleine Anmerkung zu deinem HTML:

Das id Attribut sollte global, mindestens jedoch innerhalb einer einzelnen Seite eindeutig sein. Zudem sollte man es nicht zum Styling verwenden. Wenn du über reboot einen gemeinsamen Style über beide Elemente legen möchtest, dann solltest du das class Attribut verwenden.
<div class="reboot">...</div>

Ansonsten kann es zu Problemen kommen, wenn du das Element über JS (z.B. jQuery) ansteuern möchtest.