[Apache, phpmyadmin, html, PHP, ...] Datenbank mit webbasiertem Zugriff erstellen

B

boss3D

Guest
Hallo!

Ich habe folgende Aufgabe:

Es liegen Daten in Excel-Tabellen zu Mitarbeitern einer Firma vor. Es soll nun eine Datenbank erstellt werden, die folgende Funktionalität und Eigenschaften bietet:
- Jeder MA soll nach dem Schema der bisher benutzen Excel-Tabellen weiterhin seine Daten auf einfachem Wege eingeben können
- MAs sollen sich ihre eigenen Daten auch anschauen können, aber keinen Zugriff auf jene der Kollegen haben
- Ein "Admin" soll Zugriff auf die gesamte Datenbank haben und alle Daten auswerten und, wenn nötig, auch verändern können (sprich, alle Rechte haben)
- Die Daten der Datenbank sollen auf einfachem Wege exportiert werden können (am besten wieder in Excel-Tabellen)
- Es soll eine auf OpenSource-Software basierende Lösung gefunden werden

Und ich habe folgendes Problem:

Für mich ist das absolutes Neuland. Ich habe mich nie wirklich mit Datenbanken, html oder PHP beschäftigt und habe auch keinerlei Programmier-Erfahrungen damit.

Nun gut, nach einiger Recherche und dem Vergleichen verschiedener Möglichkeiten bin ich nun zu folgendem Lösungsansatz gekommen, der mir als der beste erscheint:
- xampp als Basis (Apache als Webserver, MySQL als Datenbank, phpmyadmin zum Managen dieser)
- Erstellung einer einfachen Website mit html ("Onlineformular"), die als "simple Oberfläche" für jeden Mitarbeiter im Netzwerk am Webserver erreichbar sein soll. In das Onlineformular kann dann jeder seine Daten eingeben
- Ein php-Script wertet die von der Website bekommenen Daten aus und sendet sie an die Datenbank
- Nur der "Admin" hat vollen Zugriff (root) auf die Datenbank selbst

Aber jetzt wird's schwammig, weil ich nicht weiß, ob das alles so möglich ist, wie ich mir das weiter vorstelle:
- Einen Login für Website erstellen. Zuordnungen von MAs und Passwörtern in der Datenbank hinterlegen?!

^^ Wäre das alles mal so ungefähr möglich, oder gäb's eine schlauere Variante?
Meine html Website zeigt im Moment jedenfalls ein Formular bestehend aus einer Tabelle, die wiederum aus einigen Dropdown-Auswahlen und Textboxen besteht. Aus dem Netzwerk erreichbar ist die Seite auch. Einen absenden-Button (der das auch macht) gibt's auch schon.
Jetzt gibt's aber wahrscheinlich keine simple Möglichkeit, die gesamte Tabelle auf einen Schlag auszuwerten und an die Datenbank zu senden?! Wenn ich jetzt aber ein PHP-Script schreiben muss, das mir alle gefühlt 100 einzelnen Bestandteile der Tabelle auswertet, werde ich alt dabei ... :( (Screenshots/Code kann ich morgen nachreichen)
Wie mache ich das jetzt am schlauesten?
Wie ich den Login für die Website erstelle, ergoogle ich mir noch selbst. Da melde ich mich wieder, wenn ich auf nichts Vernünftiges komme. Alles weitere danach ...

Danke im Voraus für baldige und hilfreiche Antworten!
 
Ich frage mich ja, warum diese Firma nicht jemanden mit der Aufgabe betraut, der halbwegs Ahnung hat, von dem was er tut.

Weshalb willst du deine Lösung eigentlich in PHP umsetzen, wenn du davon, nach eigener Aussage, keine Ahnung hast? Oder anders gefragt, mit welchen Sprachen hast du denn bereits Erfahrung?
 
Es geht in erster Linie um Lernzwecke, auch wenn am Ende natürlich ein benutzbares Ergebnis rauskommen soll. Ich habe aber gerade wegen der nötigen Einarbeitung in die Materie auch alle Zeit, die ich brauche.

