Suche gutes Tutorial für Formulare mit Datenbank?

Alles, was PHP betrifft, kann hier besprochen werden.

Suche gutes Tutorial für Formulare mit Datenbank?

Postby arty4u » 12. July 2008 00:35

hallo,

ich habe nun einen kleinen einstieg in PHP & MYSQL geschaft und möchte nun versuchen per Formular ein Paar daten in die Datenbank einzutragen.

Leider kann ich nur formulare optisch erstellen und wess den hintergrund nicht so direkt. habe bereits ein paar tutorials seiten durchgelesen aber was ich vermisse ist ein learning by doing tutorial. viele tutorials die ich gefunden habe erklären nur einiges und sind dann einfach offen. ich als anfänger kann mir den rest nicht denken.

Darum wollte ich fragen ob jemand ein kennt oder vielleicht schnell erstellt. Es würden bereits 3 felder reichen.

Ich hoffe ihr könnt mir helfen^^
Bin ein Einsteiger in die PHP Welt sowie MYSQL.
Bitte habt geduld mit mir ;-)
arty4u
 
Posts: 20
Joined: 11. July 2008 04:15

Postby arty4u » 12. July 2008 01:26

vielleicht kann mir ja jemand helfen habe schon angefangen:

Mein Formular (form_1.php):
Code: Select all
<?php
    include 'inc/connect_server.php';
    include 'inc/connect_db.php';
?>

<form action="./Form_1.php" method="post">
   <input type="text" name="Name" value="Ihr Name" /><br>
   <input type="text" name="Inhalt" value="Ihr Inhalt dazu" /><br>
   <input type="text" name="Mail" value="Ihre E-Mail" /><br>
   <input type="text" name="Datum" value="Aktuelles Datum" /><br>
   <input type="text" name="Icq" value="ICQ-NR." /><br><br>
   <input type="submit" /><input type="reset" />
</form>


die dateien aus dem inc ordner für die verbindung:

connect_db.php:
Code: Select all
<?php
     $db = mysql_connect('localhost', 'arty', 'abbuzzen');
     mysql_select_db('artydb');
     $res = mysql_query("SELECT * FROM `artyfm`;");
?>


connect_server.php:
Code: Select all
<?php
    error_reporting(E_ALL);
    define('MYSQL_HOST',     'localhost');
    define('MYSQL_USER',     'arty');
    define('MYSQL_PASS',     'abbuzzen');
    define('MYSQL_DATABASE', 'artydb');
?>


meine tabellen struktur:

erstellt mit create_table.php:
Code: Select all
<?php
    error_reporting(E_ALL);

    include 'inc/connect_server.php';
    // Konfigurationsdatei laden

    @mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS) OR
        die("Keine Verbindung zur Datenbank. Fehlermeldung:".mysql_error());
    mysql_select_db(MYSQL_DATABASE) OR
        die("Konnte Datenbank nicht benutzen, Fehlermeldung: ".mysql_error());

    // Hier kann man jetzt MySQL-Querys senden
    mysql_query("CREATE TABLE artyfm
    (
             ID     INT AUTO_INCREMENT PRIMARY KEY,
             Name   VARCHAR(250),
             Inhalt TEXT,
             Mail   VARCHAR(250),
             Datum  DATETIME,
             ICQ    VARCHAR(250)
    );");
    echo "Die Tabelle artyfm wurde angelegt";
?>


Ich weiss nun nicht wieman die Verarbeitung ausführt und dann anschliessend die daten in die datenbank schreibt.
Bin ein Einsteiger in die PHP Welt sowie MYSQL.
Bitte habt geduld mit mir ;-)
arty4u
 
Posts: 20
Joined: 11. July 2008 04:15

Postby Nobbie » 12. July 2008 09:53

Am besten liest Du erst einmal ein Tutorial, wie man Formulare auswertet, beispielsweise das Quake Tutorial:

http://tut.php-quake.net/formulare.html

