21. maj 2002 - 15:34Der 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>
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.
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
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?
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
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 {
$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!
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.
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.
<!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 {
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...
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.
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.
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.
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.