Zum Thema: Ich kann C, Java (nutzt hier aber beides nichts) und glücklicherweise html. Die eigentliche Schwierigkeit für mich ist PHP.
Die Website (also das online Formular) zu erstellen ist kein Problem, aber ab der Erstellung der/des PHP Script(es) zum "Austausch" der Daten zwischen Website und Datenbank wird's schwierig...
 
Also geht es um eine Art von Praktikum?

Weshalb sollte Java in dem Fall keinen Nutzen haben?
Ich persönlich würde an deiner Stelle jedenfalls einen weiten Bogen um PHP machen.
 
ach mensch, wenn ich nich grad prüfungen hätt, könnt ich dir da sicher bissl helfen. php mit html zu verknüpfen ist erstmal grundsätzlich sehr einfach. hmm, gibt da jetzt verschiedene ansätze. gehen wir einmal von einer sehr simplen html seite aus:
Code:
<html>
  <head>
    <title>meine seite</title>
  </head>

  <body>
    hallo welt
  </body>
</html>
so. wie gesagt, sehr sehr simpel. willst du hier jetzt php code einfügen, musst du das mit <?php - code - ?> machen. dabei kannst du die komplette seite damit einklammern und alles per echo ausgeben:
Code:
<?php
  echo '<html>';
  echo '  <head>';
  echo '    <title>meine seite</title>';
  echo '  </head>';

  echo '  <body>';
  echo '    hallo welt';
  // irgendwelcher php code...
  echo '  </body>';
  echo '</html>';
?>
oder auch nur dort, wo du wirklich php code nutzt:
Code:
<html>
  <head>
    <title>meine seite</title>
  </head>

  <body>
    hallo welt
<?php
  // irgendwelcher php code...
?>
  </body>
</html>
ist im übrigen auch wumps, ob du echo 'text'; oder echo "text"; schreibst. bei " kannst du glaube variablen direkt fließend im text unterbringen - was aber auch nicht immer sinnvoll funktioniert - und bei ' musst du immer mit dem string-verbinde-operator . arbeiten. also echo 'test '.$var.' bla'; vs echo "test $var bla" (kann auch andersrum gewesen sein - ich nutze immer ., da mir das irgendwie sicherer ist ^^ ja, wie du siehst werden variablen mittels $ gekennzeichnet. die sind auch NICHT typgebunden. hat seine vor- aber auch seine nachteile. zum bsp kann man sowas basteln:
Code:
  $test = 123;
  $test .= ' huhu';
da wird aus dem integer fix nen string usw usf. ansonsten funzt es nich großartig anders wie c usw mit dem ganzen verzweigungen und schleifen bla. objektorientierung geht auch, wenn man mag. also for-schleifen oder sowas ist wie gewohnt.

man muss es dann halt als .php speichern und es erfordert nen webserver - also sowas wie dein xammp (was ich auch nutze :D ). das hat auch gleich mysql dabei, ist also wunderbar für deine zwecke geeignet. xammp installieren und einrichten und dann haste im xammp verzeichnis einen htdocs-ordner. der entspricht der browsereingabe localhost btw dieses 127.0.0.1 - wenn du also direkt in htdocs ne (test.)php hast, dann kannste die im browser über localhost/test.php aufrufen. ist sie in nem unterordner, dann eben localhost/unterordner/test.php.

