MYSQL formatieren?

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

  • MYSQL formatieren?

    Ich habe eine Frage zu MYSQL und PHP.
    Ich habe eine Formular in PHP das Daten direkt zur Datenbank schicken soll. Alles ist richtig eingestellt doch das Formular gibt immer wieder die Fehlermeldung "Insert failed, 'Name' not inserted".
    Jetzt ist meine Frage ob man die MYSQL formatieren kann oder muss zum übertragen der Daten?!

  • #2
    Poste doch mal dein Code. So kann man ja nicht unbedingt sagen, wo der Fehler liegt

    Kommentar


    • #3
      Hi Brainbug,

      hier ist der Code:
      <?PHP
      include("modules/db/include.phtml");
      include("tools/template.phtml");

      $action="insert";

      if ($OK) {

      $db=new db();
      if ($db->open()) {

      if ($Name) {

      $name=ereg_replace("'","''",$Name);
      $stadt=ereg_replace("'","''",$Stadt);
      $kategorie=ereg_replace("'","''",$Kategorie);
      $art=ereg_replace("'","''",$Art);
      $adresse=ereg_replace("'","''",$Adresse);
      $plz=ereg_replace("'","''",$PLZ);
      $zeiten=ereg_replace("'","''",$Zeiten);
      $preise=ereg_replace("'","''",$Preise);
      $weg=ereg_replace("'","''",$Web);
      $kommentar=ereg_replace("'","''",substr($Kommentar,0,254));
      $ID=$db->nextid("ausgehen_id_seq");
      $query_string="insert into ausgehen (ID, Name, Stadt, Kategorie,
      Art, Adresse, PLZ, Zeiten, Preise, Web, Kommentar) values (
      $ID, '$name', '$stadt', '$kategorie', '$art', '$adresse',
      '$plz', '$zeiten', '$preise', '$web', '$kommentar')";

      if (($query=new query($db, $query_string)) && $query->result) {

      Header("Location: $referer");

      } else {

      $error="Insert failed, $name not inserted";
      echo EvalTemplate("error.tmpl","\$error, \$referer, \$action");

      }

      $db->close();

      } else {

      $error="Name not entered, please go back and fill it in.";
      echo EvalTemplate("error.tmpl","\$error, \$referer, \$action");


      }

      } else {

      $error="Addressbook not available currently.";
      echo EvalTemplate("error.tmpl","\$error, \$referer, \$action");

      }
      } else {
      if ($Cancel) {

      Header("Location: $referer");

      } else {

      $referer=$HTTP_REFERER;
      echo EvalTemplate("form.tmpl","\$action, \$referer");

      }
      }
      ?>

      Kommentar


      • #4
        ist das Feld ID vielleicht ein autoincrement? Wenn ja, darfst du das nicht mitschreiben. Wenn nein, dann weiß ich auch nicht.
        nein, im Ernst, ansonsten läßt sich das schwer nachvollziehen, was denn die Datenbankklasse bei
        if (($query=new query($db, $query_string)) && $query->result)
        genau macht. Was ist dieses $query->result? Da wäre eine Aufsplittung ganz gut also:

        if (($query=new query($db, $query_string)) {
        if ($query->result) {
        Header("Location: $referer");
        }
        else echo "Bei If-Nr.2 ausgestiegen";
        }
        else {
        $error="Insert failed, $name not inserted";
        echo EvalTemplate("error.tmpl","\$error, \$referer, \$action");
        }

        Probier erstmal und sag dann Bescheid, was passiert....

        Kommentar


        • #5
          ist das Feld ID vielleicht ein autoincrement? Wenn ja, darfst du das nicht mitschreiben.
          Bei MySQL geht das
          mein Sport: mein Frühstück: meine Arbeit:

          Sämtliche Code-Schnipsel sind im Allgemeinen nicht getestet und werden ohne Gewähr auf Fehlerfreiheit und Korrektheit gepostet.

          Kommentar


          • #6
            Danke schonmal für die Bemühungen!

            Also das Skript gibt mir die Meldung:
            Bei If-Nr.2 ausgestiegen

            Was hat die Abfrage den jetzt gechecked?
            Ach ja und auto_increement ist eingeschaltet!

            Danke für die Hilfe!

            Kommentar


            • #7
              $name=ereg_replace("'","''",$Name);
              ...
              $query_string="insert into ausgehen (ID, Name, Stadt, Kategorie,
              Art, Adresse, PLZ, Zeiten, Preise, Web, Kommentar) values (
              $ID, '$name', '$stadt', '$kategorie', '$art', '$adresse',
              '$plz', '$zeiten', '$preise', '$web', '$kommentar')";
              Ich wunder mich gerade um die Hochkomma-Ersetzung ...
              1) Warum arbeitest du mit ereg_replace statt mit str_replace?
              2) Warum verdoppelst du vor die Hochkommata statt ein backslash (\) davor zu hängen?

              Versuch's mal mit str_replace("'", "\'", ...).

              Trotzdem wundert mich die Fehlermeldung ein bisken ... vielleicht ändert sich die ja, wenn du die Hochkommata korrekt ersetzt.

              Nebenbei noch ne Frage: sind bei deinem php runtime_magic_quotes eingeschaltet?
              mein Sport: mein Frühstück: meine Arbeit:

              Sämtliche Code-Schnipsel sind im Allgemeinen nicht getestet und werden ohne Gewähr auf Fehlerfreiheit und Korrektheit gepostet.

              Kommentar


              • #8
                Habe alles ersetzt. Gibt trotzdem noch die gleiche Fehlermeldung. Ich muss dazu sagen, daß ich ein Newbie bin und mich damit noch nicht allzuheftig auskenne.

                Ob das eingeschaltet ist kann ich nicht sagen, ich habe ein Webpack. Wie könnte ich es denn sehen und hat das grosse Auswirkungen?

                Danke schonmal.

                Kommentar


                • #9
                  Die Fehlermeldung "Bei If-Nr.2 ausgestiegen" sagt eigentlich nur, daß dein Query erstmal erfolgreich war, allerdings stimmt was nicht mit dem "$query->result" -> deshalb auch die Fehlermeldung an dieser Stelle.

                  Was macht denn diese Funktion? Wenn du noch nicht so erfahren bist, solltest du vielleicht die "normalen" DB-Funktionen von PHP nutzen, ist dann wesentlich einfacher für die Hilfe. Datenbank-Klassen sind zwar praktisch, auch für das anpassen an alle möglichen SQLs, aber bei dir vielleicht gar nicht nötig.
                  Ehrlich gesagt verstehe ich auch nicht, was an der Stelle diese "$query->result"-Abfrag soll.

                  Was macht den $query->result???

                  Kommentar


                  • #10
                    Hallo.

                    ich weiss nicht wofür result steht. Das Skript ist ein Freeware Skript von http://www.muze.nl mit dem Namen Abstract DB. Ich habe es genau so installiert wie beschrieben, jedoch funktioniert nur dieser Skriptteil nicht.

                    Vielleicht hilft euch beim verstehen der Source-Code auf
                    http://www.muze.nl vom Abstract DB Skript, ist vielleicht einfacher als wenn ich das ganze Skript hier reinposte.

                    Danke schonmal.

                    Kommentar


                    • #11
                      jaja, den Niederländern ist mal wieder nicht zu trauen
                      im Ernst, ich hab gesehen, daß du wohl den Code auch aus dem Adressbuch-Beispiel kopiert hast und da ist es genau so drin, allerdings gibt es die Funktion innerhalb der Klasse gar nicht -> die Anweisung $query->result kann gar nicht funktioneren, da nicht implementiert.
                      Eigentlich reicht auch der erste Teil der If-Abfrage. Da weißt du auch schon, ob der Query erfolgreich war.

                      Hast du schon mal geschaut, was oder ob was in der DB ankommt???

                      Kommentar


                      • #12
                        Ja ja die Holländer!

                        Na ja, erstmal danke für deine Bemühungen, find ich echt cool.
                        Im der MySQL Database kommt leider nichts an. Ich bekomme halt nur diese Medlung. Was kann ich denn weglassen?

                        Kommentar


                        • #13
                          hab gerade mal die DB-Klasse angeschaut. gib doch erstmal an der Stelle von

                          echo "Bei If-Nr.2 ausgestiegen";

                          lieber das an:

                          echo $db->error();

                          mal sehen, was mysql dazu sagt.


                          Ansonsten mußt du folgendes austauschen:

                          if (($query=new query($db, $query_string)) {
                          Header("Location: $referer");
                          } else {
                          $error="Insert failed, $name not inserted";
                          echo EvalTemplate("error.tmpl","\$error, \$referer, \$action");
                          }

                          bin mal gespannt, ob es klappt...

                          Kommentar


                          • #14
                            Hi Brainbug!

                            Wenn ich das erstere Ersetze, bekomme ich die Fehlermeldung:
                            1062: Duplicate entry '1' for key 1

                            Ich muss sagen das ich schon Drei Entries per Hand in die MYSQL Datenbank mit der ID 1-3 vergeben hab. Ist das irgendwie von Bedeutung?

                            Wie soll ich das 2. einsetzen? Hab ich nicht so ganz verstanden. Ich habe das 2. mit "echo $db->error();" ersetzt aber auch den ganzen Skriptteil der so ähnlich aussieht. Hat aber beides leider nichts gebracht.

                            Gibt es keine andere Möglichkeit das mit einem Formular in die gleiche Datenbank zu plazieren und mit automatischer ID vergabe?

                            Kommentar


                            • #15
                              Supi, da liegt also der Fehler.

                              Du kannst nicht in ein autoincrement schon einen bestehenden Wert reinschreiben -> laß bei dem Insert-Befehl einfach mal das Feld ID weg:

                              $query_string="insert into ausgehen (Name, Stadt, Kategorie,
                              Art, Adresse, PLZ, Zeiten, Preise, Web, Kommentar) values ('$name', '$stadt', '$kategorie', '$art', '$adresse',
                              '$plz', '$zeiten', '$preise', '$web', '$kommentar')";

                              Die Zeile
                              $ID=$db->nextid("ausgehen_id_seq");
                              kannst du weglassen. Scheint eh nicht richtig zu funktionieren, da ja schon ein vorhandener Wert gefunden wird. Und dafür hast du ja eigentlich auch ein autoincrement -> im "auto" steckt der Sinn, macht MySQL ja von alleine

                              okay, probier das mal. Bis dann

                              Kommentar

                              Lädt...
                              X