Avatar billede manon Nybegynder
21. maj 2002 - 15:34 Der er 51 kommentarer og
2 løsninger

Der er noget galt i koden, men hvad?

<!------læs venligst----->
Dette spørgsmål er oprettet for at jeg kan lære og forstår – at du så evt. kan tjene nogle point ved siden af, kan være til fordel for dig.
Da mine spørgsmål har det med at blive ødelagt af diverse elementer tillader jeg at gøre opmærksom på følgende:

1.
Jeg har ikke svaret, derfor spørger jeg i dette forum.
2.
Jeg er her for at lære.
3.
Når du besvarer mit spørgsmål, må du gerne svare med hele sætninger og korrekte begrundelser.
4.
Du må gerne forklare på en logisk og forståelig måde.
5.
Unødig ’spam’ frabedes.
6.
Har du ingen relevante kommentar/svar bedes du venligst se bort fra dette spørgsmål.
7.
Diskussioner der ikke vedrører dette spørgsmål bedes i venligst tage et andet sted
8.
Du bedes venligst respektere overstående.
<!----------------------->



Som sagt er jeg ved at lære PHP/Mysql og dertil starter jeg i det små og håber med sådanne øvelser at få en logisk forståelse for sprogets opbygning.

Dertil har jeg ude på nettet fundet et lille "Gæstebogscript" som jeg af en eller anden grund ikke kan få til at virke - og jeg spørger forumet her om hjælp.


Efter at have oprettet en tabel i Mysql som ser således ud:

CREATE TABLE gbog(
id int(4) primary key not null auto_increment,
navn varchar(50),
emne varchar(50),
mail varchar(50),
post text,
dato date
);


....hedder min første fil "skriv.php" og koden ser således ud:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
    <title>skriv</title>
</head>
<body>

<form action="gem.php" method="post"><br>
<input type="text" name="navn" value="navn"><br>
<input type="text" name="emne" value="emne"><br>
<input type="text" name="mail" value="mail"><br>
<input type="text" name="post" value="post"><br>
<input type="submit" value="Post indlæg">
<input type="reset" value="Slet felter">
</form>

<?

mysql_connect ("localhost","manon","******");
mysql_select_db ("mysql");
mysql_query ("INSERT INTO gbog (id,navn,emne,mail,post) VALUES ('','$navn','$emne','$mail','$post')");

?>

</body>
</html>


Iflg. vejledningen skal "gem.php" filen være indsat der, men der står intet om hvilken koder der skal ind i "gem.php"



...det næste jeg så skal have er en fil der viser indholdet i tabellen og som hedder "vis.php":

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
    <title>Vis</title>
</head>
<body>
<?

mysql_connect ("localhost","manon","******");
mysql_select_db ("mysql");

$foresp = mysql_query("SELECT * FROM gbog");

while($row = mysql_fetch_array($foresp)) {
echo $row[navn];
echo "<br>";
echo $row[mail];
echo "<br>";
echo $row[emne];
echo "<br>";
echo $row[post];

}
?>
</body>
</html>



Der er elementer jeg ikke forstå ved dette eksembel. Bla. at der i <form> reffereres til "gem.php".
Men i "vis.php" filen vises der intet.
Kan det have noget med min MySQL at gøre?
Jeg ser tabellen (i min phpmyadmin) og felterne, men intet indhold.

Kan i hjælpe mig?
Avatar billede ztyxx Nybegynder
21. maj 2002 - 15:41 #1
prøv at lave skriv.php sådan


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
    <title>skriv</title>
</head>
<body>

<form action="<?php $PHP_SELF; ?>" method="post"><br>
<input type="text" name="navn" value="navn"><br>
<input type="text" name="emne" value="emne"><br>
<input type="text" name="mail" value="mail"><br>
<input type="text" name="post" value="post"><br>
<input type="submit" value="Post indlæg">
<input type="reset" value="Slet felter">
</form>

<?

mysql_connect ("localhost","manon","******");
mysql_select_db ("mysql");
mysql_query ("INSERT INTO gbog (navn,emne,mail,post) VALUES ('$navn','$emne','$mail','$post')");

?>

</body>
</html>
Avatar billede ztyxx Nybegynder
21. maj 2002 - 15:42 #2
jeg har fjernet id i insert queryen, da den er sat til auto_increment skal du slet ikke bekymre dig om at sætte noget i den, det klarer mysql helt af sig selv
Avatar billede jakoba Nybegynder
21. maj 2002 - 15:47 #3
Jeg ville skrive 0 (ciffer nul) snarere end '' (2 stk enkelt anførselstegn) som værdi til id. anførselstegnene påstår det skulle være en stringtype.

