[doch nicht mehr gelöst] PHP und HTML in dem selben Artikel
Eingetragen von Igniting (49)
am 04.12.2012 - 11:00 Uhr in
am 04.12.2012 - 11:00 Uhr in
Guten morgen allerseits!
Ich arbeite zur Zeit für Mein Diplomprojekt mit Drupal und steh momentan bei einem Problem an.
Ich versuche Daten die auf der Website eingegeben werden in eine MySQL Datenbank zu schreiben.
Das Problem ist daher folgendes:
Ich verwende HTML um die Felder zu erstellen, in denen der User die Daten eingibt, jedoch benötige ich PHP um die Daten in die Datenbank zu schreiben.
Und Das funktioniert nicht.
Ich will einfach das wenn der Button gedrückt wird die Daten dann in der Datenbank stehen.
Der Code ist folgender, wenn ich ihn außerhalb von Drupal verwende funktioniert er auch soweit
<html>
<head>
<title>Datenbanktest_Html</title>
</head>
<body>
<form action="Datenbanktest_Php.php" method="post"/>
Anrede: <input type="text" name="anrede" /> <br />
Vorname: <input type="text" name="vorname" /> <br />
Nachname: <input type="text" name="nachname" /> <br />
Straße: <input type="text" name="strasse" /> <br />
PLZ: <input type="int" name="plz" /> <br />
Wohnort: <input type="text" name="wohnort" /> <br />
Fon: <input type="int" name="fon" /> <br />
Fax: <input type="int" name="fax" /> <br />
E-Mail: <input type="text" name="email" /> <br />
<input type="submit" value="In die Datenbank!" />
</form>
</body>
</html>
<?php
//Datenbankverbindung
$mysqlhost="localhost"; // MySQL-Host angeben
$mysqluser="root"; // MySQL-User angeben
$mysqlpwd=""; // Passwort angeben
$mysqldb="test"; // Gewuenschte Datenbank angeben
$connection=mysql_connect($mysqlhost, $mysqluser, $mysqlpwd) or die
("Verbindungsversuch fehlgeschlagen");
mysql_select_db($mysqldb, $connection) or die("Konnte die Datenbank nicht
waehlen.");
//Datenbankverbinung Ende
$anrede = $_POST["anrede"];
$vorname = $_POST["vorname"];
$nachname = $_POST["nachname"];
$strasse = $_POST["strasse"];
$plz = $_POST["plz"];
$wohnort = $_POST["wohnort"];
$fon = $_POST["fon"];
$fax = $_POST["fax"];
$email = $_POST["email"];
$eintrag = "INSERT INTO adressen
(anrede,vorname,nachname,strasse,plz,wohnort,fon,fax,email)
VALUES
('$anrede','$vorname','$nachname','$strasse','$plz','$wohnort','$fon','$fax','$email')";
$eintrag = mysql_query($eintrag);
//Verbindung zum Server trennen
mysql_close($connection);
?>
Könnt ihr mir sagen wo der Fehler liegt?
Wir haben uns auch schon überlegt das mit einem iFrame zu lösen, da kennen wir uns aber nicht gut genug aus. Würde das etwas bringen?
Vielen Dank schonmal für alle Antworten!
mfg Igniting
- Anmelden oder Registrieren um Kommentare zu schreiben
Hast du den das Eingabeformat
am 04.12.2012 - 11:11 Uhr
Hast du den das Eingabeformat php in drupal aktiviert?
Oder du machst die Eingabe
am 04.12.2012 - 11:16 Uhr
Oder du machst die Eingabe mit dem Modul webform.
http://drupal.org/project/webform
phasenkasper schrieb Hast du
am 04.12.2012 - 11:28 Uhr
Hast du den das Eingabeformat php in drupal aktiviert?
Habr ich gemacht
Oder du machst die Eingabe mit dem Modul webform.
http://drupal.org/project/webform
Ich schaue mir gerade das Modul Webform an, würde aber gerne wissen, ob man damit auch diese Daten dann in eine Tabelle speichern kann?
Die Daten von webform werden
am 04.12.2012 - 11:39 Uhr
Die Daten von webform werden in irgendeiner Tabelle in der Datenbank gespeichert. Einfach mal über phpmyadmin suchen.
Igniting schrieb Ich schaue
am 04.12.2012 - 11:40 Uhr
Ich schaue mir gerade das Modul Webform an, würde aber gerne wissen, ob man damit auch diese Daten dann in eine Tabelle speichern kann?
Jo, kann man, macht das Modul sogar automatisch.
Wir setzen derzeit recht häufig Webforms z.B. im Rahmen von Gewinnspielen ein. Wenn das Gewinnspiel beendet ist, können wir das Formular an sich deaktivieren, ohne die dazugehörigen Nodes zu ändern oder auf unveröffentlicht zu stellen.
Und der Clou: einen Export z.B. für Excel stellt das Modul auch gleich bereit. Besser geht's also kaum.
Tipp am Rande: die Anrede würde ich als Select List oder Radio Buttons realisieren. Das hat den Vorteil, dass Du vorgegebene Werte hast, nach denen Du z.B. filtern kannst. Sonst hast Du da statt "Frau" auf einmal "faru" stehen, oder so ähnlich. Das muss echt nicht sein.
Vielen Dank!
am 04.12.2012 - 11:47 Uhr
Ich schaue mir gerade das Modul Webform an, würde aber gerne wissen, ob man damit auch diese Daten dann in eine Tabelle speichern kann?
Jo, kann man, macht das Modul sogar automatisch.
Wir setzen derzeit recht häufig Webforms z.B. im Rahmen von Gewinnspielen ein. Wenn das Gewinnspiel beendet ist, können wir das Formular an sich deaktivieren, ohne die dazugehörigen Nodes zu ändern oder auf unveröffentlicht zu stellen.
Und der Clou: einen Export z.B. für Excel stellt das Modul auch gleich bereit. Besser geht's also kaum.
Tipp am Rande: die Anrede würde ich als Select List oder Radio Buttons realisieren. Das hat den Vorteil, dass Du vorgegebene Werte hast, nach denen Du z.B. filtern kannst. Sonst hast Du da statt "Frau" auf einmal "faru" stehen, oder so ähnlich. Das muss echt nicht sein.
Die Daten von webform werden in irgendeiner Tabelle in der Datenbank gespeichert. Einfach mal über phpmyadmin suchen.
Vielen Dank, das hat uns sehr Weitergeholfen!
Wir Versuchen es jetzt mit Webform, und hoffen das jetzt Alles passt.
Aber wenns wieder fragen gibt schauen wir wieder hier vorbei :D
mfg Igniting
Doch noch eine Frage
am 04.12.2012 - 12:42 Uhr
Ok, haben doch noch eine kleine Frage gefunden.
Kann man die Tabelle ändern in der die Daten geschrieben werden?
Oder ist das immer die fix eingestellte webform_submittet_data?
danke schonmal im Voraus?
mfg Igniting Ideas
Man kann das sicherlich
am 04.12.2012 - 14:22 Uhr
Man kann das sicherlich händisch irgendwie umprogrammieren.
Frage wäre halt, was Du damit überhaupt machen, wie Du die Daten weiterverarbeiten willst. Die exportierten Daten (z.B. CSV) kannst Du ja auch wieder in eine externe Datenbank außerhalb von Drupal importieren. Ist vermutlich der unkompliziertere Weg, gerade wenn es sich um ein einmaliges Projekt handelt.
Naja ich benutze Drupal für
am 10.12.2012 - 14:50 Uhr
Naja ich benutze Drupal für meine Facharbeit und ich sollte die Daten, die man durch Webform bekommt, in die Tabellen speichern, wie sie in meinem Klassendiagramm vorgesehen sind. Die Daten werden später mit verschiedenen MySql-Abfragen weiterverarbeitet.
Warum setzt Du das Ganze
am 10.12.2012 - 16:28 Uhr
Warum setzt Du das Ganze nicht dann als Custom Modul um? Du wirst für die Facharbeit sicherlich auch den Code beschreiben müssen. Die Form-API von Drupal ist ziemlich stark und die Daten können mit drupal_write_record() sehr einfach in die Datenbank geschrieben werden. Hierfür musst Du keine Input-Felder in HTML anlegen, wie im ersten Post, auch der ganze mysql_query Kram ist sinnfrei. Drupal erledigt das alles direkt für dich.
Zudem ist dein Code oben noch offen wie ein Scheunentor, die Datenbank könnte man in Sekunden hacken -> SQL-Injection
Ich hab vor einiger Zeit mal ein entsprechendes Tutorial zu diesem Thema verfasst:
http://www.sense-design.de/tutorial/drupal-formular-datenbank-speichern
Danke für deine schnelle
am 10.12.2012 - 16:37 Uhr
Danke für deine schnelle Antwort Sense.
Ich werde werde mir dein Tutorial anschauen und deinen Rat befolgen, da es wahrscheinlich am Sinnvollsten ist, wenn ich mir wirklich ein eigernen Modul mache.^^
Und vergiss den Quatsch den
am 10.12.2012 - 16:42 Uhr
Und vergiss den Quatsch den Du oben gepostet hast! Das hat nix mit Drupal zu tun ... sondern führt vollkommen daran vorbei, da Du keine Funktionalität des Drupal Core verwendest.
Gut eine kleine Frage habe
am 11.12.2012 - 11:44 Uhr
Gut eine kleine Frage habe ich noch und zwar:
Wohin wird die Tabelle gespeichert, welche ich in der .install Datei mit hook_install() implementiere?
$schema['example'], die
am 11.12.2012 - 12:22 Uhr
$schema['example'], die Tabelle heisst dann "example", ist ja alles nur ein Beispielcode, den du deinen Anforderungen entsprechend anpassen und umbenennen musst.
Ja das ist mir schon klar,
am 11.12.2012 - 12:39 Uhr
Ja das ist mir schon klar, jedoch finde meine erstellte Tablle nicht
<?php
/**
* Implements hook_schema().
*/
function beton_schema() {
$schema['beton'] = array(
'fields' => array(
'id' => array('type' => 'serial', 'unsigned' => TRUE, 'not null' => TRUE),
'name' => array('type' => 'varchar', 'length' => 255, 'not null' => TRUE, 'default' => ''),
'phone' => array('type' => 'varchar', 'length' => 255, 'not null' => TRUE, 'default' => ''),
'mail' => array('type' => 'varchar', 'length' => 255, 'not null' => TRUE, 'default' => ''),
),
'primary key' => array('id'),
);
return $schema;
}
Nun müsste ja die Tabelle beton erstellt werden, wenn ich das Modul in Drupal aktiviere, jedoch erscheint diese nicht.
Ich habe mir auch einige Tutorials angeschaut, aber mein Fehler ist mir trotzdem unklar.
Du hast auch alle Dateinamen
am 11.12.2012 - 12:44 Uhr
Du hast auch alle Dateinamen und Funktionen mit "beton_" versehen?