PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Verschiedene Befehle mit Buttons starten



Enterprise
01-01-2005, 14:32
Hallo,

Ein frohes neues Jahr 2005 an alle.

Habe eine Frage ?
Ich möchte mit verschiedene Buttons verschiedene Befehele ausführen.Aber bei meinem Script werden die Befehle alle
auf einmal ausgeführt.
Hier mein kleines Script:
<HTML>
<HEAD>
<TITLE>externe Befehlsausführung mit "exec"</TITLE>
</HEAD>
<BODY>
<?PHP
$lampe1on = exec ("./lpic 1 on", $test);
$lampe2on = exec ("./lpic 2 on", $test);
$lampe1off = exec (" ./lpic 1 off", $test);
$lampe2off = exec (" ./lpic 2 off", $test);
?>
<?PHP
$lampe1off = exec (" ./lpic 1 off", $test);
?>
<form action="<?=htmlentities($_SERVER['PHP_SELF'])?>" method="post">
<input type="submit" name="$lampe1on" value="Lampe1on">
<input type="submit" name="$lampe2on" value="Lampe2on">
<input type="submit" name="$lampe1off" value="Lampe1off">
<input type="submit" name="$lampe2off" value="Lampe2off">
</form>
</HTML>

Kann mir jemand dabei helfen?

mfg

Enterprise

Pingu
01-01-2005, 15:13
Habe eine Frage ?
Ich möchte mit verschiedene Buttons verschiedene Befehele ausführen.Aber bei meinem Script werden die Befehle alle
auf einmal ausgeführt.
Es werden ja auch alle Befehle einfach hinteinander ausgeführt:

[..]
$lampe1on = exec ("./lpic 1 on", $test);
$lampe2on = exec ("./lpic 2 on", $test);
$lampe1off = exec (" ./lpic 1 off", $test);
$lampe2off = exec (" ./lpic 2 off", $test);
[..]
Wobei die letzte Ausgabezeile des jeweiligen Befehls in der jeweiligen Variable gespeichert wird. Warum? Denn Die jeweiligen Variablen werden nicht weiter verwendet.

Wenn ich Dich aber richtig verstehe, möchtest Du, daß eine bestimmte Aktion nur ausgeführt wird wenn ein bestimmter Button gedrückt wird, also ein bestimmter Wert an das Script geliefert wird. (Hilfreich die Einführung auf php.net: http://de3.php.net/manual/de/tutorial.forms.php)
In Deinem Fall würde ich allen Buttons den gleichen Namen geben und dan unterschiedliche Werte verwenden, z.B:
<input type="submit" name="aktion" value="Lampe1on">
<input type="submit" name="aktion" value="Lampe2on">
<input type="submit" name="aktion" value="Lampe1off">
<input type="submit" name="aktion" value="Lampe2off">

Dann kann im Skript die jeweilige Aktion selektiert und ausgeführt werden:
switch ($_POST["aktion"]) {
case "Lampe1on":
exec("./lpic 1 on");
break;
case "Lampe2on":
exec("./lpic 2 on");
break;
case "Lampe1off":
exec("./lpic 1 off");
break;
case "Lampe2off":
exec("./lpic 2 off");
break;
} // switch ($_POST["aktion"])

Jetzt muß das Ganze noch zusammengesetzt werden. Dies überlasse ich dann aber Dir.

Pingu

maceis
01-01-2005, 15:59
Falls Du auf dem Server SSI verwenden kannst, könnte man das mit Links lösen, die das entsprechende Programm aufrufen.

Enterprise
01-01-2005, 16:00
Danke für die Hilfe.

Habe zwei Files erstellt einmal eins mit html und das zweite als
PHP.
Wenn ich dann das html File öffne erscheinen vier Buttons wenn ich z.B: Den ersten Button drücke kommt ein Fehler der lautet:

Parse error: parse error, expecting `T_CASE' or `T_DEFAULT' or `'}'' in /srv/www/htdocs/Test/listing1-8j.php on line 3

Die line 3 zeigt auf den Case Befehl = ***case "Lampe1on":

Was kann ich tun ?

Enterprise
02-01-2005, 11:52
Wie kann ich überprüfen ob der POST Befehl richtig die
Variable zum PHP Script sendet ?