Og sæt altid en or die( mysql_error() ) på de mysql kald der tillader dem:

mysql_connect ("localhost","manon","******") or die( "connect fejl: ".mysql_error() );
mysql_select_db ("mysql") or die( "connect fejl: ".mysql_error() );
mysql_query ("INSERT INTO gbog (id,navn,emne,mail,post) VALUES (0,'$navn','$emne','$mail','$post')") or die( "connect fejl: ".mysql_error() );

det skader ikke og giver god info om hvad der evt gik galt.

mvh JakobA
Avatar billede ztyxx Nybegynder
21. maj 2002 - 15:47 #4
glem den første jeg lavede, prøv denne


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
    <title>skriv</title>
</head>
<body>
<?php

mysql_connect ("localhost","manon","******");
mysql_select_db ("mysql");
    if ($navn && $emne && $mail && $post) {
       
mysql_query ("INSERT INTO gbog (navn,emne,mail,post) VALUES ('$navn','$emne','$mail','$post')");
} else {
   
?>
<form action="<?php $PHP_SELF; ?>" method="post"><br>
<input type="text" name="navn" value="navn"><br>
<input type="text" name="emne" value="emne"><br>
<input type="text" name="mail" value="mail"><br>
<input type="text" name="post" value="post"><br>
<input type="submit" value="Post indlæg">
<input type="reset" value="Slet felter">
</form>
<?php
}
?>
</body>
</html>
Avatar billede manon Nybegynder
21. maj 2002 - 15:52 #5
ztyxx >>
1.
"<?php $PHP_SELF; ?>" - hvad kalder man dette? Hvorfor $PHP_SELF ?
2.
Hvorfor har du tilføjet "if ($navn && $emne && $mail && $post) {" sætningen og hvorfor er dette ikke skrevet i det eksembel jeg har?
Avatar billede ztyxx Nybegynder
21. maj 2002 - 15:59 #6
1. så behandler den dine data fra den side der indtastes på

2. if sætningen er tilføjet for at fortælle scriptet at det skal køre insert queryen, hvis variablerne $navn, $emne, $mail og $post er udfyldt, hvis de ikke er udfyldt, vil scriptet blot returnere med indtastningsformen (else sætningen sørger for det), hvis du vil have scriptet til at sende brugeren direkte til siden vis.php, indsætter du blot
header("Location:vis.php");
efter insert queryen
Avatar billede manon Nybegynder
21. maj 2002 - 15:59 #7
jacoba >
ja, genialt og jeg giver dig kun ret - LJWeb har forklaret mig det engang at det var smart med sådan en kode.

Men jeg skal jo først lige lære basic før vi kommer videre til sådan noget advanceret :-)
Avatar billede manon Nybegynder
21. maj 2002 - 16:09 #8
Er denne overhoved rigtig???

CREATE TABLE gbog(
id int(4) primary key not null auto_increment,
navn varchar(50),
emne varchar(50),
mail varchar(50),
post text,
dato date
);


Hvis jeg bruger ZTYXX svar fra kl 15:47:48 kan jeg iflg. min PHPMyAdmin ikke se nogle data i min tabel.
Avatar billede manon Nybegynder
21. maj 2002 - 16:11 #9
Ztyxx >>

header("Location:vis.php");

