Avatar billede eltempogigante Nybegynder
24. januar 2005 - 02:54 Der er 14 kommentarer og
1 løsning

En specifik gæstebog ( streng layout) og alligevel meget simpel?

Jeg har brug for en simpel gæstebog der kan gemme kommentarerne i en text fil der så er formateret på denne måde:

<p class="lefttextpara">&nbsp;</p>
    <p class="lefttextpara">November 30, 2004<br />
        <a href="michael@mail.com">Michael</a> said:<br />
        Love your work ! :-)</p>

Den fil skal så hentes ind i en side med phpinclude eller lignende.

Gæstebogen skal udfra input fra en form få: Name, E-mail og Message - disse input skal så formateres som ovenstående sammen med en dato for inputtet.

Altså:

<p class="lefttextpara">&nbsp;</p>
    <p class="lefttextpara">DATO<br />
        <a href="EMAIL">NAVN</a> said:<br />
        BESKED</p>

Helt optimalt skal antallet af beskeder begrænses til 5 per text fil hvorefter der skal være link til en ny hel side hvor der bare er en include til textfil 2

Spørgsmålet er så hvordan gør man?
Avatar billede tfswebguy Nybegynder
24. januar 2005 - 05:38 #1
Overvejet at bruge MySQL i stedet for tekstfiler?
Avatar billede eltempogigante Nybegynder
24. januar 2005 - 06:35 #2
Ok MySQL kan også bruges - nogle forslag? Konkret kode?
Avatar billede tfswebguy Nybegynder
24. januar 2005 - 06:54 #3
Hvis du har Register Globals til ON på den server du bruger:

<?
$tid = time();
mysql_connect("localhost","dit-sqlnavn","din-sql-kode");
mysql_select_db("din-sql-database");
if($gem){
mysql_query("INSERT INTO gaestebog (email,navn,besked,tid) VALUES('$email','$navn','$besked','$tid')");
}
?>
<form method='post'>
<input name='email' style='width:100px'> Din email<br>
<input name='navn' style='width:100px'> Dit navn<br>
<input name='besked' style='width:100px'> Din besked<br>
<input type='submit' name='gem' value='Gem'>
</form><p>
<?
$hent_gaestebog = mysql_query("SELECT * FROM gaestebog ORDER BY id DESC");
while($gaestebog = mysql_fetch_array($hent_gaestebog)){
$dato = date("F d, Y", $gaestebog[tid]);
print "
<p class='lefttextpara'>&nbsp;</p>
<p class='lefttextpara'>$dato<br />
<a href='mailto:$gaestebog[email]'>$gaestebog[navn]</a> said:<br />
$gaestebog[besked]</p>";
}
?>

Den der, henter alle beskeder fra gæstebogen ud på én side. Jeg har endnu ikke sat mig ind i hvordan man får den til at vise 5 beskeder kun, hvor man så skal trykke på et link, og fortsætter.
Så hvis ikke en anden giver dig løsningen på det, så må du lige vente til senere i dag, så skal jeg nok kigge på det.

Mvh Daniel Truelsen
Avatar billede eltempogigante Nybegynder
24. januar 2005 - 13:55 #4
hej tak når jeg prøver med din kode kommer følgende fejlmeddelelse der hvor indlæggene skulle have stået:

Warning: mysql_query() [function.mysql-query]: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) in /usr/home/web/web16855/contact/guest.php on line 93

Warning: mysql_query() [function.mysql-query]: A link to the server could not be established in /usr/home/web/web16855/contact/guest.php on line 93

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /usr/home/we
Avatar billede tfswebguy Nybegynder
24. januar 2005 - 14:00 #5
Hvilken udbyder har du scriptet på?
Avatar billede eltempogigante Nybegynder
24. januar 2005 - 14:09 #6
web10 - de har både PHP og MySQL
Avatar billede eltempogigante Nybegynder
24. januar 2005 - 14:11 #7
men jeg aner ikke om de har "Register Globals til ON"?
Avatar billede eltempogigante Nybegynder
24. januar 2005 - 14:14 #8
Skal man først oprette nogle ting i databasen til php scriptet før det virker? Lige nu er databasen bare tom - den ER oprettet og kører, men indeholder ikke data.
Avatar billede eltempogigante Nybegynder
24. januar 2005 - 14:24 #9
lidt mere: Hvis jeg bytter om på rækkefølgen (altså laver den samme rækkefølge som du har skrevet) af de to php scripts: får jeg kun denne fejl:

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /usr/home/web/web16855/contact/guest.php on line 102
Avatar billede tfswebguy Nybegynder
24. januar 2005 - 15:31 #10
du skal lave en tabel i din database, og kalde den "gaestebog"
I den skal der være 5 felter:
id,int,5,auto_increment,primary
email,varchar,255
navn,varchar,255
besked,longtekst
tid,int,12

