ich bin neu in der PHP-Entwicklung und mache mir gerade Gedanken über
eine Webseite, mit deren Hilfe ich bestimmte SQL-Auswertungen im
Intranet verfübar machen will. Der Zugriff auf die SQL-Selects ist
dabei nicht das Problem, sonst wäre ich hier in der falschen Gruppe.
Ich frage mich, ob es möglich ist, die gesamte Seite bestehend aus
Menue, davon abhängigen Untermenues und dem eigentlichen Inhalt (dem
Ergebnis der Queries) in einer Dynamischen Seite erzeugen zu lassen.
Zu diesem Zweck müsste ich den Status, d. h. die zuletzt gewählte
Aktion des Nutezrs auswerten können.
EIn Link soll nach meinen Anfänger-Vorstellungen immer wieder die
gleiche Startseite aufrufen, dort solll dann in Abhängigkeit der
letzten Aktion eine andere Seite generiert werden. Das erfordert aber,
dass bei einem Klick auf einen Link Variablen geändert werden,
klassisch wohl durch aufruf einer anderen Html-Seite, in der dann z.
B. das Login erfolgt und die Variable login auf true gesetzt wird
(o.ä.).
Kann ich das auch anders und ohne alternative Dateien realisiern ?
Kann man zum Beispiel den Namen des Links von dem man referred wurde
auslesen ? Bin für Hinweise dankbar !
MfG
Martin Fischer
> EIn Link soll nach meinen Anf�nger-Vorstellungen immer wieder die
> gleiche Startseite aufrufen, dort solll dann in Abh�ngigkeit der
> letzten Aktion eine andere Seite generiert werden.
Du suchst Sessions.
Gru�. Claus
Danke für den Hinweis Claus. Allerdings scheine ich mich unprüzise
ausgedrückt zu haben. Mir ging es insbesondere um die Reaktion auf
einen bestimmten Link-Klick; genauer, die Ausführung von Code-Teilen.
Also in etwa: wenn man auf diesen Link klickt, setze den Wert der
VAriablen Aktion auf "true" ...
HAst Du hierfür eine Struktur oder ein Codebeispiel ?
Danke für Deine / Eure Mühen!
Martin
> Das erfordert aber, dass bei einem Klick auf einen Link Variablen ge�ndert werden,
<a href="foo.php?action=bar">Link</a>
<?php
if($_GET['action'] ...
?>
http://www.php.net/manual/de/reserved.variables.php
Micha
mal janz grob ...
class actions{
function actions() {
var _action_array;
$this->_action_array = array(
"save" => array(
"login" => "act.login.inc.php",
"logout" => "act.logout.inc.php",
),
"display" => array(
"login" => "dsp.login.inc.php",
"logout" => "dsp.logout.inc.php",
)
);
}
function getincludefile($actiontype, $action){
return $this->_action_array[$actiontype][$action];
}
}
define("INCLUDEROOT", dirname(__FILE__)."/incl/");
$act = new actions();
if (array_key_exists("display", $_REQUEST)) {
$incf = $act->getincludefile("save", $_REQUEST["save"]);
if(strlen($incf) > 0) require(INCLUDEROOT.$incf);
}
die links die du meins setzen dann per GET action= und/oder display=
anhand der entsprechend gesetzten Variablen in _REQUEST includest du
dann die Dateien die du in der actions-classe f�r die entspr. action
definiert hast.
Fehler und falsche actions usw. musst du nat�rlich vern�nftig handhaben.
komplettere Beispiele kannst du im code von traffstats auf sf finden:
http://sourceforge.net/projects/traffstats/
> HAst Du hierf�r eine Struktur oder ein Codebeispiel ?
>
> Danke f�r Deine / Eure M�hen!
>
> Martin
Klaus
--
Klaus Zerwes
http://www.zero-sys.net
> Ich frage mich, ob es m�glich ist, die gesamte Seite bestehend aus
> Menue, davon abh�ngigen Untermenues und dem eigentlichen Inhalt (dem
> Ergebnis der Queries) in einer Dynamischen Seite erzeugen zu lassen.
Ja.
> EIn Link soll nach meinen Anf�nger-Vorstellungen immer wieder die
> gleiche Startseite aufrufen, dort solll dann in Abh�ngigkeit der
> letzten Aktion eine andere Seite generiert werden. Das erfordert aber,
> dass bei einem Klick auf einen Link Variablen ge�ndert werden
"Eine dynamische Seite" w�rde dann bei Dir "eine PHP-Datei" bedeuten.
Das muss aber nicht gleichzeitig bedeuten, dass es nur unter "einer URL"
erreichbar ist. Entweder kannst Du das wie von Michael vorgeschlagen mit
"?irgendwas=irgendwie&nochwas=anders" machen, oder per mod_rewrite o.�.
Von dem Login mal abgesehen (welches man mit Sessions und/oder HTTP_Auth
macht) sollte eine Ansicht eine URL haben, auf die per HTTP GET
zugegriffen wird - unabh�ngig davon, wie man zu dieser URL hinkam.
Bei Seitenaufrufen, die den Status der Seite ver�ndern (z.B. Daten
�ndern) Mit Formularen und HTTP POST arbeiten. Das Script f�hrt dann die
Aktion aus und leitet mit 302 und Location-header auf eine Anzeige um,
die wieder mit GET geholt wird.
Gr��e, Matthias
> class actions{
> var _action_array;
PHP4 ist tot! Es gibt keinen Grund solch alten Code jemanden zu empfehlen.
MfG, Ulf
nachdem ich mit Eurer Hilfe ein wenig weitergekommen bin, stosse ich
nun auf ein neues Problem:
Meine Seite initialisiert beim Laden einige Variablen, u. a. einen
Usernamen "Gast" und einiges anders. Die Ablaufsteuerung funktioniert
über die Übergabe der Aktionen per $_GET.
Nun habe ich einen Funktionsteil erstellt, der das Abmelden eines
Users übernimmt, der also den Usernamen wieder auf "Gast" setzt, bzw.
setzen soll. Dazu erzeuge ich ein Miniformular mit folgendem HTML-
Code:
switch ($_GET['action'])
{
case 'logout':
$username = 'Gast';
$userid = 0;
$ml = "<br/>";
$ml .= "<form name=\"weiter\" action=\"";
$ml .= $_SERVER['PHP_SELF'];
$ml .= "?action=login\"";
$ml .= "><br />";
$ml .= "<input type=\"submit\" accept=\"logout\" value=\"Ausloggen\"/
>";
$ml .= "</form>";
print $ml;
break;
Das Formular habe ich nur erzeugt, um ein Neuladen der Seite erzwingen
zu können. Dabe iversuche ich - vergeblich - als "action" den Wert
"login" für ein Neueinloggen zu übergeben. Gleichzeitig scheint die
bei der Initialisierung gesetzte Variable gelöscht worden zu sein,
kann es sein, dass bei AUfruf einer Formular-Aktion die PHP-Variablen
anders behandelt werden, als bei einem schlichten Neu-Laden ?
Im Moment fällt mir nur ein zusätzliche Abgleich auf Post-Werte oder
Sessions ein, letztere waren mir aber bisher zu aufwändig, nachdem ich
mich parallel mit HTML/CSS/PHP neu befasse .... Könnt Ihr mir helfen ?
Martin
Martin
> $ml = "<br/>";
> $ml .= "<form name=\"weiter\" action=\"";
> $ml .= $_SERVER['PHP_SELF'];
> $ml .= "?action=login\"";
> $ml .= "><br />";
> $ml .= "<input type=\"submit\" accept=\"logout\" value=\"Ausloggen\"/
>>";
> $ml .= "</form>";
$ml = '<br/>'
. '<form name="weiter" action="'
. $_SERVER['PHP_SELF']
. '?action=login"'
. '><br />'
. '<input type="submit" accept="logout" value="Ausloggen"/>'
. '</form>';
Halte ich f�r �bersichtlicher.
Noch �bersichtlicher w�re es, wenn Du die Teilstrings nach ihrer
Funktion aufteilen w�rdest, wobei Du auch noch die Tatsache nutzen
k�nntest, dass HTML-Attribute auch in einfachen Hochkommas
eingeschlossen werden k�nnen. Das k�nnte dann etwa so aussehen:
$ml = '<br />'
. "<form name='weiter' action='$_SERVER[PHP_SELF]?action=login'>"
. '<br />'
. '<input type="submit" accept="logout" value="Ausloggen"/>'
. '</form>';
Gru�. Claus