als seite zum rumschnüffeln würde ich php.net empfehlen. da findet man alle möglichen funktionen schön erklärt. ein login system war für mich bisher aber die königsklasse. also db-anbindung, formulare via php, das is dagegen nen klacks. aber bei login musste soviel krams beachten >< da müsst ich mich auch selber erstmal wieder reinfuchsen. wie gesagt: lust dadrauf hätt ich tierisch, aber ich muss büffeln :(
 
Ich habe das Gefühl, ich bin nicht so weit weg von dem, was ich als Ergebnis haben will als dass es schlauer wäre, den bisherigen Weg aufzugeben ...

Die Website steht ja schon (wenn auch noch nicht optimal) und mit phpmyadmin kann ich auch was anfangen. Nur das "Zwischenstück" (php-Script) ist halt noch eine Plage, aber auch hier sind mir die "Grundzüge" (Variablen, Schleifen, echo, implode, ...) durch die Einarbeitung schon einigermaßen bekannt. GET und POST verwirrt mich noch, wie das genau mit Arrays läuft fehlt meinem Verständnis noch, und auch das genau Senden zur DB und Abholen von Daten ... aber dafür findet man ja wieder wenigstens einige Tutorials.

Mit viel Zeit kriege ich schon was zusammen. Ich hatte hier in erster Linie auf Input gehofft, ob die Aufgabenstellung mit meinem Lösungsansatz überhaupt vernünftig realisierbar ist, oder ob es was besseres gäbe. Und wenn's so geht, dann vielleicht, dass mir wer mit Tipps durch die "schwammigen Stellen" meines Planes hilft. Eben z. B. wie ich das mit den Rechten nun wirklich machen soll (Login für alle auf der Website? Oder DB mit allen Nutzern anlegen und Rechte in phpmyadmin vergeben?), oder auch, wie ich die Daten, die die MA auf der Website eingeben, möglichst gemeinsam auswerten kann, ohne eine php Abfrage für jede einzelne Textbox/etc machen zu müssen ...

Vielleicht wird das alles morgen klarer, was ich will, wenn ich dann Screens und Codes habe.

[EDIT]
@ DarkMo
Okay, ich brauche nicht Hilfe von 0 weg, sondern eher von 1 weg ... ;)

Die absoluten Basics sind mir durch meine Einarbeitung schon klar. Sooo simple brauche ich es dann zum Glück nicht mehr. Wie gesagt, alles mit html kann ich mir schon zusammenbasteln. Auch einfache php Scripte (wie z. B. Ausgaben von Variableninhalten mit echo, oder von Array-Werten mit implode) gehen schon.

Das mit dem htdocs Ordner, Aufrufen der Website (auch über die IP meines PC vom ganzen Netzwerk aus) habe ich alles schon.
 
Zuletzt bearbeitet:
ah ok, dann is ja gut. das klang nur so, als ob du dich damit noch garnich beschäftigt hattest. aber falls du mit php weitermachen möchtest, kannste mich auch gerne mal fragen.

wegen post und get... diese arrays gibt es IMMER - sind quasi "system-globals" oder wie man nennen mag. get bezeichnet damit daten, die per url anhängsel übertragen werden. post ist dann eher "unsichtbar" und daher zu bevorzugen - nutzbar bei formularen bspw.

als bsp: du baust in deine seite einen link ein, der etwa so aussieht: index.php?name=mustermann&vorname=max
bis ? ist es die url, danach folgen die get-parameter, die per & verknüpft werden können. kannst da also beliebig viele dranhauen. zuerst kommt der parameter-name, dann dessen wert, durch = getrennt. nach klicken des links kannst du also in der index.php mittels php auf $_GET['name'] (was den wert mustermann hat) und auf $_GET['vorname'] (-> max) zugreifen. somit kannst du daten über seiten hinweg (klingt irgendwie doof) mitgeben/retten bla.

post geht hier einen anderen weg. das get zeugs kann ja auch manuell da reinbauen. also man schreibt einfach selber diese url + parameter oben rein und kann damit auch durchaus unfug anrichten. bei post funzt das natürlich nicht. da muss man tatsächlich das formular ausfüllen und absenden. heisst aber glaube nicht, dass das total sicher ist ^^ gibt da mE auch irgendwelche hacker-tricksereien. aber soweit isses dann bei mir auch noch ned gediegen ><

jedenfalls baust du ein formular in deinem html:
Code:
<form name="form1" action="[B]index.php[/B]" method="[B]get[/B]">
  <input name="[B]name[/B]" value="[B]mustermann[/B]" type="text">
  <input name="[B]vorname[/B]" value="[B]max[/B]" type="text">