Dvs at du ville gøre det sådan her:
mysql_query ("INSERT INTO gbog (navn,emne,mail,post) VALUES ('$navn','$emne','$mail','$post')");
header("Location:vis.php");
} else {
Avatar billede tipsen Nybegynder
21. maj 2002 - 16:13 #10
Mht. $PHP_SELF:

Reelt set skal der stå:

<form action="<?php echo $PHP_SELF; ?>" method="post">
<form action="<?php =$PHP_SELF; ?>" method="post">

$PHP_SELF er en indbygget php-variabel som indeholder navnet på den fil som scriptet selv ligger i! (med mindre scriptet er inkluderet i en anden fil!) derfor vil ovenstående sætning sikre, at en submit af formen kalder siden selv - der er ikke noget galt i selv at skrive navnet på php-filen, men så skal man huske at rette koden, hvis man renamer filen - det behøver man ikke tænke på, hvis man bruger $PHP_SELF!
Avatar billede manon Nybegynder
21. maj 2002 - 16:15 #11
tipsen >
Det forstod jeg ikke meget af, men det kommer nok *s*
Avatar billede ztyxx Nybegynder
21. maj 2002 - 16:25 #12
manon, jeg forstår ikke hvorfor det ikke virker for dig, da jeg lige har testet, og det virker fint
Avatar billede manon Nybegynder
21. maj 2002 - 16:42 #13
ztyxx >
jeg har ingen data i min databasetabel - underligt.
Avatar billede ztyxx Nybegynder
21. maj 2002 - 16:53 #14
ja det er underligt, jeg har brugt tabelstrukturen du viste, og det kode jeg selv smed.
Avatar billede tipsen Nybegynder
21. maj 2002 - 17:05 #15
Har du rettet til:

<form action="<?php echo $PHP_SELF; ?>" method="post">
Avatar billede tipsen Nybegynder
21. maj 2002 - 17:06 #16
ztyxx: Prøv at kigge på html-koden og kontroller action i formen for den kode du har smidt - tror du bliver overrasket!
Avatar billede manon Nybegynder
21. maj 2002 - 17:11 #17
tipsen >
sorry - gør det nu
Avatar billede manon Nybegynder
21. maj 2002 - 17:22 #18
Hmm...måske er det mig der har misforstået det, men er det ikke meningen at "vis.php" skal vise indholdet af Tabellen "gbog" ?

Pt. ser mine koder således ud:

skriv.php:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
    <title>skriv</title>
</head>
<body>
<?php

mysql_connect ("localhost","manon","*****") or die( "connect fejl: ".mysql_error() );
mysql_select_db ("mysql") or die( "connect fejl: ".mysql_error() );
    if ($navn && $emne && $mail && $post) {
mysql_query ("INSERT INTO gbog (id,navn,emne,mail,post) VALUES (0,'$navn','$emne','$mail','$post')") or die( "connect fejl: ".mysql_error() );
} else {
   
?>
<form action="<?php echo $PHP_SELF; ?>" method="post"><br>
<input type="text" name="navn" value="navn"><br>
<input type="text" name="emne" value="emne"><br>
<input type="text" name="mail" value="mail"><br>
<input type="text" name="post" value="post"><br>
<input type="submit" value="Post indlæg">
<input type="reset" value="Slet felter">
</form>
<?php
}
?>
</body>
</html>


.........og min vis.php ser således ud:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
    <title>Vis</title>
</head>
<body>
<?php

mysql_connect ("localhost","manon","*****");
mysql_select_db ("mysql");

$foresp = mysql_query("SELECT * FROM gbog");

while($row = mysql_fetch_array($foresp)) {
echo $row[navn];
echo "<br>";
echo $row[mail];
echo "<br>";
echo $row[emne];
echo "<br>";
echo $row[post];

}
?>
</body>
</html>
Avatar billede ztyxx Nybegynder
21. maj 2002 - 17:22 #19
hvad skulle det være der overrasker, den virker på http://www.friserverplads.dk/ztyxx/skriv.php
Avatar billede manon Nybegynder
21. maj 2002 - 17:24 #20
ztyxx >>
hov - det virker jo hos dig *s*

kan du kopiere hele din skriv.php så jeg kan sammenligne med min og se hvilke fejl jeg har lavet?
Avatar billede tipsen Nybegynder
21. maj 2002 - 17:27 #21
Her er html-koden du genererer:

<form action="" method="post"><br>

Hvad der sker når du submitter formen afhænger nu af den browser du bruger - det jeg skriver ovenfor skal rettes!
Avatar billede manon Nybegynder
21. maj 2002 - 17:38 #22
tipsen >
dit indslag fra kl 17:27:16 forstår jeg ikke (beklager, ved jeg er tung, men jeg skal have den med 7"), men kan du uddybe det?
Avatar billede tipsen Nybegynder
21. maj 2002 - 17:44 #23
i det forslag som ztyxx har lavet skal du i stedet skrive:

<form action="<?php echo $PHP_SELF; ?>" method="post">

for at det fungerer!

Hvis der bare står:

<form action="<?php $PHP_SELF; ?>" method="post">

beder man ikke php om at skrive variablen ud og derfor giver det samme html-kode som:

<form action="" method="post">

-hvilket jo ikke er så smart igen...
Avatar billede tipsen Nybegynder
21. maj 2002 - 18:23 #24
var det forståeligt?
Avatar billede manon Nybegynder
21. maj 2002 - 18:39 #25
tipsen >
ja, det var forståelig *s*
men som du kan se i min kommentar kl 17:22:11 har jeg sat den rigtige kode ind.
Avatar billede tipsen Nybegynder
21. maj 2002 - 19:40 #26
godt så... - jeg siger ikke mere... ;-)
Avatar billede manon Nybegynder
21. maj 2002 - 19:50 #27
tipsen > du må meget gerne tilføje mere :-)
Avatar billede manon Nybegynder
21. maj 2002 - 19:51 #28
Men jeg forstår ikke hvorfor det ikke virker hos mig?
Avatar billede manon Nybegynder
21. maj 2002 - 20:01 #29
Hey, er det bare mig der har for meget tis og for travlt .... men er der ingen at hjæpe mere? *s*
Avatar billede manon Nybegynder
21. maj 2002 - 20:04 #30
tis = tid (beklager*gg*)
Avatar billede wizprod.com Nybegynder
21. maj 2002 - 20:13 #31
<form action="<?php echo $PHP_SELF; ?>" method="post">

