• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Problem mit $_GET

McCry

Mitglied
Hallo,
wie man sicherlich schon gelesen hat habe ich ein Problem mit $_GET.
Ich glaube zumindest, dass es daran liegt.

Also:
Ich habe mir einen Blog gemacht und bin gerade dabei eine Kommentarfunktion hinzuzufügen.
In phpmyadmin hab eich eine extra Tabelle für die Kommentare gemacht. Dort gibt es:
id, artikelid, name, text, datum
mein Code:
Code:
include "include/design/db_connect.php";
        
        $cName = $_POST['name'] ;
        $cText = $_POST['text'];
        $aID = $_GET["bid"];
        $cDate = date("Y.m.d");
        
        if($cName == "" or $cText == "")
        {
            echo "Du hast nicht alle Felder ausgefüllt.";
        } else {
            $eintragen = mysql_query("INSERT INTO comments VALUES ('', '{$aID}', '{$cName}', '{$cText}', '{$cDate}')");
            echo "Dein Kommentar wurde gespeichert.";
        }
        mysql_close($verbindung);

Die URL lautet z.B.: ritualist.bplaced.net/index.php?page=blog&bid=7
Dort hat bid den Wert 7. Wenn ich jetzt aber einen Testkommentar poste, hat dieser
anschließend in der Tabelle den Wert 0.
kann mir jemand sagen, woran das liegt?
Bis dahin schonmal Danke
LG McCry
 
Werbung:
Vermutlich ist die Tabellenspalte auf Int konfiguriert, aber du übergibst eine Zeichenkette.
 
Werbung:
Wenn es eine Ganzzahl sein soll, dann stimmt die Datenbank, aber dein Script nicht, oder eben andersrum. Das kannst nur du wissen.

Und so wie es aussieht, hast du bei dem Datum auch varchar oder ähnliches, warum nicht den Typ date? Dafür gibt es das ja extra.

Und noch ein Tipp: übernehme nie Daten von außen, ohne sie abzusichern, sprich, durch mysql_real_escape_string jagen.
 
In meiner db ist das ein INT. Und 7 ist doch eine Integer Zahl oder?
Und was müsste ich denn dann im Script ändern?
 
Werbung:
PHP:
include "include/design/db_connect.php";

if(empty($_POST['name']) ||  empty($_POST['text']))
{
   echo "Du hast nicht alle Felder ausgefüllt.";
}
else
{
    $query = "INSERT
                INTO
                   `comments`
                SET
                  `aid` = "   . mysql_real_escape_string($_GET["bid"]) . ",
                  `name` = '" . mysql_real_escape_string($_POST['name']) . "',
                  `text` = '" . mysql_real_escape_string($_POST['text']) . "',
                  `datum`=now()";

    mysql_query($query)
       or die ("MySQL-Error: " . mysql_error());
}

mysql_close($verbindung);
 
Muss ich da noch etwas ändern oder sollte es auch so funktionieren?
Bei mir gehts nämlich nicht.
MySQL-Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ' `author` = 'hjhj', `text` = 'hjhjhj', ' at line 5
 
Werbung:
das Formular sieht so aus:
Code:
<form action="index.php?page=blog" method="post">
   Name:</br>
   <input type="text" name="name"></br>
   Kommentar:</br>
   <textarea id="area" name="text"></textarea></br>
   <input type="submit" name="commentOk" value="Senden"></br>
</form>
 
Du hast doch auch den PHP-Teil angepasst :(

Und wo soll dann im Script $_GET["bid"] herkommen?
 
Werbung:
Sorry, aber ich habe jetzt langsam keine Ahnung mehr, worauf du hinaus willst.

Was muss ich ändern, damit '{$aID}' eine Integer Zahl ist?
 
Das Script, was ich hier gepostet habe, konntest du ja nicht 1:1 übernehmen. Wahrscheinlich hast du beim anpassen einen Fehler gemacht. Und beachte, dass bid garnicht an das Script per Get weitergegeben wird, sondern nur page. Von bid steht da nix beim Formular
 
Werbung:
Neinnein. Es gibt auch ein $_GET["bid"]. Nur der Teil des Codes ist nicht in dem dabei, was ich gepostet habe.
 
Werbung:
Code:
<form action="index.php?page=blog" method="post">
Wo steht da was von bid??????

Wenn du das Formular abschickst, geht dir bid verloren!!!
 
Zurück
Oben