</form>
so, hier haste nun genau nix gewonnen, denn die eingetragenen daten werden wieder per get-systematik übertragen. die input-felder-namen sind dann die parameter namen und deren inhalte eben die werte bla. jetzt machste als methode aber post, und du hast den gewünschten effekt. es steht nix mehr oben in der adresszeile, aber du bekommst die daten dennoch. diesmal eben über das $_POST array in vergleichbarer manier (dass du da oben im bsp das mit value nich brauchst, weiste denk ich mal oder? klang zumindest jetzt so - war nur schöner fürs bsp ^^).
 
Na, dann war's ja ein glücklicher Zufallstreffer, dass ich von Anfang an immer POST genommen habe ... ;)

Ja, so kommt mir das eh bekannt vor: Ich habe in meiner php-Abfrage auch gesagt, $_POST['benutzername']

Seit 2 Tagen arbeite ich jetzt an der Aufgabe, 17 habe ich noch (okay, 21 mit zuhause arbeiten), nur bevor's hier weitere Verwirrung gibt. Ich habe nur jetzt nichts zum Herzeigen, weil ich zuhause sitze und das Zeugs am Firmen-Rechner ist.
 
Wofür ich jetzt erstmal noch ne gute Idee bräuchte, wäre folgendes: Wenn ein MA seine Daten in das online-Formular (Website) eingibt, sind die "voneinander abhängig". Also, zuerst wählt er bspw. aus dem Dropdown seine Tätigkeit, dann soll irgendwie die Möglichkeit kommen, für diese Tätigkeit ein Produkt zu wählen, und dann noch für diese Tätigkeit an diesem Produkt eine Stundenanzahl einzugeben.
Bis jetzt kann man in meinem Formular nur alle drei Daten unabhängig voneinander eingeben.

^^ Kommt wer mit, was ich meine?

Wie realisiere ich das im html Code am besten? (Idee reicht, Code kriege ich dann schon hin)
 
sowas wird mMn mit javascript gemacht. also bei onselect? als eventauslöser des ersten dropdown-menüs wird eine js-funktion aufgerufen, die die nächste drop-down-menü-inhaltsliste zurechtbaut - eben je nach dem gewählten im ersteren. das kann man dann immerfort führen. aber dieses "wissen" ist jetzt auch schon paar jährchen alt - kA ob das nu ausser mode is und was tolleres neues existiert :/ mir hats immer gereicht, auch wenn ich selber erst wieder googlen müsst, wie das nu genau funzt ^^
 
