Avatar billede khalus Nybegynder
23. september 2003 - 18:35 Der er 19 kommentarer og
1 løsning

Fejl i shoutbox script?

Af en eller anden grund virker dette script ikke:

MySQL:
CREATE TABLE `shoutbox` (
`id` int(11) NOT NULL auto_increment,
`name` text NOT NULL,
`message` longtext NOT NULL,
`time` text NOT NULL,
PRIMARY KEY  (`id`)
) TYPE=MyISAM;

php:
<?
mysql_pconnect("localhost","username","password");
mysql_select_db("db");
if($submit)
{
$time=date("h:ia d/j/y");
$result=MYSQL_QUERY("INSERT INTO shoutbox (id,name,message,time)"."VALUES (\'NULL\',\'$name\', \'$message\',\'$time\')");
}
?>
<?
$result = mysql_query("select * from shoutbox order by id desc limit 5");
while($r=mysql_fetch_array($result))
{       
$time=$r["time"];
$id=$r["id"];
$message=$r["message"];
$name=$r["name"];
?>
<form action="<? echo $php_self ?>" method="post">
<INPUT TYPE='TEXT' value='name' NAME='name' SIZE=30 maxlength='100'><br>
<INPUT TYPE='TEXT' value='message' NAME='message' SIZE=30 maxlength='100'>
<input type="submit" name="submit" value="submit">
</form>



Hvad er der galt med det script?
Avatar billede nikolajdu Nybegynder
23. september 2003 - 18:40 #1
Det er nok register globals der er off og lad dem bare være det.

$result=MYSQL_QUERY("INSERT INTO shoutbox (id,name,message,time)"."VALUES (\'NULL\',\'".$_POST["name"]."\', \'".$_POST["message"]."\',\'".$_POST["time"]."\')");

/Nikolaj
Avatar billede nikolajdu Nybegynder
23. september 2003 - 18:54 #2
Når Register_globals er off betyder det at du ikke længere kan hente variabler sendt via headeren ved bare at skrive variabelnavnet.

du skal nu erstatte alle med :

$_POST["name"] // Hvis de er sendt via en form med method="POST" ligesom du har her.

$_GET["name"] // hvis de er sendt via urlen - hej.php?name=davser
Avatar billede khalus Nybegynder
23. september 2003 - 19:22 #3
nu har jeg lavet det om s¨det ser sådan ud, men det virker ikke. Der er ikke nogen errors, men den vil ikke submitte:
<?
mysql_pconnect("localhost");
mysql_select_db("news");
if($_POST["submit"])
{
$time=date("h:ia d/j/y");
$result=MYSQL_QUERY("INSERT INTO shoutbox (id,name,message,time)"."VALUES (\'NULL\',\'$name\', \'$message\',\'$time\')");
}
?>
<?
$result = mysql_query("select * from shoutbox order by id desc limit 5");
while($r=mysql_fetch_array($result))
{       
$_GET["time"]=$r["time"];
$_GET["id"]=$r["id"];
$_GET["message"]=$r["message"];
$_GET["name"]=$r["name"];
}
?>
<form action="<? echo $php_self ?>" method="post">
<INPUT TYPE='TEXT' value='name' NAME='name' SIZE=30 maxlength='100'><br>
<INPUT TYPE='TEXT' value='message' NAME='message' SIZE=30 maxlength='100'>
<input type="submit" name="submit" value="submit">
</form>
Avatar billede nikolajdu Nybegynder
23. september 2003 - 19:33 #4
$time=$r["time"];
$id=$r["id"];
$message=$r["message"];
$name=$r["name"];

Skal ikke laves om da det er værdier fra databasen.

Prøv at se om der er fejl i mySql´en

$result=MYSQL_QUERY("INSERT INTO shoutbox (id,name,message,time)"."VALUES (\'NULL\',\'$name\', \'$message\',\'$time\')")or die(mysql_error());
Avatar billede khalus Nybegynder
23. september 2003 - 19:42 #5
Prøv at kigge på den. Kan i se nogle umiddelbare fejl?

<?
mysql_pconnect("localhost");
mysql_select_db("news");
if($_POST["submit"])
{
$time=date("h:ia d/j/y");
$result=MYSQL_QUERY("insert into news (id,time,message,name) values ('NULL','$time','message,'name')");
}
?>
<?
$result = mysql_query("select * from shoutbox order by id desc limit 5");
while($r=mysql_fetch_array($result))
{       
$time=$r["time"];
$id=$r["id"];
$message=$r["message"];
$name=$r["name"];
}
?>
<form action="<? echo $php_self ?>" method="post">
<INPUT TYPE='TEXT' value='name' NAME='name' SIZE=30 maxlength='100'><br>
<INPUT TYPE='TEXT' value='message' NAME='message' SIZE=30 maxlength='100'>
<input type="submit" name="submit" value="submit">
</form>
Avatar billede nikolajdu Nybegynder
23. september 2003 - 19:47 #6
Ups det var min fejl i sidste post.

Anyway skal det her virke :

<?php

$sql_host = "localhost";
$sql_user = "brugernavn";
$sql_passwd = "password";
$db = "news";

mysql_connect($sql_host,$sql_user,$sql_passwd)or die (mysql_error());
mysql_select_db($db)or die (mysql_error());

if($_POST["submit"])
{
$time=date("h:ia d/j/y");
$result=MYSQL_QUERY("INSERT INTO shoutbox (id,name,message,time)"."VALUES (\'NULL\',\'".$_POST["name"]."\', \'".$_POST["message"]."\',\'".$_POST["time"]."\')")or die(mysql_error());
}

$result = mysql_query("select * from shoutbox order by id desc limit 5");
while($r=mysql_fetch_array($result))
{       
$time=$r["time"];
$id=$r["id"];
$message=$r["message"];
$name=$r["name"];
}
?>
<form action="<? echo $php_self ?>" method="post">
<INPUT TYPE='TEXT' value='name' NAME='name' SIZE=30 maxlength='100'><br>
<INPUT TYPE='TEXT' value='message' NAME='message' SIZE=30 maxlength='100'>
<input type="submit" name="submit" value="submit">
</form>
Avatar billede nikolajdu Nybegynder
23. september 2003 - 19:48 #7
Du havde ikke skrevet brugernavn og password til databasen. Prøv at ændre dem til de rigtige værdier.
Avatar billede khalus Nybegynder
23. september 2003 - 19:55 #8
nikolajdu, det er på localhost. Der er ikke noget password.
Når jeg bruger dit script kommer der denne error, når jeg trykker på submit:

You have an error in your SQL syntax near '\'NULL\',\'name\', \'message\',\'\')' at line 1



P.s lav et svar, du skal have point for dit besvær alligevel! (hvis du ikke gider, ikke har tid etc.)
Avatar billede nikolajdu Nybegynder
23. september 2003 - 19:57 #9
Nej jeg svarer ikke før vi er færdige :))

