Paulchen: mehrere forms generieren

Hallo Freunde der Programmierung :-),

ich habe ein Problem was ich absolut nicht gelöst kriege:

Bin grade dabei ein Loginmenü zu basteln welches auf alle möglichen Fehler überprüft wird (Verbindung hergestellt?, Datenbank vorhanden?, Passwort und Name richtig übergeben?). Nun habe ich mir gedacht, wenn ein Fehler auftaucht verweise ich wieder auf die index.php (also die Seite des Loginmenüs), andererseits möchte ich auf eine andere Seite verweisen wenn alles in Ordnung ist. Das Ganze schaut zur Zeit so aus:

<?php
 if(isset($_POST['einloggen']))
 {
  if(!mysql_connect('localhost','user'))
  {
   echo '<form action="index.php" method="post">';

if(!mysql_select_db('projektverwaltung'))
   {
    if(!$_POST['mitarbeiter'] && !$_POST['passwort'])
    {
     echo 'Folgender Fehler trat auf:<br><br>Benutzer und/oder
           Passwort nicht angegeben';
    }
    die('Datenbank konnte nicht gefunden werden');
   }
   die('Verbindung fehlgeschlagen');
   echo '</form>';
  }
  else
  {
   echo '<form action="formular.php" method="post">';

$mitarbeiter_name=$_POST['mitarbeiter'];
   $password=$_POST['passwort'];

echo '</form>';
   }
  }
?>

Ich hoffe, ihr könnt mir (schnellstmöglich) helfen

MfG dit Paulchen :-P

  1. 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

    1. Hi Tom,

      Du schreibst ja sehr ausführlich, wie es sich halt für nen Informatiker gehört ;-).....Also es ist ein bisschen schwierig zu verstehen was du mir sagen willst, aber ich werd schon dahinter steigen.....Das mit dem "return" und "exit" hört sich ganz gut an (werde ich mal ausprobieren)....Auf jeden Fall danke ich dir erstmal für deine schnelle Antwort

      LG dit Paulchen :-P