Hallelujah ... ich hatte auf ne html Lösung gehoft :(

Immerhin weißt du, was ich meine, aber wenn ich jetzt mit JavaScript auch noch komme, verpfusche ich alles. Das wird mir zu steil. Vielleicht wäre es in meinem Fall besser, die Daten zwar unabhängig voneinander eingeben zu lassen, dann aber irgendwie in der DB entsprechend zusammenzufügen?!
Am Ende soll's wieder vernünftig in einem exportierten Excel Dokument landen ...

Muss ich noch weiter überlegen ...

Morgen schaue ich mal, dass ich den Login auf der Website hinkriege.
 
Dann würde ich lieber gwt nehmen:
GWT Project
Mal abgesehen davon, dass das zwei völlig unterschiedliche Ansätze sind, die man nicht unbedingt miteinander vergleichen kann, weshalb würdest du GWT gegenüber Play vorziehen?
 
Zuletzt bearbeitet:
Leichter in der Anwendung vor allem wenn man sieht wie viel Ahnung der TO in Websprachen und dessen Funktion hat. In GWT kann man die komplette Seite samt Funktionalität in Java schreiben und selbst die Client / Server Verbindung wird mit Java gekapselt.
 
Wäre für ihn eventuell wirklich besser, wenn ich mir seine Kommentare bezüglich JavaScript so ansehe. Habe selbst nur leider noch nicht mit GWT gearbeitet. Ansonsten hätte ich es vielleicht auch empfohlen.
Letztendlich sind beide Varianten besser als so eine Bastellösung mit PHP.
 
Hallelujah ... ich hatte auf ne html Lösung gehoft :(
unschön, aber eventuell möglich: nen aktualisieren button in das formular einbauen oder sowas. wenn du dann kategorie 1 gewählt hast, musste aktualiseren drücken, er lädt die seite neu und du kannst anhand des übergebenen wertes mittels php die dropdowns füllen. is halt wie gesagt nich unbedingt knorke, aber wäre ein workaround ^^

und js da mit reinzufummeln macht den brei doch nu auch ned mehr fett. lagerst den js code aus. also so, wie du auch css reintüdelst. hier mal das bsp aus meiner letzten kleinen spaß seite:
Code:
          <head>
            <title>APCR vs AP</title>
            <meta http-equiv="content-type" content="text/html; charset=utf-8" />
            <link href="apcr.css" rel="stylesheet" type="text/css" media="all" />
            [B]<script src="apcr.js" type="text/javascript"></script>[/B]
          </head>
in der apcr js ist mein code, fertig. in der html datei selber sieht man dann nur sowas hier:
Code:
...<a href="[B]javascript:toggle_type[/B]('.$row['ID'].');" id="ta'.$row['ID'].'" class="tab_link">'.$row['Type'].'</a>...
bei nem link is das auslösen natürlich ebbes simpler ^^ wie gesagt, bei sonem dropdown wirste mal schauen müssen, obs sowas wie onSelect gibt. also <input ... onSelect="js...">. jedenfalls wird nicht allzuviel am html code geändert. was du brauchst, sind allerdings id's für deine html elemente. siehste bei meinem link auch da oben. über die id wähle ich dann das element aus um es zu ändern. das $row geblubber ist übrigens auch db gelumbe.

(ehe sich wer wundert: das war eine per php generierte statische html seite, die dennoch filterbar sein sollte. daher js. wollte einfach die htm zippen und rumreichen ohne dass die anderen dazu nen webserver usw brauchen ^^)
 
Die Grafiklib ist änlich wie in SWING aufgebaut nur wird bei Programmstart in JS umgewandelt. Zum stylen wird einfaches CSS verwendet. HTML kann man auch verwenden. Lohnt sich echt sich damit auseinander zu setzten. Vor allem wenn man schon Java kann...
 
Ich vermute mal, er wird trotz der (besseren) Alternativen irgendwas Halbgares mit PHP zusammenfrickeln und sich darüber freuen, wenn es am Ende halbwegs funktioniert.
 
Wofür ich jetzt erstmal noch ne gute Idee bräuchte, wäre folgendes: Wenn ein MA seine Daten in das online-Formular (Website) eingibt, sind die "voneinander abhängig". Also, zuerst wählt er bspw. aus dem Dropdown seine Tätigkeit, dann soll irgendwie die Möglichkeit kommen, für diese Tätigkeit ein Produkt zu wählen, und dann noch für diese Tätigkeit an diesem Produkt eine Stundenanzahl einzugeben.
Bis jetzt kann man in meinem Formular nur alle drei Daten unabhängig voneinander eingeben.

^^ Kommt wer mit, was ich meine?

Wie realisiere ich das im html Code am besten? (Idee reicht, Code kriege ich dann schon hin)

Nur mit HTML wirst du das nicht gelöst bekommen, da HTML statisch ist. Du kannst wo du aber eh schon mit php arbeitest das Formular "teilen" also führst du deine Arbeitnehmer einfach durch mehrere Schritte. Schritt 1 "Tätigkeit wählen" und bestätigen -> Schritt 2 "Produkt wählen" und bestätigen -> Schritt 3 "Stunden eintragen" und bestätigen. Erst danach trägst du die Daten in die Datenbank an. Die Daten aus Schritt 1 werden jetzt im Hintergrund mit übergeben und du kannst diese zur Erstellung des Dropdowns für Schritt 2 Nutzen. Gleiches dann mit den Daten von Schritt 1+2 für Schritt 3 usw.

Die im "Produktiveinsatz" von PHP gängige Lösung wäre Wohl PHP in Kombination mit AJAX
 
Zurück