Kan du lave et dump af din databasestruktur?
Avatar billede nikolajdu Nybegynder
23. september 2003 - 20:04 #10
Ok fandt lige et par ting til.

1. Du må nok ikke have et felt der hedder "time" i databasen - Det går jeg ud fra er et reserveret ord.

Prøv om ikke den her dutter.

<?php

$sql_host = "localhost";
$sql_user = "brugernavn";
$sql_passwd = "password";
$db = "news";

mysql_connect($sql_host,$sql_user,$sql_passwd)or die (mysql_error());
mysql_select_db($db)or die (mysql_error());

if($_POST["submit"]){

$timer=date("h:ia d/j/y");
$result=MYSQL_QUERY("INSERT INTO shoutbox (id,name,message,timer)"."VALUES ('NULL','$time', '".$_POST["message"]."','".$_POST["time"]."')")or die(mysql_error());

$result = mysql_query("select * from shoutbox order by id desc limit 5");

    while($r=mysql_fetch_array($result)){       
    $timer=$r["timer"];
    $id=$r["id"];
    $message=$r["message"];
    $name=$r["name"];
    }

}
?>
<form action="<?php echo $_SERVER["PHP_SELF"]; ?>" method="post">
<INPUT TYPE='TEXT' value='name' NAME='name' SIZE=30 maxlength='100'><br>
<INPUT TYPE='TEXT' value='message' NAME='message' SIZE=30 maxlength='100'>
<input type="submit" name="submit" value="submit">
</form>
Avatar billede fangel Nybegynder
23. september 2003 - 20:06 #11
$result=MYSQL_QUERY("INSERT INTO shoutbox (name,message,time)"."VALUES ('".$_POST["name"]."', '".$_POST["message"]."','".$_POST["time"]."')")or die(mysql_error());

(går ud fra id er auto_increement, så ingen grund til at sætte den)

Morten
Avatar billede nikolajdu Nybegynder
23. september 2003 - 20:07 #12
allersidste ;-)

<?php

$sql_host = "localhost";
$sql_user = "brugernavn";
$sql_passwd = "password";
$db = "news";

mysql_connect($sql_host,$sql_user,$sql_passwd)or die (mysql_error());
mysql_select_db($db)or die (mysql_error());

if($_POST["submit"]){

$timer=date("h:ia d/j/y");
$result=MYSQL_QUERY("INSERT INTO shoutbox (id,name,message,timer)"."VALUES ('NULL','".$_POST["name"]."', '".$_POST["message"]."','$timer')")or die(mysql_error());

$result = mysql_query("select * from shoutbox order by id desc limit 5");

    while($r=mysql_fetch_array($result)){
    $timer=$r["timer"];
    $id=$r["id"];
    $message=$r["message"];
    $name=$r["name"];
    }

}
?>
<form action="<?php echo $_SERVER["PHP_SELF"]; ?>" method="post">
<INPUT TYPE='TEXT' value='name' NAME='name' SIZE=30 maxlength='100'><br>
<INPUT TYPE='TEXT' value='message' NAME='message' SIZE=30 maxlength='100'>
<input type="submit" name="submit" value="submit">
</form>
Avatar billede khalus Nybegynder
23. september 2003 - 20:17 #13
nu virker det perfekt. Har skulle rette lidt men ikke det store, vær venlig at lav et svar, så du kan får nogle point!!
Avatar billede nikolajdu Nybegynder
23. september 2003 - 20:19 #14
Oki doki manner :))
Avatar billede khalus Nybegynder
23. september 2003 - 20:21 #15
lige inden. Når man opdaterer siden, skriver den det sidst indtastede data til mysql databasen, så hver gang du opdatere, kommer det sidst skrevede indlæg igen. Lav et svar så du kan få nogle ekspert monz!
Avatar billede nikolajdu Nybegynder
23. september 2003 - 20:22 #16
Hvad mente du med din sidste sætning ??

:))
Avatar billede khalus Nybegynder
23. september 2003 - 20:25 #17
havde glemt at opdatere siden! =)
Avatar billede nikolajdu Nybegynder
23. september 2003 - 20:29 #18
Jamen så takker jeg for point og ønsker dem og deres nærmeste en rigtig god dag ;-)
Avatar billede khalus Nybegynder
23. september 2003 - 20:31 #19
selv tak da
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester