Haumis wbb hilfe (http://haumis-wbb-hilfe.de/wbb2/index.php)
- ...:::Trainingscenter-wbb2:::... (http://haumis-wbb-hilfe.de/wbb2/board.php?boardid=75)
-- Allgemeines zur wbb-Software (http://haumis-wbb-hilfe.de/wbb2/board.php?boardid=77)
--- Vom Monitor zur Datenbank (http://haumis-wbb-hilfe.de/wbb2/thread.php?threadid=1218)


Geschrieben von haumi am 23.01.2011 um 12:32:

icon1 Vom Monitor zur Datenbank

Wie kommen die Daten vom PC in die Datenbank?

Hier erst mal ein einfaches Formular in html:
Im Board sind diese Formulare etwas unübersichtlich,
weil hier noch viele Abfragen mit eingebaut sind.
Das Grundgerüst ist aber auch hier gleich!

code:
1:
2:
3:
4:
5:
6:
7:
<form action=“eingangs.php method=“post“>

<input type=“text“ name=“vorname“> 
<input type=“text“ name=“nachname“>

<input type=“submit“ name=“send“
</form>


ein Formular wird durch die tags <form> </form> begrenzt.
Das Eingangstag benötigt aber noch einige Infos.
1)wohin sollen die Daten aus dem Formular gesendet werden?
2)Mit welcher http-Methode sollen die Daten versendet werden.

Zu1) das Ziel der Sendung wird durch das Attribut „action“ angegeben.
Diesem Attribut wird die Zieladresse zugeordnet.
Hier ist es die Datei „eingangs.php“

Zu2) unter http gibt es 2 Methoden der Datenversendung
a) get
b) post
Ich gehe später noch auf die Unterschiede ein.
Diese Info wird dem Attribut „method“ übergeben.

Anhand der ersten Zeile weiß der Browser nun, das er die Daten die im Formular eingegeben werden an das php-Script eingangs.php mit der „Versandart“ POST senden muss.

Die beiden input-tags erzeugen auf dem Monitor je ein einzeilges Eingabefeld,
in dem man Text eintragen kann. Hier noch OHNE Beschriftung!

Das input-Tag „type=“submit“ erzeugt einen Absendebutton.
Wenn dieser angeklickt wird, weiß der Browser, das er jetzt die Daten absenden muss.

Und los geht die Sendung an den Server.
Wird keine Domainangabe gemacht so sucht der Browser die Zieldatei im eigenen Rootverzeichnis.
(Hier z. B. Wbb2)

Hier nun mal der minimale Aufbau dieses (Auswerte)Scripts.

code:
1:
2:
3:
4:
5:
6:
7:
<?php
$v_name = $_POST['vorname'];
$n_name = $_POST['nachname'];

