n00b frage

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • n00b frage

    Könnte mir wer erklären wie ich per formular etwas in eine DB eintragen kann ?

    Also die Tabelle in MySql hab ich schon erstellt nun möchte ich die Daten per Formular in die DB schreiben um sie später wieder für eine Usergallery auslesen zu können.


    Währe nett wen sich wer meiner erbarmen würde den ich peil das nicht o_O##

    MFG Tessius

  • #2
    Hi,

    also, nur zur Vorgehensweise: du benutzt ein Formular, welches du entweder per POST oder per GET (ersteres ist besser) an ein Folgeskript schickst (über den action-Parameter im <form>-Tag) -> im Folgeskript kannst du auf die Daten über die Feld- bzw. Formularfeldnamen direkt zugreifen, d.h. ein <input name="vorname"> kannst du mittels PHP direkt als die Variable $vorname abrufen.
    Im Folgeskript mußt du die Datenbankverbindung herstellen und dann die Daten als Query an die DB schicken -> sieht ungefähr so aus:

    mysql_query("INSERT INTO tabellenname (vorname, feldname1, feldname2,.....) VALUES ($vorname, $var2, $var3,.....)");

    Kommst du damit weiter und willst erstmal bißchen probieren?

    Kommentar


    • #3
      also im formular muss es dann so aussehen:

      <FORM ACTION="danke.php" METHOD="POST">

      wen ich ich nicht ganz falsch liege.

      und die danke.php muss dann so aussehen:

      <?
      require('config.inc.php');
      ?>

      <?
      mysql_connect($sqlhost,$sqluser,$sqlpass) OR DIE( "Couldn't connect to MySQL server!");
      mysql_select_db($database) or DIE( "Keine Datenbank erreichbar!" );
      ?>


      <?php
      break;
      case "write":

      $sql = "INSERT INTO $tablename
      (userid,nick,birth,name,hardware,con,rang,active,mail,homepage,icq,hobbies,maps,weapons,comment)
      VALUES('','$nick','$birth','$name','$hardware','$con','$rang','$active','$mail','$homepage','$icq',' $hobbies','$maps','$weapons','$comment')";

      ?>

      Kommentar


      • #4
        Der Code müsste so zwar funktionieren ist aber nicht der effektivste.
        Zum Beispiel kannst du dir das ofte öffnen und schließen der PHP-Tags sparen.
        Außerdem ist das break; und das folgende case 'write': sinnlos, da du vorher nirgendwas von switch gesagt hast.

        Die Query würde ich folgendermaßen verändern:
        Code:
        INSERT INTO $tablename 
        (nick,birth,name,hardware,con,rang,active,mail,homepage,icq,hobbies,maps,weapons,comment) 
        VALUES('$nick','$birth','$name','$hardware','$con','$rang','$active','$mail','$homepage','$icq','
        $hobbies','$maps','$weapons','$comment')";
        Ich hab also die Userid rausgelassen, da die ja eh von der DB automatisch generiert wird, vorrausgesetzt die entsprechende Spalte hat das Attribut 'auto_increment'.
        "Ach was soll's? Dann bau ich mir halt meinen eigenen Vergnügungspark mit Blackjack und Nutten." - Bender

        Kommentar


        • #5
          Jep

          hast du richtig verstanden. Okay, die Anmerkungen von Nezzar sind schon richtig.
          Ich würde dir auch empfehlen, die Datenbank-Verbindung auch in einem Include-File auszulagern, dann kannst du von allen Skripten (wenn du später die Daten wieder auslesen willst und und und....) immer auf den include zugreifen.

          Kommentar


          • #6
            also müsste die include php so aussehen?

            <?php

            require('config.inc.php');

            mysql_connect($sqlhost,$sqluser,$sqlpass) OR DIE( "Couldn't connect to MySQL server!");
            mysql_select_db($database) or DIE( "Keine Datenbank erreichbar!" );

            ?>

            Kommentar


            • #7
              Ja so kommst's hin. Jetzt wird allerdings bei jedem include der Datei eine Verbindung hergestellt, ist vielleicht ganz OK so, andererseits brauchst du vielleicht nicht im jeden Script die Datenbank.
              Ich hab' für den Datenbank-Zugriff eine Klasse, die ich in fast allen meinen Scripts verwende. Diese enthält auch eine connect-funktion die eben nur bei Bedarf aufgerufen wird. Die Verbindung zur Datenbank dauert in der Regel zwar nur Bruchteile einer sekunde, aber dennoch: man will ja jedes Quäntchen Speed rausholen nicht wahr?
              Zuletzt geändert von Nezzar; 09.04.2002, 15:28.
              "Ach was soll's? Dann bau ich mir halt meinen eigenen Vergnügungspark mit Blackjack und Nutten." - Bender

              Kommentar


              • #8
                also die include ist damit fertig *freu* ^^

                so dann müsste die danke.php (also die php datei die an das formular gehängt wird) so aussehen?

                <?php

                include('mysql.php'); // Datenbank

                "INSERT INTO laiN
                (userid,nick,birth,name,hardware,con,rang,active,mail,homepage,icq,hobbies,maps,weapons,comment)
                VALUES('','$nick','$birth','$name','$hardware','$con','$rang','$active','$mail','$homepage','$icq','
                $hobbies','$maps','$weapons','$comment')";


                ?>

                Kommentar


                • #9
                  Japp, klappt so. Wenn die erste Auflistung in Klammern *alle* Spalten umfasst, kannst du die weglassen. Muss man aber nicht machen, lässt nur die Query kürzer werden.
                  "Ach was soll's? Dann bau ich mir halt meinen eigenen Vergnügungspark mit Blackjack und Nutten." - Bender

                  Kommentar


                  • #10
                    ich würde schon auch den DB-include vom config-include trennen:
                    PHP-Code:
                    Datei [B]mysql.inc.php[/B]
                    <?php 

                    mysql_connect
                    ($sqlhost,$sqluser,$sqlpass) OR DIE( "Couldn't connect to MySQL server!"); 
                    mysql_select_db($database) or DIE( "Keine Datenbank erreichbar!" ); 

                    ?>

                    Datei [B]start.php[/B]
                    <?php 

                    require('config.inc.php'); // allgemeine Daten
                    include('mysql.inc.php'); // Datenbank 

                    mysql_query("INSERT INTO laiN 
                    (userid,nick,birth,name,hardware,con,rang,active,mail,homepage,icq,hobbies,maps,weapons,comment) 
                    VALUES('','
                    $nick', '$birth', '$name', '$hardware', '$con', '$rang', '$active', 
                    '
                    $mail', '$homepage', '$icq', '$hobbies', '$maps', '$weapons', '$comment')");


                    ?>
                    so kannst du bei Bedarf immer deine config.inc.php einbinden, ohne das gleich eine DB-Verbindung aufgebaut wird. Und bei Bedarf dann eben doch die mysql.inc.php einbinden.

                    Und das ganze Ausbauen als eine eigene Datenbank-Klasse ist schon sinnvoll, wenn du eine größere Anwendung hast und zu dem vielleicht noch mit verschiedenen Datenbanktypen kommunizieren mußt.
                    Zuletzt geändert von BrainBug; 09.04.2002, 17:13.

                    Kommentar

                    Lädt...
                    X