Jens: Einträge funzen net ...

Also,

ich habe das Problem, das ich mir eine Eingabemaske gebaut hab, um Einträge wie sollte es anders sein in eine DB zu speichern.
Aber leider schreib der mir immer nichts in die DB.

Quellcode:

<?
mysql_connect($dbhost,$dbuser,$dbpass);
mysql_select_db($db);
mysql_query("insert into tabelle
(datum,cocktailart,glaeser,erste,mengenangabe_erste,zweite,mengenangabe_zweite,dritte,mengenangabe_dritte,vierte,mengenangabe_vierte,likoere_erste,likoere_menge_erste,likoere_zweite,likoere_menge_zweite,sirup_erste,sirup_menge_erste,sirup_zweite,sirup_menge_zweite,saefte_erste,saefte_menge_erste,saefte_zweite,saefte_menge_zweite,saefte_dritte,saefte_menge_dritte,saefte_vierte,saefte_menge_vierte,saefte_vierte,saefte_menge_vierte,pic,beschreibung,eis,machart)
values
('$_POST[datum]','$_POST[cocktailart]','$_POST[glaeser]','$_POST[erste]','$_POST[mengenangabe_erste]','$_POST[zweite]','$_POST[mengenangabe_zweite]','$_POST[dritte]','$_POST[mengenangabe_dritte]','$_POST[vierte]','$_POST[mengenangabe_vierte]','$_POST[likoere_erste]','$_POST[likoere_menge_erste]','$_POST[likoere_zweite]','$_POST[likoere_menge_zweite]','$_POST[sirup_erste]','$_POST[sirup_menge_erste]','$_POST[sirup_zweite]','$_POST[sirup_menge_zweite]','$_POST[saefte_erste]','$_POST[saefte_menge_erste]','$_POST[saefte_zweite]','$_POST[saefte_menge_zweite]','$_POST[saefte_dritte]','$_POST[saefte_menge_dritte]','$_POST[saefte_vierte]','$_POST[saefte_menge_vierte]','$_POST[pic]','$_POST[beschreibung]','$_POST[eis]','$_POST[machart]')
");
?>

Sieht jemand einen Fehler ???

MfG
Jens

  1. hi,

    Aber leider schreib der mir immer nichts in die DB.

    die allerersten und elementarsten debugging-schritte in so einem fall sind:

    • kontrollausgabe der query per echo
    • ausgabe einer wahrscheinlichen fehlermeldung der DB über mysql_error()

    gruss,
    wahsaga

    1. das Problem ist halt, das der Quellcode, so wie ich ihn gepostet hab ... halt mit weniger feldern so funktioniert. ich habe ihn nur erweitert um die fehlenden felder. und nun trägt er nix ein.

      MfG
      Jens

      1. das Problem ist halt, das der Quellcode, so wie ich ihn gepostet hab ... halt mit weniger feldern so funktioniert. ich habe ihn nur erweitert um die fehlenden felder. und nun trägt er nix ein.

        ja dann ist mysql_error() und echo wohl die einfachste lösung das rauszufinden

        lass  dir einfach per

        echo $variable;

        das anzeigen, was eingetragen werden soll.

        1. kannste mir mal beispiel dazz geben ... anhand von meinem quellcode

          MfG
          Jens

          1. hi,

            kannste mir mal beispiel dazz geben ... anhand von meinem quellcode

            definiere deine query nicht innerhalb von mysql_query, sondern vorher in einer variablen.

            $query = "INSERT ...";
            echo $query; // die kontrollausgabe
            mysql_query($query) oer die(mysql_error()); // die detailierte ausgabe von DB-fehlern

            gruss,
            wahsaga

            1. hi,

              mysql_query($query) oer die(mysql_error());

              -^-
              sorry, tippfehler, muss or die(mysql_error()); heissen.

              gruss,
              wahsaga

              1. also ... ich hab mir jetzt jede variable per mysql_error ausgeben und anzeigen lassen ... er zeigte immer was an. also übernimmt er die einträge auch. da er sie ja anzeigt. kann es sein das in meiner db zu viele felder sind ??? das der provider da ne begrenzung drin hat ??? bin bei hosteurope

                MfG
                Jens

                1. hi,

                  also ... ich hab mir jetzt jede variable per mysql_error ausgeben und anzeigen lassen ... er zeigte immer was an.

                  wie jetzt?
                  mysql_error soll keine variablen ausgeben, sondern die fehlermeldung der DB.

                  kam eine? wie lautet die?
                  und was hat die kontrollausgabe der query mit echo ergeben?

                  gruss,
                  wahsaga

  2. Hallo,

    Aber leider schreib der mir immer nichts in die DB.

    ...

    values
    ('$_POST[datum]','$_POST[cocktailart]','$_POST[glaeser]','$_POST[erste]','$_POST

    Array-Element-Inhalte werden in "..." nur in der Form {$xyz} uebernommen. Also schreibe values('{$_POST[datum]}',...).

    Praktikabler faende ich das vorherige Zuweisen zu separaten Variablen und deren weitere Verwendung, also etwa:

    $datum=$_POST["datum"]; // Bezeichner sollten in Anfuehrungszeichen stehen, um nicht als Konstanten zu gelten

    im String: values('$datum',...) usw.

    MfG, Thomas

    1. Moin!

      Praktikabler faende ich das vorherige Zuweisen zu separaten Variablen und deren weitere Verwendung, also etwa:

      $datum=$_POST["datum"]; // Bezeichner sollten in Anfuehrungszeichen stehen, um nicht als Konstanten zu gelten

      Ich weiß nicht, ob das wirklich schlau ist. Da schreibt man sich (gerade in diesem Fall) ziemlich tot, nur um einen Effekt zu erreichen, der mit zusätzlichen geschweiften Klammern um die Variablen auch funktioniert - und immerhin ist der SQL-String schon nahezu komplett vorhanden.

      - Sven Rautenberg

      --
      ss:) zu:) ls:[ fo:} de:] va:) ch:] sh:) n4:# rl:| br:< js:| ie:( fl:( mo:|
      1. Hallo,

        Ich weiß nicht, ob das wirklich schlau ist. Da schreibt man sich (gerade in diesem Fall) ziemlich tot, nur um einen Effekt zu erreichen, der mit zusätzlichen geschweiften Klammern um die Variablen auch funktioniert - und immerhin ist der SQL-String schon nahezu komplett vorhanden.

        Wenn man konsequent ist, werden auch in den eckigen Klammern weitere Anfuehrungszeichen faellig und dann wird das ein muehsames Unterfangen mit dem sowieso schon langen String. Auch das spaetere Aendern von Parametern ist beim Arbeiten mit separaten Variablen weniger fehleranfaellig und ueberschaubarer.

        Deshalb nannte ich meinen Vorschlag "praktikabler".

        MfG, Thomas

  3. <?
    mysql_connect($dbhost,$dbuser,$dbpass);
    mysql_select_db($db);
    mysql_query("insert into tabelle
    (datum,cocktailart,glaeser,erste,mengenangabe_erste,zweite,

    mach es in dieser art:

    $conn = mysql_connect($dbserver,$dbusername,$dbpasswort);
    $SQLString = "INSERT INTO tabelle (datum, cocktailart ,...usw
    $Ergebnis = mysql_db_query($deineDatenbank, $SQLString, $conn);

    if ($Ergebnis === FALSE) {
      echo "diese Abfrage ist gescheitert:<br>";
      echo $SQLString."<br>";
      echo "Die MySQL-Fehlermeldung lautet: ".mysql_error();
      exit; // Ausführung des Scriptes beenden
    }

    die if anweisung habe ich hier aus dem forum, hat sich bewährt!!

    schönen abend

    ronny

    ps nicht weitersagen, die meisten hier, haben es nicht gern, wenn man beim quellcode hilft, stimmt auch, durch selber lernen wird man schlau, deswegen habsch nur den schnipsel geschrieben...viel spaß