$db_sendung("INSERT INTO mitglied (vorname,nachname) VALUES ($v_name,$v_name)";
 $senden = mysql_query($db_sendung);
?>


Empfängt nun ein Server, auf dem php installiert ist eine solche Anfrage. So erkennt er an der Endung .php das es sich um eben eine php-Anfrage handelt und leitet diese Anfrage an den php-Interpreter weiter.

Dieser php-Interpreter nimmt sich nun die Anfrage vor und erstellt eine Art Antwortformular.
Alles was außerhalb der php-tags (<?php> und ?>) liegt wird 1:1 wieder in das Antwortformular hinein kopiert. (meist ist das ja html-code.)
Alles was zwischen den php-tags liegt muss nun vom php-Interpreter verarbeitet werden und NUR das Ergebnis wird OHNE php-Code zurückgeliefet.

Nun muss man wissen, das php über eine Menge vorgefertigter Variablen verfügt.
Somit auch über eine Systemvariable „_POST“ .
Erkennt nun der php-Interpreter das Daten mit der http-Methode POST ankommen, so reserviert er sofort im Arbeitsspeicher einen Speicherplatz, der mit $_POST angesprochen werden kann.
In diesen Speicher legt er nun die mit POST ankommenden Daten ab und zwar nach dem Prinzip:
Name – Wert.
Name ist der im input-tag unter name eingetragene Name, Wert ist der Inhalt des Eingabefeldes, was vom Anwender ausgefült wurde.
Somit befindet sich, ohne das wir etwas gemacht haben, serverseitig im Arbeitsspeicher eine Variable $_POST welche unsere beiden Eingaben als Name/Werte-Paare enthält.
Mit $_POST['vorname'] und $_POST['nachname'] können wir nun auf diese beiden Variablen zugreifen und sie nach Wunsch weiter verarbeiten.

Damit wir nun diese Eingaben weiter verarbeiten können, legen wir diese in Zwischenspeicher ab, die wir hier $v_name und $n_name benennen.
Sobald der php-Interpreter ein $-Zeichen sieht, weiß er, das hier eine Variable folgt.
Ist diese Variable im Arbeitsspeicher noch nicht vorhanden legt der php-Interpreter diese Variable an.

Im Arbeitsspeicher befindet sich jetzt folgendes:

Ein Speicherplatz namens $_POST mit den zwei Wertepaaren vorname : Peter , nachname : Meier
zwei Speicherplätze $v_name und $n_name, die zur Zeit noch leer sind.

Nun kommen wir zu dem Gleichheitszeichen!
Dieses Gleichheitszeichen = zwischen $v_name und $_POST['vorname']; ist kein mathematisches Gleichheitszeichen und kann auch so nicht als Formel verstanden werden.
Dieses Gleichheitszeichen ist in php ein ZUWEISUNGSOPERATOR.
Was bedeutet das?
Der php-Interpreter findet wie schon erwähnt die Bezeichnung $v_name und reserviert sofort einen (noch leeren) Speicherplatz. Womit dieser Speicherplatz gefüllt wird, steht auf der rechten Seite des Gleichheitszeichens.
Meist werden hier einige Arbeistgänge notwendig (z. B. Eine Addition zweier Zahlen die in Variablen gespeichert sind $a + $b) Das Ergebnis wir nach Durchführung in der Variablen die links vom Gleichheitszeichen steht abgespeichert (zugewiesen).
In unserem Fall haben wir jedoch nur die Variable $_POST mit dem Inhalt ['vorname'] stehen.
Somit wird der Variablen $v_name auch nur der Inhalt dieser Variablen $_POST['vname'] zugewiesen.
So haben wir nun die Variable $_POST['vname'] verdoppelt und auch in der Variablen $v_name abgespeichet.

Anm. Man kann natürlich auch darauf verzichten und die Variable $_POST['vname'] im weiteren Programm verwenden, es ist jedoch sinnvoll für die weitere Verarbeitung sogenannte Arbeistvariable zu erstellen.

Nun, wie geht es weiter?
Ich setze jetzt einfach mal voraus, das der Server schon eine Verbindung zur Datenbank aufgebaut hat (Erklärung wie , folgt) und dort eine Tabelle „mitglied“ mit den beiden Tabellenfeldern vorname und nachname existiert.
PHP verfügt über eine ganze Menge Befehle, die die Korrespondenz mit einer MySQL-Datenbank durchführen.
Vorgriff auf MySQL:
Einen SQL Befehl um Daten in eine Datenbanktabelle einzuschreiben ist der Befehl: INSERT INTO.
Dieser erwartet minimal den Tabellennamen, die zu füllenden Tabellenfelder und dass, was in diese Tabellenfelder eingeschrieben werden soll.
In unserem Fall sieht der Befehl so aus:
INSERT INTO mitglied (vorname,nachname) VALUES ($v_name,$v_name)

INSERT INTO ist der Befehl zum Anlegen eines neuen Datensatzes.
mitglied ist der Name der Tabelle wo dieser Datensatz eingefügt werden soll.
(vorname,nachname) (in Klammern!) sind die Tabellenfelder die ausgefüllt werden sollen.
VALUES teilt der Datenbank mit das nun die einzuschreibenden Werte folgen
($v_name,$v_name) in Klammern!) sind die Werte mit denen die Tabellenfelder gefüllt werden sollen.

Dieser SQL-Befehl speichern wir nun ebenfalls in einer Variablen $db_sendung ab.

Mit dem php-Befehl „mysql_query“ dem wir als Argument die Variable mit dem SQL-Befehl $($db_sendung) übergeben,
senden wir nun die beiden Inhalte von $v_name und $n_name an die Datenbank
und diese schreibt auf Grund des INSERT INTO-Befehls die beiden Werte in die vorgegebenen Tabellenfelder des neuen Datensatzes.

Der php-Befehl „mysql_query liefert im Erfolgsfall den Wert true (wahr) und wenn der Befehl aus irgendeinem Grund nicht ausgeführt werden konnte false (falsch) zurück.
Diese Information kann man noch in das Antwortformular einschreiben und dem "Monitor" mitteilen, ob seine Anfrage ausgeführt wurde oder nicht.


Das ist mal ganz grob der Weg, den Daten vom der Eingabe am Monitor zur Datenbank durchwandern.

Sollte etwas nicht ganz verstanden werden dann bitte Nachfragen.
Das Thema ist wirklich sehr umfangreich und hier habe ich nur mal den Versuch unternommen die Funktion etwas verständlich darzustellen.

LG
haumi



Geschrieben von sabine am 04.02.2012 um 09:04:

 

Ist das das wo man Daten in die Datenbank bekommt, so das ich sich User das dann Downloaden können ? st8
Ich kriege das nämlich nicht hin st11



Geschrieben von Steinadler am 04.02.2012 um 09:09:

 

Sehr gut erklärt haumi st6 st6 st12 st12 st12



Geschrieben von sabine am 04.02.2012 um 09:12:

 

Für jemanden der das kann, bzw. versteht ist es wohl gut. Nur leider versteh ich nichts davon. st3



Geschrieben von haumi am 04.02.2012 um 10:38:

 

Hi Sabine,
Da bist du falsch.
Diese Erklärung ist ganz allgemein während du sicher das Arbeiten mit einer "Datenbank ala jgs" meinst.
Da können wir uns mal drüber unterhalten und dein Wissen erweitern das du das verstehst und auch selbst machen kannst.

LG
haumi



Geschrieben von nobody am 04.02.2012 um 10:54:

 

Vertraue dem Haumi, er wird es dir langsammmm beibringen und auch gut erklären.


nobody



Geschrieben von sabine am 04.02.2012 um 10:57:

 

Ich bin ja noch im Lernfähigen Alter st11


Forensoftware: Burning Board 2.3.6, entwickelt von WoltLab GmbH