Ankündigung

Einklappen
Keine Ankündigung bisher.

Daten einlesen MySQL und PHP

Einklappen

Neue Werbung 2019

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

  • Daten einlesen MySQL und PHP

    Hallo,

    ich bin noch ziemlicher Neuling, was PHP angeht, deswegen hoffe ich, dass ich Hilfe von euch bekommen kann. Ich habe folgendes Problem:

    Ich möchte einfach Formulardaten in eine MySQL DB einlesen. Leider klappt das nicht kann mir jemand helfen und sagen, was an meinem code nicht stimmt???
    P.s.: Die Verbindung zu DB ist OK, daran liegt es also nicht.

    Die HTML-Datei

    Code:
    <form action="test.php" method="post">
    <table width="300" border="0" cellspacing="0" cellpadding="0">
    <tr>
    <td>Name:</td>
    <td><input name="name" type="text" size="30" maxlength="100"></td>
    </tr>
    <tr>
    <td>Vorname:</td>
    <td><input name="vorname" type="text" size="30" maxlength="100"></td>
    </tr>
    <tr>
    <td><input name="los" type="submit" value="los"></td>
    <td> </td>
    </tr>
    </table>
    Die PHP-Datei

    PHP-Code:
    <?php
    $datenbank 
    = @mysql_connect("xxxxxxxxxxx","xxxxxxxxxxx","xxxxxxxxx");
    if (!
    $datenbank) {
    echo 
    "
    Keine Verbindung zu DB möglich!\n"
    ;
    exit;
    }

    $var1 $_POST['name'];
    $var2 $_POST['vorname'];

    $einlesen "INSERT INTO name (name, vorname) VALUES ('$var1', '$var2')";
    if (
    mysql_select_db("dbo134193582"$datenbank)) {
    $reindamit mysql_query($einlesen$datenbank);
    // echo $reindamit;
    }
    if (!
    $reindamit) {
    echo 
    "geht nicht!";
    exit;
    }
    ?>

    ?>
    Wäre für schnelle Hilfe sehr dankbar

    machts gut
    der Noob

  • #2
    Hi noobXXL.

    Über dem Eingabefeld für die Postings gibt es so einen hübschen Button zum Einfügen von PHP-Tags. Damit kannst Du Code-Schnipsel einfügen, die dann schön bunt angezeigt werden.
    Innerhalb der PHP-Tags bleibt auch die Einrückung erhalten.
    Das wäre dann deutlich besser lesbar als jetzt.

    Ändere das doch bitte noch nachträglich in dem Posting.

    Da Du uns nicht sagst, was nicht klappt wird Dir auch keiner so schnell helfen können.
    Probier's doch mal mit einer genauen Fehlerbeschreibung.
    - Wird 'geht nicht' ausgegeben?
    - Wird nichts ausgegeben, aber die Daten stehen trotzdem nicht in der DB?
    - Explodiert die Kaffeemaschine?
    - etc....

    - Was passiert, wenn Du das ganze mal in einer Tabelle probierst, wo nicht Tabelle und Spalte den Namen 'name' haben?
    - Was wird ausgegeben, wenn Du oben in das Script die Zeile error_reporting(E_ALL); einfügst?
    - Was passiert, wenn Du hinter das ein or die anhängst? Also so:
    PHP-Code:
    <?php
     mysql_query
    () or die (mysql_error());
    ?>
    **********************************
    Nein, ich bin nicht die Signatur.
    Ich putze hier nur.
    **********************************

    Kommentar


    • #3
      Hallo,

      vielen lieben Dank erstmal für die rasche Antwort. Habe mein Posting mal überarbeitet. Danke für den Tipp. War echt mal "extrem noobie" von mir.

      Also ich bekomme meine selbst erstellte Fehlermeldung "geht nicht".

      Die Verbindung zu DB ist ok. Habe ich bereits ausgelagert und funktioniert auch prima mit meinen scripten, die ich nur zum Auslesen benutze.

      Kannst Du mir denn trotzdem noch helfen?

      Kommentar


      • #4
        Sieht doch gleich viel besser aus.

        Auf die Antworten bezüglich "error_reporting", "mysql_error" und des anderen Tabellennamens warte ich noch....

        Lass Dir auch mal $einlesen ausgeben und zeig das Ergebnis her.
        **********************************
        Nein, ich bin nicht die Signatur.
        Ich putze hier nur.
        **********************************

        Kommentar


        • #5
          solange wir warten noch ein Tip:

          benutze nie "einfach so" das @ vor einem Befehl. Dann werden nämlich etwaige Fehlermeldungen nicht angezeigt. Das @ kannst du z.B. benutzen, wenn du Fehlermeldungen abfangen möchtest, a la:
          PHP-Code:
          <?
          if ($mail_good = @mail([...])) {
             echo "Mail erfolgreich zugestellt!";
          }
          else {
             echo "Mail konnte nicht versandt werden!";
          }
          ?>
          Gruß,
          Jojo

          Kommentar


          • #6
            Ich würde die Verbindung mit der Datenbank in einem Schwung mit der Verbidung zum Server machen:
            PHP-Code:
            <?php
            function connect_db ($server,$user,$pass,$datenbank) {
            $link mysql_connect($server,$user,$pass) or die("Fehler beim verbinden zum Server".mysql_error());
            $select_db mysql_select_db($datenbank,$link) or die("Fehler beim verbindn zur Datenbank: ".mysql_error());
            return 
            $link;
            }

            $connection connect_db($server,$user,$pass,$datenbank);
            // $connection kann nun als Verbindungskennung in mysql_query() hergenommen werden
            ?>
            If you read this message backward, Satan will force you to smoke marijuana.
            Gute Tutorials

            Kommentar


            • #7
              Hallo,

              ich habe ein ähnliches Problem. Bei mir kommt keine Fehlermeldung, aber die Datensätze werden nicht in die Datenbank gespeichert.
              Bin für jede Hilfe sehr dankbar.

              "Hardware" heißt die Datenbank, "fp" die Zieltabelle.
              Ist ein Beispiel aus einem Buch.

              Ronald

              <html>
              <head>

              PHP-Code:
              <?php
              if (isset($gesendet))
              {
                  
              mysql_connect();
                  
              mysql_select_db("hardware");

                  
              $sqlab "insert fp";
                  
              $sqlab .= "(hersteller, typ, mb, preis, artnummer, prod) values ";
                  
              $sqlab .= "('$hs', '$t', $m$pre$art, '$pr')";

                  
              mysql_query($sqlab);

                  
              $num mysql_affected_rows();
                  if (
              $num>0)
                      echo 
              "Es wurde 1 Datensatz hinzugefügt

              "
              ;
                  else
                  
                  echo 
              "Es ist ein Fehler aufgetreten";
                  

              }

              ?>
              </head>

              <body>
              Geben Sie einen vollständigen Datensatz ein und senden Sie das Protokoll ab!

              <form action = "eingabe1.php" method = "post">
              <input name="hs"> Hersteller


              <input name="t"> Typ


              <input name="m"> Festplattengröße


              <input name="pre"> Preis


              <input name="art"> Artikelnummer


              <input name="pr"> Produktionsbeginn



              <input type = "submit" name = "gesendet">
              <input type = "reset">
              </form>

              </body>
              </html>

              Kommentar


              • #8
                Hallo,

                das ist ja erstklassiges Thread-Napping.
                Bitte packe Deinen Code in PHP-Tags.
                Dafür gibt's den Button rechts über dem Eingabefeld hier.
                Editiere dazu bitte Dein Posting.

                Wenn Du den Thread hier schon kidnappst, dann lies ihn doch bitte auch gleich mal durch und beantworte die selben Fragen wie der Ursprungs-Poster.
                Insbesondere den Teil mit error_reporting und mysql_error aus meinem früheren Posting in diesem Thread.

                Extra für Deinen Fall würde ich noch folgendes vermuten:
                - Du hast register_globals auf off und daher ist $gesendet nicht definiert. Das sagt Dir dann auch ein eingeschaltetes error_reporting. Nimm $_POST['gesendet']. Gleiches gilt natürlich für die übrigen Parameter, die Du eintragen willst.
                - Die SQL-Syntax lautet INSERT INTO Tabelle... Das sagt Dir sicher auch der Aufruf von mysql_error().

                Was sollen denn die ganzen Input-Felder ohne Typ und ohne Ende? Bring das mal in Ordnung.

                Was glaubst Du eigentlich, was der <head> einer HTML-Datei sein soll? Da hat ein echo nix drin verloren, außer Du schreibst damit Header-Teile, was Du aber nicht machst. Der ganze PHP-Teil sollte in Deinem Fall doch sicher im <body> stehen.

                Ist das 1:1 aus dem Buch abgetippt?
                Wenn ja, dann verbrenn es oder zwing den Autor es zu essen.

                Edit:
                Ich hab die obige Aussage zu echo im <Head> etwas umformuliert.
                **********************************
                Nein, ich bin nicht die Signatur.
                Ich putze hier nur.
                **********************************

                Kommentar


                • #9
                  Hey,

                  vielen Dank für die schnelle Antwort.
                  Werde mein Posting allerdings erst am Montag überarbeiten können.
                  Aber die zahlreichen Anregungen sind für mich sehr hilfreich.

                  lg Ronald

                  Kommentar


                  • #10
                    Hallo,

                    hab hier mal eine vereinfachte Form meines Problems.

                    <html>
                    <head>

                    PHP-Code:
                    <?php
                    if (isset($_POST['gesendet']))
                    {
                        
                    mysql_connect();
                        
                    mysql_select_db("Ronald");

                        
                    $sqlab "insert into Versuch1";
                        
                    $sqlab .= "(name) values ";
                        
                    $sqlab .= $_POST["na"];

                        
                    mysql_query($sqlab) or die (mysql_error());

                        
                    $num mysql_affected_rows();
                        if (
                    $num>0)
                            echo 
                    "Es wurde 1 Datensatz hinzugefügt

                    "
                    ;
                        else
                        
                        echo 
                    "Es ist ein Fehler aufgetreten";
                        

                    }

                    ?>
                    </head>

                    <body>
                    Geben Sie einen vollständigen Datensatz ein und senden Sie das Protokoll ab!

                    <form action = "eingabe3.php" method = "post">
                    <input name="na"> Name


                    <input type = "submit" name = "gesendet">
                    <input type = "reset">
                    </form>

                    </body>
                    </html>

                    Fehlermeldung:

                    Ich habe einen Fehler in der SQL Syntax.
                    Check the manual that corresponds to your MySQL server version for the right syntax ti use near 'Ronald' at line 1. ('Ronald' ist dabei der variable Wert der ins Formular eingegeben wird)

                    Was kann/ muss ich tun?
                    Vielen Dank für eure Hilfe

                    lg Ronald

                    Kommentar


                    • #11
                      Mhm, lass dir doch einfach mal einen Query per Echo ausgeben.. Der Wert den du in die DB schreiben willst musst du schno zwischen ' setzen:
                      PHP-Code:
                      <?php
                      $sqlab 
                      "INSERT INTO
                                                       Versuch1
                                                       (name)
                                     VALUES
                                                       ('" 
                      $_POST['na'] . "')
                                    "
                      );
                      ?>

                      Kommentar

                      Lädt...
                      X