kan skrives en anelse pænere :)

<form action="<?=$PHP_SELF?>" method="post">

sådan, så ser det overskueligt ud også :)
Avatar billede wizprod.com Nybegynder
21. maj 2002 - 20:16 #32
og en ting til...

mysql_query ("INSERT INTO gbog (navn,emne,mail,post) VALUES ('$navn','$emne','$mail','$post')") or die(mysql_error());

så skriver den hvis der er noget galt, meget brugbart :) tilføj det også ved dine connects...
Avatar billede manon Nybegynder
21. maj 2002 - 22:16 #33
Hmmmm .....


Jeg tror sq der er noget galt med min 'localhost' og MySQL.
Det er nog derfor jeg ikke kan få det til at virker.
Avatar billede ztyxx Nybegynder
22. maj 2002 - 09:48 #34
tipsen> okay, så er jeg med, troede at du mente at det ikke ville virke, hvilket det jo gør ;-)

manon> jeg brugte den kode jeg postede, og har bare tilføjet
echo "Dit indlæg er gemt";
echo "<center><a href='vis.php'>Læs gæstebog</a></center>";
Avatar billede tipsen Nybegynder
22. maj 2002 - 10:01 #35
ztyxx: Jeg mener at 'action=""' ikke er standard og resultatet er at det (vist nok) virker i IE, fordi den som standard kalder siden selv, hvis der ikke er angivet noget i action. I andre browsere risikerer man bare, at der ikke sker noget som helst - så det vil fungere fint, hvis man kun tester det i IE, men vil kikse i praksis for nogle brugere.
Avatar billede ztyxx Nybegynder
22. maj 2002 - 10:43 #36
tipsen> oki, vil da lige huske det fremover :-)
Avatar billede manon Nybegynder
22. maj 2002 - 16:36 #37
ztyxx >>
ville du være venlig at sende mig hele kilden til "skriv.php", for jeg fatter intet og har intet at sammenligne med. Derfor kan jeg heller ikke se hvad jeg gør forkert og hvor min fejl er.

Pt. aner jeg ikke om det er min Apache server der kokser, eller min Localhost der ikke virker eller scriptet som er i stykker.
Avatar billede ztyxx Nybegynder
22. maj 2002 - 16:40 #38
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
    <title>skriv</title>
</head>
<body>
<?php

mysql_connect ("localhost","navn","******") or die (mysql_error());
mysql_select_db ("database") or die (mysql_error());
    if ($navn && $emne && $mail && $post) {
       
mysql_query ("INSERT INTO gbog (navn,emne,mail,post) VALUES ('$navn','$emne','$mail','$post')") or die (mysql_error());
    echo"<center>Dit indlæg er gemt</center>";
    echo "<center><a href='vis.php'>Læs gæstebog</a></center>";
} else {
   
?>
<form action="<?php echo $PHP_SELF; ?>" method="post"><br>
<input type="text" name="navn" value="navn"><br>
<input type="text" name="emne" value="emne"><br>
<input type="text" name="mail" value="mail"><br>
<input type="text" name="post" value="post"><br>
<input type="submit" value="Post indlæg">
<input type="reset" value="Slet felter">
</form>
<?php
}
?>
</body>
</html>
Avatar billede tipsen Nybegynder
22. maj 2002 - 16:45 #39
manon: Du skal lære lidt rationel fejlfindingsteknik:

