Vinnaren i pepparkakshustävlingen!
2008-01-27, 10:47
  #1
Medlem
Maninthemidles avatar
Tjena!
Har haft problem med en blogg där läsarna ska kunna posta kommentarer, och fick reda på vad felet var nyss. Dock så kan jag inte lösa det.
Felet är att entryid i databasen alltid är 0 på alla kommentarer. När man klickar på "Comment" i en blogg så följer GET-datan idd med, som innehåller numret på blogg-inlägget. Jag har provat att skriva ut värdet i idd på skärmen, och det är rätt. Men ändå så blir det numret 0 i alla kommentarer, vilket gör att de hamnar i oordning och inte kan visas.
Här är koden:
Tack på förhand!
Citera
2008-01-27, 11:12
  #2
Medlem
ojns avatar
Kod:
mysql_real_escape_string($_GET['idd']) 
kommer inte returnera något, vilket innebär att mysql sätter defaultvärdet 0 varje gång.

Du kan i stället t.ex. kolla om det verkligen är en siffra med
Kod:
$idd $_GET['idd'];
if (
is_numeric($idd))
{
   
bla bla

Citera
2008-01-27, 11:54
  #3
Medlem
Maninthemidles avatar
Okej. Har provat att ta bort den kontrollen helt, men det fungerar ändå inte.
Citera
2008-01-27, 12:15
  #4
Avstängd
porques avatar
<?php
require "config.php";
?>

<?php

$name = $_POST['name'];
$email = $_POST['mail'];
$message = $_POST['message'];
$idd = $_GET['idd'];
$msg = "";

if (isset($name)) {

$name = trim($name);
$email = trim($email);
$message = trim($message);

$time = gmdate("M jS Y");
$name = mysql_real_escape_string(htmlentities($name));
$email = mysql_real_escape_string(htmlentities($email));
$message = mysql_real_escape_string(htmlentities($message));

$namelength = strlen($name);
$messagelength = strlen($message);

if ($namelength < 3) {$msg = "Your name must be at least 3 characters.";}
elseif ($messagelength < 5) {$msg = "Your message must be at least 5 characters.";}
elseif ($messagelength > 1000 ) {$msg = "Your message must be no more than 1,000 characters.";}

if ($msg!="") {
echo "$msg";
exit();
} else {

mysql_query("INSERT INTO comments SET comment = '$message', name ='$name', time = '$time', email = '$email', entryid = '$idd' ") or die(mysql_error());

print "Your comment has been added! <a href='index.php'>Return to Index</a>";

}

}



if (!isset($name)) {

$existentry = mysql_fetch_row(mysql_query("SELECT COUNT(*) FROM blog WHERE id = '$idd'"));
if ($existentry[0] == 1) {

echo "
<form action=\"postcomment.php\" method=\"post\">
<br /><br /><strong>Post new comment</strong>
<h6>Name: </h6><input type=\"text\" name=\"name\" maxlength=\"25\" size=\"40\" /><br /><br />
<h6>Email Address: </h6><input type=\"email\" name=\"mail\" maxlength=\"40\" size=\"40\" /><br /><br />
<h6>Message:</h6> <textarea name=\"message\" rows=\"10\" cols=\"40\" ></textarea>
<input type=\"hidden\" name=\"idd\" value=\"$idd\" /><br /><br />
<input type=\"submit\" value=\"Post Comment\" name=\"send\" class=\"submit\" />
</form>
";

} else {
echo "Invalid blog ID";
}

}

?>




testa detta
Citera
2008-01-27, 12:39
  #5
Medlem
Maninthemidles avatar
Citat:
Ursprungligen postat av porque
...
testa detta
Nepp, fungerar inte det heller.
Citera
2008-01-27, 14:21
  #6
Medlem
ojns avatar
Vad händer om du kör
<form action=\"postcomment.php?idd=$idd\" method=\"post\">

Kod:
<?php

$idd 
$_GET['idd'];
$message $_POST['message'];

echo 
"<form action='postcomment.php?idd=$idd' method='post'>\n";
echo 
"\$message = <input type='text' name='message' size='50' />\n";
echo 
"<input type='hidden' name='idd' value='$idd' />\n";
echo 
"<input type='submit' value='Submit' />\n";
echo 
"</form>\n";

if (isset(
$message))
{
   echo 
"idd = " $idd "<br />\n";
   echo 
"message = " $message "<br />\n";
   
$sql "INSERT INTO foo SET message = '$message', idd = '$idd'";
   echo 
"sql = " $sql "<br />\n";
}

?>
Kör du t.ex. "postcomment.php?idd=3" med $message "foo" så får du
Kod:
idd = 3
message = foo
sql = INSERT INTO foo SET message = 'foo', idd = '3'
Citera
2008-01-27, 16:06
  #7
Medlem
ojns avatar
Citat:
Ursprungligen postat av Maninthemidle
Jäklar, det funkar! Tack så mycket!
Bröt ut andra halvan av tråden (som handlade om sql-frågor) till http://www.flashback.org/showthread.php?t=612445
Citera

Stöd Flashback

Flashback finansieras genom donationer från våra medlemmar och besökare. Det är med hjälp av dig vi kan fortsätta erbjuda en fri samhällsdebatt. Tack för ditt stöd!

Stöd Flashback