Og husk at ændre i toppen af det jeg har lavet, så det passer til dine mysqloplysninger, så skulle det virke
Avatar billede eltempogigante Nybegynder
24. januar 2005 - 16:18 #11
ok prøver lige, takker! :-)
Avatar billede eltempogigante Nybegynder
24. januar 2005 - 16:34 #12
Hej igen - det virker perfekt nu! Takker!

Er det muligt at vise en "thanks tekst" bagefter og en "You forgot to write name etc." hvis man ikke har udfyld alle felterne?

Og hvad med begrænsningen til 5 indlæg?
Avatar billede tfswebguy Nybegynder
24. januar 2005 - 18:49 #13
<?
$tid = time();
mysql_connect("localhost","dit-sqlnavn","din-sql-kode");
mysql_select_db("din-sql-database");
if($gem){
if($email AND $navn AND $besked){
mysql_query("INSERT INTO gaestebog (email,navn,besked,tid) VALUES('$email','$navn','$besked','$tid')");
print "Tak for beskeden i min gæstebog";
}else{
print "Du har ikke udfyldt alle felter<p>";
}
}
?>
<form method='post'>
<input name='email' style='width:100px'> Din email<br>
<input name='navn' style='width:100px'> Dit navn<br>
<input name='besked' style='width:100px'> Din besked<br>
<input type='submit' name='gem' value='Gem'>
</form><p>
<?
$hent_gaestebog = mysql_query("SELECT * FROM gaestebog ORDER BY id DESC");
while($gaestebog = mysql_fetch_array($hent_gaestebog)){
$dato = date("F d, Y", $gaestebog[tid]);
print "
<p class='lefttextpara'>&nbsp;</p>
<p class='lefttextpara'>$dato<br />
<a href='mailto:$gaestebog[email]'>$gaestebog[navn]</a> said:<br />
$gaestebog[besked]</p>";
}
?>

Den gør nu, at der bliver vist, hvis man ikke har udfyldt alle felter, samt giver en "thanks tekst" ;o)

Det med begrænsningen på 5 indlæg, vil jeg lige lade ligge til i morgen, da jeg har programmeret konstant i ca 25 timer nu.

Mvh Daniel Truelsen
Avatar billede eltempogigante Nybegynder
25. januar 2005 - 21:20 #14
Hej jeg har fået et specikt problem med gæstebogen da jeg godt kunne tænke mig at den understøtter linjeskift. Hvis man laver linjeskift vises dette ikke. Der er selvfølgelig flere point på højkant for en løsning! :-)
Avatar billede tfswebguy Nybegynder
25. januar 2005 - 23:03 #15
<?
$tid = time();
mysql_connect("localhost","dit-sqlnavn","din-sql-kode");
mysql_select_db("din-sql-database");
if($gem){
if($email AND $navn AND $besked){
mysql_query("INSERT INTO gaestebog (email,navn,besked,tid) VALUES('$email','$navn','$besked','$tid')");
print "Tak for beskeden i min gæstebog";
}else{
print "Du har ikke udfyldt alle felter<p>";
}
}
?>
<form method='post'>
<input name='email' style='width:100px'> Din email<br>
<input name='navn' style='width:100px'> Dit navn<br>
<textarea name='besked' rows='4' cols='40'></textarea> Din besked<br>
<input type='submit' name='gem' value='Gem'>
</form><p>
<table border='0'
<?
$hent_gaestebog = mysql_query("SELECT * FROM gaestebog ORDER BY id DESC");
while($gaestebog = mysql_fetch_array($hent_gaestebog)){
$dato = date("F d, Y", $gaestebog[tid]);
$besked = nl2br($gaestebog[besked]);
print "
<tr><td>
<p class='lefttextpara'>&nbsp;</p>
<p class='lefttextpara'>$dato<br />
</td><td>
<a href='mailto:$gaestebog[email]'>$gaestebog[navn]</a> said:<br />
$besked</p>
</td></tr>";
}
?>
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