Wie man einen Datensatz in MySQL einfügt, hast Du ja schon getestet, das mußt Du dann nur noch anschließen. Auch dazu gibt es natürlich das Tutorial von Quake:

http://tut.php-quake.net/mysql-insert.html
Nobbie
 
Posts: 8761
Joined: 09. March 2008 13:04

Postby arty4u » 12. July 2008 16:13

also google suche kann ich noch nutzen^^

ich habe bereits einige seiten abgesucht aber ich versteh diese halt einfach nicht. man man man alle wissen es aber keiner will es erklären das ist immer so typisch eh^^

also viele erklären es ja nur teilweise!
Bin ein Einsteiger in die PHP Welt sowie MYSQL.
Bitte habt geduld mit mir ;-)
arty4u
 
Posts: 20
Joined: 11. July 2008 04:15

Postby Wiedmann » 12. July 2008 16:24

also viele erklären es ja nur teilweise!

Und was wird nicht erklärt? (bzw.: was ist "teilweise"?)
Wiedmann
AF Moderator
 
Posts: 17106
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby arty4u » 12. July 2008 17:06

ja es werden immer nur beispiele gezeigt aber kein beispiel das man komplett nachmachen könnte
Bin ein Einsteiger in die PHP Welt sowie MYSQL.
Bitte habt geduld mit mir ;-)
arty4u
 
Posts: 20
Joined: 11. July 2008 04:15

Postby Wiedmann » 12. July 2008 17:14

Naja, wo happerts denn genau?

Im Prinzip hast du 2 getrennte Sachen.:
a) Wie mache ich ein Formular und wo sind die Daten die übermittelt werden
b) wie schreibe ich Daten in eine Datenbank

Für beides sollte es doch Anleitungen/Beispiele geben (im PHP-Manual z.B.)

Beide Aktionen kannst du so erst einmal getrennt voneinander im Do-It-Yourself-Verfahren verstehen lernen.

(Beides dann zu Verbinden ist anschliessend simpel und muss nicht wirklich mehr erklärt werden...)
Wiedmann
AF Moderator
 
Posts: 17106
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby Nobbie » 12. July 2008 19:56

arty4u wrote:ich habe bereits einige seiten abgesucht aber ich versteh diese halt einfach nicht. man man man alle wissen es aber keiner will es erklären das ist immer so typisch eh^^


Dann solltest Du in Betracht ziehen, eh, dass für Dich programmieren zu schwer ist. Es kann nicht jeder programmieren, nur weil er es will.

Und ein Anrecht auf eine mundgerechte Erklärung (im Schuldeutsch: Nachhilfe) hast Du im Rahmen eines Internetforums ganz sicher nicht.

Gewöhne Dich also schon einmal daran, dass dieses zu den Dingen gehört, die man nicht einfach mal so nach ein paar Stunden schon kann. Da muss man sich einarbeiten, lesen, testen, programmieren, debuggen usw. etc. pp. - das ist zeitaufwändig und nichts für "zwischendurch".
Nobbie
 
Posts: 8761
Joined: 09. March 2008 13:04

Postby arty4u » 13. July 2008 01:00

ich weiss ich bin nicht gerade jemand der nur gradmal html kann und dann sofort alles können möchte.

ich bin dessen sehr bewusst das es lange dauert und recht kompliziert werden kann und dass, das meiste man selber lernen muss.

ich kenne z.b. die Programmier sprache C und die fällt mir nicht schwer aber php da hab ich die probleme halt das mit der datenbank wie man diesmacht und so das verwirrt mich voll.

ich dachte in solchen foren helfen leute einem bis alles läuft aber anscheinend irre ich mich da.

ich weiss das so ein formular kein grosser aufwand ist für Coder und habe jetzt jemanden gefunden der mir hilft. das script hatte er in 5 min fertig mit erklärung daher habe ich genau diese hilfe hier im forum erwartet.

