Tom: mehrere forms generieren

Beitrag lesen

Hello,

ich sitze da gerade an einer ähnlichen Aufgabe.
Allerdings habe ich über die Jahre einen schönen Fundus aufgebaut, wie man welches Detailproblem lösen kann und manchmal auch _muss_

Trotzdem bleibt Programmierung Philosophie.

Strukturiere die Anforderungen!

Benötigst Du immer eine Datenbank für Deine Seiten?
Gibt es Seiten, auf dénen man sich nicht anmelden muss?

Gibt es ein statisches Container-Konzept für Deine HTML-Seiten, oder werden alle Seiten frei über die Datenbank konfiguriert?

PHP ist zwar (theoretisch) eine strukturierte Programmiersprache, die man strict nach Nassi Shniderman http://de.wikipedia.org/wiki/Nassi-Shneiderman-Diagramm benutzen kann, das würde ich aber aller IT-Ausbildung zum Trotz nicht tun.

Es gibt "return" und "exit". Wenn man die mit Bedacht einsetzt, wird ein riesiges Projekt plötzlich übersichtlich. Das einzige Problem, das einem bleibt, ist das der Reentranz ( ein Bisschen 'was steht dazu unter http://de.wikipedia.org/wiki/Threadsicherheit). Die muss man irgenwie abfangen.

Man kann es bei der herkömmlichen Technik nicht vermeiden, dass ein User ein Formular gleichzeitig mehrmals öffnet. Irgendwie funktioniert das immer, da HTTP ja verbindungslos ist und die Browser das Anfordern jeder beliebigen Seite zu jeder Zeit ermöglichen.

Bei Datenveränderungen muss man also immer erst überprüfen, ob dieselbe nicht gerade schon durchgeführt wurde.

Deinen Resourcen solltest Du etwas mehr Vertrauen schenken.
Das heißt nicht, dass Du deren Verfügbarkeit nicht überprüfen sollst.
Es heißt: sie fallen selten aus. Schon wenn eine einzige fehlt, kann man mit einer Fehlermeldung abbrechen.

Das geht z.B. ganz einfach mit Hilfe von exit:

###################################################################################

HTML-Output

###################################################################################

function html($out)
{
?><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML>
<HEAD>
  <TITLE><?php echo $_SESSION['title']; ?></TITLE>
  <link rel="stylesheet" type="text/css" href="standard.css">

<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">

<META NAME="Author" CONTENT="Chris Fischer, www.bitworks.de">
  <META NAME="Keywords" LANG="de" CONTENT="">
  <META NAME="Description" CONTENT="">
  <META NAME="Robots" CONTENT="Index,Follow">
  <META NAME="Revisit" CONTENT="After 5 days">
  <META name="date" content="<?php echo date('Y-m-d', filemtime(__FILE__)); ?>">

<!-- the very local style -->
  <style type="text/css">

html,  body
    {
      height:100%;
      //width:100%;
      font-family:century gothic, tahoma, arial,sans-serif;
    }

</style>

</HEAD>

<BODY>
  <?php
    echo $_SESSION['msg_top'];

echo "\n<form action=".$_SERVER['PHP_SELF'].
         " enctype="multipart/form-data"".
         " method="post">\n";
    echo $out;
    echo $_SESSION['formbody'];
    echo $_SESSION['btn'];
    echo "</form>\n";

echo $_SESSION['msg_bot'];
  ?>
</BODY>
</HTML><?php

exit;
}

?>

Das soll nur einfach mal eine Anregung sein.
Gewisse Standardwerte werden am Anfang des Hauptprgramms eines Scriptes gesetzt. Ich mache das grundsätzlich in der Session.

Zu jedem beliebigen Zeitpunt (wenn irgendwas kneift) kann ich

html($out)

aufrufen. "$out" kann in jedem Moment frei belegt werden.
Danach ist das Script vorbei.
Zwischendurch werden keinerlei Ausgaben vorgenommen.
Alle Ausgaben werden in globalen Containern oder in $out gesammelt.
Globale Container werden nur für variable Seitenelemente benutzt, die auf jeder Seite vorkommen müssen, $out ist variabel und enthält am Ende meistens fast die ganze  HTML-Kernseite.

Harzliche Grüße vom Berg
http://www.annerschbarrich.de

Tom

--
Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
Nur selber lernen macht schlau