[SQL allgemein] Variable übergeben und in Datenbank schreiben

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

  • [SQL allgemein] Variable übergeben und in Datenbank schreiben

    Ich möchte in eine Art Weblog eine Kommentarfunktion einbauen. (http://www.sonjaundbeda.de ==> auf einen der "Kommentare"-Links klicken)
    - Bereits in der Datenbank vorhandene Einträge sollen angezeigt werden
    - Es sollen neue Einträge eingegeben werden können (Formular)
    Der Code steht soweit und die Abfrage der vorhandenen Einträge (testhalber von Hand eingegeben) auch, aber ich habe folgendes Problem:
    Ich schaffe es zwar, die ID des jeweiligen Eintrags zur php-Seite zu übermitteln, aber ich weiß nicht, wie ich diese ID dann auch in die Datenbank schreiben kann. Es wird nämlich immer 0000 eingetragen, obwohl ich die Variable übergeben und dann auch eingetragen habe.

    Wer kann mir helfen?

  • #2
    wie schreibst du in die Datenbank? gibt den Befehl mit einem echo aus, was kommt dann raus?
    Bsp:
    PHP-Code:
    $query "UPDATE...";
    $result mysql_query($query) or die("Anfrage fehlgeschlagen: " mysql_error());
    echo 
    "Abfrage:$query<br>"
    was für ein Tabellentypen hat die ID?

    Offe

    Kommentar


    • #3
      als tabellentyp habe ich int(5) und unsigned zerofill

      (ich hoffe, das ist das, was du wissen willst)
      bin leider absoluter Neuling

      Zuletzt geändert von sonjanis; 15.02.2004, 02:00.

      Kommentar


      • #4
        jetzt wäre es noch nett wenn du denn Query, das was echo ausgibt und falls vorhanden die Fehlermeldung posten würdest.

        Offe

        Kommentar


        • #5
          mein code




          <?php
          include("../dbconnect/db_connect1.inc.php");

          $entryid=$_GET['entryid'];

          function DoForm()
          {

          print '<form action=showcomments5.php method=get>';
          print 'Name:<br> <textarea name=com_name cols=40 rows=1></textarea><br>';
          print 'email:<br> <textarea name=com_email cols=40 rows=1></textarea><br>';
          print 'url:<br> <textarea name=com_url cols=40 rows=1></textarea><br>';
          print 'Eintrag:<br> <textarea name=comment cols=40 rows=5></textarea><br>';



          print '<input type=hidden name=cmd value=enter>';
          print '<input type=submit value=Eintragen>';
          print '</form>';
          }




          function InsertData( $commentid, $entryid, $com_name, $com_email, $com_date, $com_url, $comment)
          {

          global $dbname;
          global $user;
          global $pwd;
          global $dbtablename1;
          global $dbtablename7;
          global $host;
          global $entryid;

          $c = mysql_connect( $host, $user, $pwd);
          $s = "insert into $dbtablename7 ( commentid, entryid, com_name, com_email, com_date, com_url, comment) values( '$commentid', '$entryid', '$com_name', '$com_email', NOW(), '$com_url', '$comment')";
          $r = mysql_db_query( $dbname, $s, $c);

          if( ! $r) print "<b>Fehler beim eintragen: $s </b><br>";

          }

          DoForm();

          if( IsSet( $cmd)) InsertData( $commentid, $entryid, $com_name, $com_email, $com_date, $com_url, $comment);




          if(@mysql_connect($host, $user, $pwd))
          {
          if(@mysql_select_db($dbname))
          {
          echo "<h3 class='1'>KOMMENTARE</h3>";
          $output = @mysql_query("SELECT entryid, comment, com_name, com_email, com_date FROM comments WHERE entryid = $entryid ORDER BY com_date DESC");

          if($output)
          {

          while($row = mysql_fetch_object($output))
          {




          echo "<table class='dbentries'><tr><td class='dbentries'><p class='entry'>" . $row->comment . "</p></td></tr>";
          echo "<tr><td class='dbentries'><p class='entryhead'>" . $row->com_name . " |";
          echo "" . $row->com_email . " |";
          echo "" . $row->com_date . "</p></td></tr></table>";



          }
          }
          else
          echo "<br><i>Es sind noch keine Kommentare vorhanden!</i><br>\n";
          }
          else
          echo "<br>Verbindung zur Datenbank ist im Moment nicht m&ouml;glich!\n";

          mysql_close();
          }
          else
          echo "<hr>Verbindungsaufbau fehlgeschlagen<hr>\n";

          ?>



          Zuletzt geändert von sonjanis; 15.02.2004, 02:08.

          Kommentar


          • #6
            benutze doch bitte die PHP-Tags.

            ersetze
            PHP-Code:
            $s "insert into $dbtablename7 ( commentid, entryid, com_name, com_email, com_date, com_url, comment) 
            values( '
            $commentid', '$entryid', '$com_name', '$com_email', NOW(), '$com_url', '$comment')";
            $r mysql_db_query$dbname$s$c); 
            durch
            PHP-Code:
            $s "insert into $dbtablename7 ( commentid, entryid, com_name, com_email, com_date, com_url, comment) 
            values( '
            $commentid', '$entryid', '$com_name', '$com_email', NOW(), '$com_url', '$comment')";
            $r mysql_db_query$dbname$s$c) or die("Anfrage fehlgeschlagen: " mysql_error());
            echo 
            "<br>Abfrage:$s<br><br>"
            und schreibe das was echo ausgibt und evtl die Fehlermeldung

            EDIT:
            Zeilen umgebrochen da zu lang


            Offe
            Zuletzt geändert von Offe1; 15.02.2004, 11:43.

            Kommentar


            • #7
              Ausgegeben werden zunächst die Datensätze und dann, wenn ich versuche, einen neuen E intrag zu erstellen:

              "Es sind noch keine Kommentare vorhanden!"

              Fehlermeldung bekomme ich keine.

              Also: genauso wie vorher
              Zuletzt geändert von sonjanis; 15.02.2004, 10:44.

              Kommentar


              • #8
                hast du nur die Zeile wie ich geschrieben habe geändert? Dann müßte er die Funktion insertData aufrufen und in dieser wird auf jeden Fall etwas ausgegeben.

                --> $cmd ist nicht gesetzt

                Offe

                Kommentar


                • #9
                  ja, habs genauso gemacht, wie du gesagt hast!

                  Kommentar


                  • #10
                    Hast du bei deinem Formular immer noch " method=get" auf der Seite zumindest nicht. Gib am Anfang mal ein
                    PHP-Code:
                    print_r($_GET);
                    print_r($_POST); 
                    aus, und ersetze deine Variablen durch $_GET oder $_POST. Ich glaube immer noch, daß $cmd nicht gesetzt ist, diese auf jeden Fall durch $_GET[cmd ] oder $_POST[cmd ] ersetzen.

                    Offe

                    Kommentar


                    • #11
                      Vielen Dank! Ich werd mir das jetzt mal nochmal genau durchgucken, kann ne Weile dauern, aber vielen, vielen Dank schon mal

                      Kommentar


                      • #12
                        Ja, du hattest Recht: Der Fehler liegt darin, dass $cmd nicht gesetzt ist (hab mir das skript wild irgendwie zusammenkopiert und vergessen, cmd durch "entryid" zu ersetzen... das ist halt das problem, wenn man eigentlich gar keine ahnung hat )
                        Jedenfalls hab ich das jetzt ersetzt aber nun hab ich folgendes Problem:
                        jetzt schreibt es nur die übergebene ID, also "entryid" in die Datenbank, aber die anderen Sachen nicht mehr:

                        Ausgegeben wird folgendes:
                        Abfrage:insert into comments ( commentid, entryid, com_name, com_email, com_date, com_url, comment) values( '', '2021', '', '', NOW(), '', '')
                        und die Datenbankeinträge

                        und wenn ich einen Eintrag mache, kommt:
                        Es sind noch keine Kommentare vorhanden!

                        Kommentar


                        • #13
                          Wenn du $_POST und $_GET ausgegeben hast siehst du das die Variablen übergeben werden. Mach ein
                          PHP-Code:
                          $entryid $_Get['entryid']; 
                          natürlich mit allen Variablen die in $_GET sind und an die function InsertData übergeben werden.

                          Offe

                          Kommentar


                          • #14
                            die variable hab ich genauso übernommen wie du oben geschrieben hast!

                            Ich glaube, ich bin dem Fehler jetzt auf der Spur (nach ewigem rumprobieren )
                            Er muss in dieser Zeile liegen:
                            PHP-Code:
                            if( IsSet($cmd)) InsertData$commentid$entryid$com_name$com_email$com_date$com_url$comment); 
                            cmd wurde zwar nicht explizit gesetzt, aber es ist ein verstecktes feld im formular und dadurch werden die eingetragenen Daten übermittelt.
                            Wenn ich dieses Formularfeld lösche, werden keine Daten mehr in die DB geschrieben.

                            Wenn ich bei "isset" (oben) "$cmd" durch "$entryid" ergänze, so wird nur die entryid in die Datenbank geschrieben. Ich möchte aber beides in die Db schreiben! Wie mache ich das?

                            Kommentar

                            Lädt...
                            X