1. Afgør om apache-server fungerer
  -prøv med en alm. html-side
  -prøv med et simpelt php-script som eks. <?php phpinfo(); ?>
2. Afgør om mysql-server fungerer
  -prøv med noget helt simpelt mysql
3. Afgør om scriptet fungerer - hvis det ikke fungerer kommer der måske en fejl?
  Hvis der ikke kommer en fejl, men der bare ikke sker det ønskede kan du eks. begynde at udskrive værdien af forskellige variable for at se om de indeholder det du forventer...

Det er jo tåbeligt, at sidde og bikse flere timer med et velfungerende script, hvis web-serveren er nede...
Avatar billede manon Nybegynder
22. maj 2002 - 17:06 #40
tipsen >>

JA _ DU HAR FAT I DET RIGTIGE *GG*

Det er jo også det jeg prøver på med spm nr http://www.eksperten.dk/spm/214572 *s*

1.
Jeg kan kalde localhost frem i min server, både http://localhost/gbog/skriv.php ligesom jeg kan hente andre php filer frem.

ALT DETTE VIRKER FINT :-)

2.
Det er jo så der jeg tror den ikke virker, da jeg ikke for nogle data ind i min "gbog" databasen som jeg har oprettet vha. CREATE TABEL som du bla. ser øverst på denne side her :-)

3.
Det var bla. derfor jeg bad ZTYXX om at give mig sit script - nu ved jeg at det ikke er scriptet den er gal med :-)

Og ja - jeg kan kun give dig ret i at det er tåbelig at side og bikse med et velfungerende script, men jeg er ved at blive ret utålmodig *GGG* - fordi ingen svarer *s*


Anyway - hvorfor jeg tror det er min MySQL/Database, er fordi jeg har et velfungerende PHP-nyhedsbrevscript SOM VIRKER PÅ DIVERSE WEBHOTELLER og bla. på min kæreste side og som også virker på nogle af de andre sider hvor jeg bruger det - BARE IKKE PÅ LOCALHOST.

Så hvor er fejlen så ? *s*


,
Avatar billede manon Nybegynder
22. maj 2002 - 17:09 #41
ps: jeg 'råber' ikke - markere kun tekst for at fremhæve *s*
Avatar billede ztyxx Nybegynder
22. maj 2002 - 17:16 #42
prøv at geninstallere din mysql, husk lige at tage backup af dine tabeller først
Avatar billede manon Nybegynder
22. maj 2002 - 17:41 #43
jeg har nu geninst. mysql
Avatar billede manon Nybegynder
22. maj 2002 - 17:43 #44
dvs at jeg har afinst. og fjernet _alle_ filer og geninst. vha. http://www.webcafe.dk/artikler/databaser/installermysql/ vejledningen.
Avatar billede ztyxx Nybegynder
22. maj 2002 - 20:48 #45
virker det så??
Avatar billede ztyxx Nybegynder
23. maj 2002 - 15:03 #46
prøv at kigge i din php.ini og se om Register_globals er on eller off, hvis den er off så prøv at sætte den til on, det kan være en mulig løsning
Avatar billede ztyxx Nybegynder
25. maj 2002 - 19:30 #47
er du kommet videre, eller driller det stadig??
Avatar billede manon Nybegynder
28. maj 2002 - 02:12 #48
jeg er desværre ikke kommet videre, da jeg havde et mega xp crash her i fredags og var lige ved at miste al data, men jeg var nød til at formatere og geninst. det hele.
Avatar billede manon Nybegynder
04. juni 2002 - 22:23 #49
jeg vil gerne lukke dette spm her og oprette et nyt, så dem der ønsker point skal skynde sig og svare :-)
Avatar billede ztyxx Nybegynder
05. juni 2002 - 08:43 #50
oki, skal kun have point hvis du synes at jeg har bidraget med noget du kan bruge :-)
Avatar billede manon Nybegynder
13. juni 2002 - 04:20 #51
ztyxx >>
jeg vil meget gerne have du svare, da jeg gerne belønner folk der gider at sætte sig ind i et spm og bruge tid på det :-)
Så svar gerne da jeg skal starte forfra.
Avatar billede ztyxx Nybegynder
14. juni 2002 - 23:34 #52
jamen så siger jeg da tak for tilliden, ved selv hvor rart det er når folk gider at hjælpe, men det er nu lige i overkanten med 100 point :-)
Avatar billede ztyxx Nybegynder
06. juli 2002 - 16:36 #53
takker for point :-)
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