Avatar billede ahrensberg Nybegynder
15. februar 2003 - 10:56 Der er 12 kommentarer og
2 løsninger

Gæstebog i MySQL

Jeg er nybegynder og har prøvet at lave en gæstebog, og jeg kan sagtens indtaste data selv i en database, og så få vist det på siden, men jeg kan ikke gøre det fra siden.

Den smider ikke det ind i databasen, som jeg beder den om.
Kan nogen se fejlen på nedenstående PHP-site:

======================================

<HTML>
<HEAD><TITLE>Min gæstebog</TITLE></HEAD>
<BODY>

<?
$db = mysql_connect("localhost","bruger","password");
mysql_select_db("gbog",$db);
if ($skriv){
  $besked = str_replace("\n","<BR>",$besked);
  $dato_array = getdate();
  $dato = $dato_array["mday"]."/".$dato_array["mon"]."-".$dato_array["year"];
  mysql_query("INSERT INTO bog (navn,email,dato,besked) VALUES ('$navn','$email','$dato','$besked')");
}
?>

<CENTER>

<FORM METHOD=POST ACTION=<? echo $PHP_SELF; ?>>
<INPUT TYPE=hidden NAME=skriv VALUE=1>
navn: <INPUT TYPE=text NAME=navn><BR>
email: <INPUT TYPE=text NAME=email><BR>
<TEXTAREA NAME=besked COLS=30 ROWS=5></TEXTAREA><BR>
<INPUT TYPE=submit VALUE="send">
</FORM>

<br><br><br>

<TABLE border=1>
<?
$foresp = mysql_query("SELECT navn,email,dato,besked FROM bog ORDER BY nr DESC");
while($data = mysql_fetch_row($foresp)){
  echo "<TR><TD VALIGN=TOP>";
  echo "fra: <A HREF=\"mailto:$data[1]\">$data[0]</A>";
  echo "<BR>$data[2]";
  echo "</TD><TD VALIGN=TOP>$data[3]</TD></TR>";
}
?>
</TABLE>

</BODY>
</HTML>

======================================

Ps.:

Jeg har udskifte bruger og password med mit eget, for den virker jo som sagt, fint med at læse i databasen.

Jeg har også prøvet at udskifte <? echo $PHP_SELF; ?> med filnavnet, for den skriver ikke noget istedet for <? echo $PHP_SELF; ?>, som den burde, men det virker stadig ikke!
Avatar billede ahrensberg Nybegynder
15. februar 2003 - 11:15 #1
Har hævet pointene...
Avatar billede nicklasb Nybegynder
15. februar 2003 - 11:16 #2
er dato et date felt?? For så vil den nemlig ikke skrive noget ind sådan som du har skrevet scriptet der..

prøv med

  $dato = date("Y-m-d");

i stedet for

  $dato_array = getdate();
  $dato = $dato_array["mday"]."/".$dato_array["mon"]."-".$dato_array["year"];

Det er da i hvert falde en start..
Avatar billede nicklasb Nybegynder
15. februar 2003 - 11:18 #3
og står der noget i $db ??

Prøv at skriv en
echo $db
et eller andet sted i scriptet.. og se om den skriver den ønskede database..
Avatar billede nicklasb Nybegynder
15. februar 2003 - 11:24 #4
så virker den i hvert falde her.. :)

http://www.bornstein.dk/bog.php
Avatar billede ahrensberg Nybegynder
15. februar 2003 - 11:25 #5
Ok, nu har jeg ædret $dato, men den gemmer det jo stadig ikke ned i databasen når jeg klikker på Submit (send)...

I $db står der "Resource id #2"
Avatar billede ahrensberg Nybegynder
15. februar 2003 - 11:27 #6
Øjeblik... jeg prøver lige at lægge den online, for lige nu virker det i hvert fald ikke lokalt på min pc...
Avatar billede nicklasb Nybegynder
15. februar 2003 - 12:01 #7
ok.. men det eneste jeg har rettet i dit script er at jeg har ændret datoen..
og så har jeg ændret tilslutningen til databasen så der kommer til at stå:

$local = "localhost";
$db = mysql_connect("$local","bruger","password");

da min localhost indeholder . (punktumer), og dem tror jeg ikke den er så glad for..

og så lige for at være lidt irreternde.. det er godt lige at logge af mysql-serveren igen..
det kan du gøre med en
<?  mysql_close(); ?>
i bunden..
Avatar billede ahrensberg Nybegynder
15. februar 2003 - 13:41 #8
Ok... jeg siger mange tak for hjælpen! Jeg fandt ud af hvorfor det ikke virkede, eller det vil sige, det gjorde jeg ikke, men det virkede On-line, men ikke lokalt på min maskine, så jeg håber det er i orden at vi deler pointene, da jeg egentlig selv fandt fejlen på mit spørgsmål, men det var alligevel nogle gode ting du ellers kom med!  :)

Hva' kan der egentlig ske ved at man ikke lukker den?
Avatar billede ahrensberg Nybegynder
15. februar 2003 - 13:43 #9
Hov, du har jo ikke engang sendt et svar! Send du lige et svar, så får du halvdelen af pointene...  ;-)
Avatar billede ahrensberg Nybegynder
15. februar 2003 - 13:50 #10
Hva' gør -> $besked = str_replace("\n","<BR>",$besked); <- egentlig?
Avatar billede nicklasb Nybegynder
15. februar 2003 - 13:50 #11
Jo.. vær så god..

Et af problemerne ved ikke at lukke, er hvis den først har oprettet forbindelse, og man så kalder siden, til at oprette forbindelse igen.. Så kan den ind imellem godt komme og brokke sig over at der allerede er oprettet forbindelse til en database.
Avatar billede nicklasb Nybegynder
15. februar 2003 - 13:53 #12
så ikke lige den sidste besked.. :)

Når du skriver noget i et textarea, og sågar i din databse, genner den linieskift med kommandoen \n.. Men for at printe et linieskift i html skal man bruge <br>.
Kommandoen \n laver kun et linieskift i kildekoden. Men bliver ikke printet ud.
Det den kommando så gør at bare at udskifte alle \n med <br> i variablen $besked
Avatar billede ahrensberg Nybegynder
15. februar 2003 - 14:09 #13
Aaaahh... ok! Jamen, så vil jeg da sige mange tak for hjælpen!
Avatar billede nicklasb Nybegynder
15. februar 2003 - 14:11 #14
det var så lidt.. :)
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
Computerworld tilbyder specialiserede kurser i database-management

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