ich weiss ja nicht wie weit ihr dafür zuständig seit aber find ich schon schade den support hier.
Bin ein Einsteiger in die PHP Welt sowie MYSQL.
Bitte habt geduld mit mir ;-)
arty4u
 
Posts: 20
Joined: 11. July 2008 04:15

Postby Hanspeter Thöni » 13. July 2008 07:56

Nun, wie wäre es z.B. mit einem Buch?

http://www.galileocomputing.de/katalog/buecher/titel/gp/titelID-1300

Ich persönlich habe mich auch beim meinem Einstieg in PHP/Mysql mit einem Buch schlau gemacht.
Gruss Hanspeter
User avatar
Hanspeter Thöni
 
Posts: 233
Joined: 17. August 2004 10:29
Location: Schweiz

Postby arty4u » 13. July 2008 10:46

ja ich glaube ich sollte mir mal ein buch zulegen^^
Bin ein Einsteiger in die PHP Welt sowie MYSQL.
Bitte habt geduld mit mir ;-)
arty4u
 
Posts: 20
Joined: 11. July 2008 04:15

Postby Nobbie » 13. July 2008 11:32

>ich weiss ja nicht wie weit ihr dafür zuständig seit aber find ich schon schade den support hier.

"Wir/Ihr" (wer ist "wir/ihr"?) sind gar nicht dafür zuständig.

Erstens ist das hier sowieso kein "Support" Forum, sondern ein freies Forum für freie Software, und zweitens werden in Foren dieser Art selbstverständlich nicht exklusive Lehrveranstaltungen abgehalten, sondern bei konkreten technischen Problemen (die im Kontext des Forums stehen) Hinweise zur Lösung gegeben (soweit jemand die Lösung kennt und sie hier mitteilt).

Du hast aber kein technisches Problem, sondern bist in der Programmierung von MySQL (u.a.) unerfahren. Diese Erfahrung mußt Du Dir allein aneignen - dazu gibt es Tutorials und Bücher.
Nobbie
 
Posts: 8761
Joined: 09. March 2008 13:04

Postby arty4u » 14. July 2008 15:18

alles klar danke^^ :P
Bin ein Einsteiger in die PHP Welt sowie MYSQL.
Bitte habt geduld mit mir ;-)
arty4u
 
Posts: 20
Joined: 11. July 2008 04:15

Postby Walter_vdV » 17. July 2008 10:41

Hallo arty4u,
ich habe durchaus Verständnis für Dein Problem. Dir fehlen einfach ein paar Zusammenhänge und da kann man Bücher, Tutorials etc. wälzen wie man will, aber eine Erklärung für diesen Zusammenhang wird nirgendwo beschrieben. OK, ich zeige Dir jetzt mal an einem Bsp. wie ich das mache, vielleicht werden Dir dann die Zusammenhänge klar bzw. Du hast was, was funktioniert auf das Du dann aufbauen kannst. Ich arbeite nicht mit Post und auch nicht mit Formularen. Da werden jetzt wieder einige Vertreter der reinen Lehre aufschreien aber was solls. Du brauchst eine Datei in der Daten eingegeben werden und eine Datei, die die Daten verarbeitet.
Eingabedatei (nehmen wir eine reine HTML also Eingabe.html):
Im Headerbereiche also zwischen <head> u. </head> definierst Du einen Javascript-Bereich

<script type="text/javascript">

function SendeDaten() {
}

</script>

mit der Funktion SendeDaten.
Zwischen <body> u. </body> definierst Du nun zwei Input-Element und ein Button-Element bzw. irgendein html-Element dem Du ein onClick-Ereignis zuweist.

<input id="inp1" value="">
<inbut id="inp2" value="">
<button onClick="SendeDaten()">Absenden</button>
und noch ein iFrame folgendermassen:
<iframe style="position:absolute;top:0;left:0;width:0;height:0" src="" name="frDummy" scrolling=no></iframe>

In die Funktion SendeDaten schreibst Du nun folgende Zeilen:

var vTransfer = this.document.all["inp1"].value + "|" + this.document.all["inp2"].value;
this.frDummy.location.href = "LeseDatei.php?trfParameter=" + vTransfer;

Nun brauchen wir noch die Datei Lesedatei.php:
Ich gehe davon aus, dass Du weisst wie man eine Verbindung zur Datenbank aufbaut, wie man SQL-Befehel absetzt etc.

<?php

$arrParameter = explode("|",$_GET["trfParameter"]);

$sql = "INSERT INTO meinetabelle SET";
$sql .= " Feld1='".$arrParameter[0]."',";
$sql .= " Feld2='".$arrParameter[1]."'";
...
usw.

?>

Du hast nun ein funktionierendes Bsp., das zwar nicht exakt Deiner Frage entspricht, aber mit dem kannst Du nun arbeiten und spielen und Dich weiterbilden und vielleicht erkennst Du daraus auch Zusammenhänge.
Noch eines, stelle in einem Forum nie Forderungen auch wenn es manchmal mühselig ist, die richtigen Antworten zu bekommen, Du machst Dich nur unbeliebt. Aus eigener Erfahrung, kann ich Dir nur sogen, dass die Leute hier ziemlich zugänglich und kompetent sind und ich habe hier viele wertvolle Tips und Hinweise bekommen.
Walter_vdV
 
Posts: 48
Joined: 20. January 2005 20:09

Postby arty4u » 17. July 2008 21:20

erstmal vielen danke für deine mühe.

ich habe bereits ein funktionierendes script durch jemanden der mir geholfen hatte geschaft.

er meinte auch das man nicht mit einfach nur lesen und so ein paar codeschnippseln weiterkommen würde.

ich habe jetzt zwar ein buch aber das ist voll doof da steht nicht mal richtig drinne wie man sowas macht scheint kein gutes buch zu sein.

so back to topic:

Für all die leute die es auch gerne mal probieren würden hier ist nun das script:

Meine dateien:


allgemeines.inc.php:
Code: Select all
<?php
    // Unsere MySQL-Einstellungen
    define('MYSQL_HOST',     'localhost');
    define('MYSQL_USER',     'arty');
    define('MYSQL_PASS',     'abbuzzen');
    define('MYSQL_DATABASE', 'artydb');

    // Gleich noch die MySQL-Verbindung hinterher
    // $db = mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS);
    // mysql_select_db(MYSQL_DATABASE);
    $db = mysql_connect('localhost', 'arty', 'abbuzzen');
    mysql_select_db('artydb');
?>


create_table.php um die datenbank anzulegen:
Code: Select all
<?php
    error_reporting(E_ALL);

    include './allgemeines.inc.php';
    // Konfigurationsdatei laden

    @mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS) OR
        die("Keine Verbindung zur Datenbank. Fehlermeldung:".mysql_error());
    mysql_select_db(MYSQL_DATABASE) OR
        die("Konnte Datenbank nicht benutzen, Fehlermeldung: ".mysql_error());

    // Hier kann man jetzt MySQL-Querys senden
    mysql_query("CREATE TABLE artyform
    (
             ID     INT AUTO_INCREMENT PRIMARY KEY,
             Name   VARCHAR(250),
             Inhalt TEXT,
             Mail   VARCHAR(250),
             Datum  DATETIME,
             ICQ    VARCHAR(250)
    );");
    echo "Die Tabelle artyform wurde angelegt";
?>



eintragen.php:
Code: Select all
<?php

    // require und include unterscheiden sich nur durch ihre Arten der Fehlermeldungen, wenn es mal schiefgeht.
    // _once heißt: Es gibt ab und an Situationen, in denen die Datei schon geladen wurde. Bei doppeltem Laden kann es, je nach Inhalt, zu Fehlern kommen.
    require_once('./allgemeines.inc.php');


    if (isset($_GET["success"]))
    {
       // Die Daten wurden vollständig eingetragen und was weiß ich.
       echo "<a href=\"./eintragen.php\">Zurück zum Eintragen</a><br><br>";
       echo "<a href=\"./view_format.php\">Zur Übersicht</a><br>";
       echo "Erfolgreich ausgefüllt!";

    }
    else
    {
    // Formular anzeigen [ANFANG]


    // Da wir ja beim Formularabschicken diese Datei hier wieder aufrufen, kommt die Auswertung auch hier rein.

    if (isset($_POST["formular_abgeschickt"])) // gibt es das versteckte Feld? Unser bester Anhaltspunkt um zu überprüfen, ob es den Rest auch gibt, sprich: das Formular abgeschickt wurde
    {
       // Ueberpruefung der Pflichtfelder [ANFANG]
       $name_check  = isset($_POST['name'])  ? trim($_POST['name'])  : '';
       $inhalt_check  = isset($_POST['inhalt'])  ? trim($_POST['inhalt'])  : '';
       $mail_check  = isset($_POST['mail'])  ? trim($_POST['mail'])  : '';

       if ($name_check == '')
       {
          $error_msg1 = '* - Name nicht ausgefüllt!<br>';
       }
          if ($inhalt_check == '')
          {
              $error_msg2 = '* - Inhalt nicht eingetragen!<br>';
          }
             if ($mail_check == '')
             {
                $error_msg3 = '* - E-Mail nicht eingetragen!<br>';
             }
             else
             {

                    // Erstmal Daten auslesen
                    // trim($variable) entfernt unnötigen Leerzeichen vor und hinter dem Text, so wird (| dient nur als Begrenzungszeichen, ist kein Text) aus |  name | danach |name|

                    $name = trim($_POST["name"]);
                    $inhalt = trim($_POST["inhalt"]);
                    $mail = trim($_POST["mail"]);
                    $datum = time();
                    $icq = trim($_POST["icq"]);


                    // Nun haben wir die Daten. Damit könnten wir jetzt Fehlerüberprüfungen (ist ein Feld leer, etc...) machen. Nun lassen wir es aber einfach mal.



                    // Also Daten speichern
                    // Die Funktion mysql_escape_string($variable) sorgt dafür, dass alle potentiell (vllt. auch unbewusst) "gefährlichen" Zeichen (Hacks!) ungefährlich gemacht werden.

                    $mysql_daten["name"] = mysql_escape_string($name);
                    $mysql_daten["inhalt"] = mysql_escape_string($inhalt);
                    $mysql_daten["mail"] = mysql_escape_string($mail);
                    $mysql_daten["datum"] = mysql_escape_string($datum);
                    $mysql_daten["icq"] = mysql_escape_string($icq);

                    // Bauen wir uns mal die Datenbankabfrage zusammen.

                    // Hinweis: In SQL-Statements müssen Texte immer in Anführungszeichen gepackt werden, bei Zahlen sollte man sie weglassen.
                    // Ich gehen jetzt mal davon aus, bei dir sind alle Felder Texte (z.B. varchar)

                    $mysql_anfrage = "INSERT INTO `artyform` (`Name`, `Inhalt`,";
                    $mysql_anfrage .= " `Mail`, `Datum`, `ICQ`) VALUES (";
                    $mysql_anfrage .= "'".$mysql_daten["name"]."',";
                    $mysql_anfrage .= "'".$mysql_daten["inhalt"]."',";
                    $mysql_anfrage .= "'".$mysql_daten["mail"]."',";
                    $mysql_anfrage .= "'".$mysql_daten["datum"]."',";
                    $mysql_anfrage .= "'".$mysql_daten["icq"]."')";

                    // Dann führen wir die DB-Abfrage mal aus.

                    mysql_query($mysql_anfrage, $db);

                    // Nun sind die Daten in der DB.
                    // Jetzt haben wir mehrere Möglichkeiten:
                    // - Einfach hier bleiben und unten das leere Formular wieder anzeigen. Dafür müssen wir nichts machen. Mit F5 kann man aber jetzt die Daten nochmal eintragen...
                    // - Zur Übersichtsdatei umleiten
                    // - Was weiß ich?

                    // Wir bleiben mal einfach hier

                    header("Location: http://localhost/applescript/eintragen.php?success");
                    exit();

    } // hier endet: if (isset($_POST["formular_abgeschickt"]))
              } // Ueberpruefung der Pflichtfelder [ENDE]

    // Nun folgt das provisorische HTML-Formular:

?>

<html>
        <head>
                <title>Daten eintragen</title>
        </head>
        <body>
                <!-- Mal einen Link zur Uebersicht, die du selber machen darfst. -->
                <p><a href="./view_format.php">Zur &Uuml;bersicht</a></p>

                <b>Bitte Tragen sie Ihre Daten ein:</b>
                <form action="./eintragen.php" method="post">
                        <!-- ich wuerde das ja mit label und leeren inputs machen, das ist aber deine Sache -->
                   *Ihr Name:<input type="text" name="name" value="<?PHP echo $_POST['name']; ?>" /><br>
                   *Ihr Inhalt:<input type="text" name="inhalt" value="<?PHP echo $_POST['inhalt']; ?>" /><br>
                   *Ihre E-Mail:<input type="text" name="mail" value="<?PHP echo $_POST['mail']; ?>" /><br>
                   ICQ-NR.:<input type="text" name="icq" size="20" maxlength="11" tabindex="1" value="<?PHP echo $_POST['icq']; ?>" /><br>
                   <font size="2px">( * ) - Pflichtfelder</font><br><br>
                   <input type="submit" value="Eintragen" /><input type="reset" />
                   <input type="hidden" name="formular_abgeschickt" value="Yes" /><!-- das brauchen wir nachher in PHP -->
                </form>
        </body>
</html>
<?php
   //Ausgabe der Fehlermeldung wenn nicht alle Pflichtfelder erfüllt sind
   if($error_msg1)
   {
      echo $error_msg1;
   }
   if($error_msg2)
   {
      echo $error_msg2;
   }
   if($error_msg3)
   {
      echo $error_msg3;
   }

   //Allgemeine Fehlermeldung falls eine der Meldung erscheint
   if($error_msg1 OR $error_msg2 OR $error_msg3)
   {
      echo "Bitte füllen Sie alle nötigen Felder aus.";
   }


   // Formular anzeigen [ENDE]
   }

?>



und die ansicht mit view_format.php:
Code: Select all
<a href="./eintragen.php">Zurück zum Eintragen</a><br><br>
<?php
    require_once('./allgemeines.inc.php');

    $abfrage = "SELECT Name, Inhalt, Mail, Datum, ICQ FROM artyform";
    $ergebnis = mysql_query($abfrage);
    while($row = mysql_fetch_object($ergebnis))
    {
       echo "<b>Der Name ist:</b>","   ","$row->Name<br>";
       echo "<b>Der Inhalt dessen ist:</b>","   ","$row->Inhalt<br>";
       echo "<b>Die Mail lautet:</b>","   ","$row->Mail<br>";
       echo "<b>Das Datum:</b> " . date("l, d.m.Y H:i", $row->Datum) . ' Uhr' ."<br>";
       echo "<b>Die ICQ ist:</b>","   ","$row->ICQ<br>";
       echo "<hr>";
    }
?>



Ich wünsche anderen leuten damit viel spass wenn sie damit was anfangen können.

die formatierung im quelltext ist nicht ordnungsgemäß dafür seid ihr dann selberzustädnig. Have fun! und danke an die leute die mir geholfen haben.
Bin ein Einsteiger in die PHP Welt sowie MYSQL.
Bitte habt geduld mit mir ;-)
arty4u
 
Posts: 20
Joined: 11. July 2008 04:15


Return to PHP

Who is online

Users browsing this forum: No registered users and 3 guests