Pingu
02-01-2005, 12:12
Parse error: parse error, expecting `T_CASE' or `T_DEFAULT' or `'}'' in /srv/www/htdocs/Test/listing1-8j.php on line 3

Die line 3 zeigt auf den Case Befehl = ***case "Lampe1on":

Was kann ich tun ?
Wenn Du einfach abschreibst, überprüfen, ob dies richtig geschehen ist.

Die line 3 zeigt auf den Case Befehl = ***case "Lampe1on":
^^^--- das sollte so nicht da stehen.
Ansonsten steht in der Fehlermeldung was falsch ist. Ein "Parse error", d.h ein Konstrukt ist nicht richtig geschrieben und der Interpreter/Compiler hier speziell der Parser, der vorher in Aktion tritt, weiß somit nicht was gemeint ist. Also ähnlich einem Grammatikfehler in der deutschen Sprache. Während wir Menschen an dieser Stelle mehr oder weniger Fehlertolerant sind und auch falsche Sprachkonstrukte richtig interpretieren/lesen können, kann dies der PHP-Interpreter nur bedingt. In einem solchen Fall empfiehlt es sich daher, gegebenfalls im Manual nachzusehen wie das Konstrukt richtig geschrieben wird. In diesem Fall ist dies bei dem folgenden Link zu finden: http://de.php.net/manual/de/control-structures.switch.php


Wie kann ich überprüfen ob der POST Befehl richtig die
Variable zum PHP Script sendet ?
Mit dem Manual auf php.net (http://de.php.net/manual/de/) vertraut machen und dort z.B. folgende Funktion finden: http://de2.php.net/var-dump

Pingu

Enterprise
02-01-2005, 17:39
Habe von der PHP Homepage sie switch case Funktion getestet.
Das funktioniert nicht bei mir.
Hier das Script:
<?php
$i=0;
switch ($i) {
case 0:
** echo "i ist gleich 0";
** break;
case 1:
** echo "i ist gleich 1";
** break;
case 2:
** echo "i ist gleich 2";
** break;
default:
** echo "i ist weder 0, 1 noch 2";
}
?>
Es müßte doch Jetzt bei case 0 das echo auf Schirm erscheinen.
Aber es kommt der Fehler:
Parse error: parse error in /srv/www/htdocs/Test/listing1-8l.php on line 5

Für mich heißt das , dass das Problem mit dem echo zu tun hat.
Aber welches Problem ?

Pingu
02-01-2005, 18:10
Frage: War im Orginal auch das Zeichen * vorhanden?

Jenachdem wie Du die Frage für Dich selbst beantwortest, kommst Du auf die richtige Lösung.

Pingu

PS: Blindes Copy'n'Paste führt nicht immer zu einer funktionsfähigen Lösung.

Enterprise
02-01-2005, 18:52
Nein bei mir sind die Sterne nicht drin.

maceis
02-01-2005, 18:58
hallo pingu -

wie ich auf Deine hp sehe bist Du anscheinend auch ein macuser ;)
grüße aus Nürnberg von einem anderen macuser.

btw.
das mit den Sternen kommt mir auch spanisch vor !

Pingu
02-01-2005, 19:12
Und andere "Nicht-Leerzeichen", die dann beim Copy'n'Paste hier ins Forum einfach nur als * angezeigt werden?

Pingu

Enterprise
02-01-2005, 19:21
Danke

Habe den Fehler gefunden.
Bei mir war es nicht sichtbar.
Habe alles an den Rand deletet, dann ging es.
Jetzt noch eine Frage dazu.
Beim ausführen wird auf das PHP Script umgeschaltet.
Die Ausführung soll aber im Hintergrund ausgeführt werden.
Giebt es dazu eine Möglichkeit.

Gaert
03-01-2005, 08:32
Danke

Habe den Fehler gefunden.
Bei mir war es nicht sichtbar.
Habe alles an den Rand deletet, dann ging es.
Jetzt noch eine Frage dazu.
Beim ausführen wird auf das PHP Script umgeschaltet.
Die Ausführung soll aber im Hintergrund ausgeführt werden.
Giebt es dazu eine Möglichkeit.

Wenn ich dich recht verstehe suchst du sowas wie das hier:
http://www.naken.cc/mikehup.php

Gruß,

Gaert