Avatar billede venchil Nybegynder
21. marts 2005 - 19:09 Der er 12 kommentarer og
1 løsning

Gæstebog

Jeg er ved at lave en gæstebog, for første gang i hele min "PHP-karriere"... Det går fint indtil videre, men nu skal jeg til det svære, og det er svært at gennemskue. Jeg har lavet siden, hvor jeg skriver noget i nogle input-felter, og siden, som smækker det hele ind i en MySQL-tabel, med felterne: Navn, Hjemmeside, Besked og Tid, tiden udfylder vist sig selv.

Jeg vil nu gerne have en af jer kloge eksperter til at give et eksempel på, hvordan jeg laver en side/sider, der hiver dataene ud af tabellen, og sætter det op på en pæn måde, f.eks:

<span class="overskrift"><a href="$hjemmeside">$navn</a> skrev $tid:</span>
<br>$besked</br>
Avatar billede venchil Nybegynder
21. marts 2005 - 19:12 #1
Er det ikke nogenlunde sådan jeg skal hente det ud?:
Meen... er stadig i tvivl om hvordan jeg gentager kodestumpen fra tidligere, og alligevel ændre variablerne.

$hent = mysql_query("select navn, hjemmeside, besked, tid from gaestebog order by tid");

while ($vis = mysql_fetch_array($hent)) {
  extract($vis);
  *****kodestump fra tidligere indlæg*****
}
Avatar billede gizp Nybegynder
22. marts 2005 - 08:57 #2
$hent = mysql_query("select * from gaestebog order by tid");

while ($vis = mysql_fetch_array($hent)) {
  echo "<a href=\"". $vis['hjemmeside'] ."\">". $vis['navn'] ."</a>";
  echo $vis['besked'];
}

Sådan skal det cirka se ud, så kan du selv leget lidt videre med det.
Avatar billede venchil Nybegynder
22. marts 2005 - 16:31 #3
Takker :), men hvordan gentager jeg det stykke kode, og samtidig ændre på indlæget?
Avatar billede venchil Nybegynder
22. marts 2005 - 17:55 #4
Jeg har lige opdaget, at min information slet ikke bliver smækket ind i tabellen :(, er der nogen der gidder at se, om der er noget i vejen med disse sider:

CONTENT_GAESTEBOG_SKRIV.HTML:
------------------------------
<html>
<head>
<title>Gæstebog</title>
</head>
<body>

<form action="content_gaestebog_send.php" method="post">
Navn:
<br><input type="text" name="navn"></br>
<p>
Hjemmeside:
<br><input type="text" name="hjemmeside"></br>
<p>
Beksed:
<br><textarea name="tekst" width="100%" rows="10"></textarea></br>

<input type="submit" value="Skriv">
</form>

</body>
</html>
------------------------------




CONTENT_GAESTEBOG_SEND:
------------------------------
<html>
<head>
<title>Gæstebog</title>
</head>
<body>
<?php
$navn = $_REQUEST["navn"];
$hjemmeside = $_REQUEST["hjemmeside"];
$besked = $_REQUEST["besked"];

$conn = mysql_connect("localhost", "bruger", "password");
mysql_select_db("database");

$insertSQL = "insert into gaestebog (navn, hjemmeside, besked)
              values ('$navn', $hjemmeside, $besked)";
mysql_query($insertSQL);

echo "Hvis ingen fejl meddeles, er din besked tilføjet til gæstebogen";
?>
<br><a href="content_gaestebog.php">Til gæstebogen</a>
<?php
mysql_close($conn);
?>
</body>
</html>
------------------------------
Avatar billede gizp Nybegynder
22. marts 2005 - 22:37 #5
Det jeg har skrevet udskriver jo de forskellige indlæg. Den gentager alt mellem { og }.

Du kan se det, når du har smidt noget i databasen.


Jeg vil tro fejlen ligger her:
$insertSQL = "insert into gaestebog (navn, hjemmeside, besked)
              values ('$navn', $hjemmeside, $besked)";

Det burde se sådan ud:

$insertSQL = "insert into gaestebog (navn, hjemmeside, besked)
              values ('". $navn ."','". $hjemmeside ."','".$besked ."')";
Avatar billede venchil Nybegynder
23. marts 2005 - 12:39 #6
Det ser ud til at virke meget bedre :), men beskeden bliver aldrig smidt ind i gæstebogen, selvom jeg har sat feltet til LONGTEXT NOT NULL...

Desuden forstår jeg heller ikke helt hvordan jeg smider dato og tid ind. Jeg mener der er en indbygget variabel i PHP, der undersøger tiden, og putter den i en variabel, men jeg kan ikke huske den.
Jeg forstår heller ikke helt hvordan jeg skal få " - Skrev $tid:" smækket ind ved siden af navn og hjemmeside.
Håber du kan hjælpe :)
Avatar billede venchil Nybegynder
23. marts 2005 - 14:02 #7
Nu har jeg så fundet tiden. Koden skrives sådan på engelsk:
----------------------------------------
$tid = date("l d F Y, G:i");

echo "$tid";
----------------------------------------

Tilgengæld kan jeg ikke huske hvordan jeg udskifter ét ord med et andet, f.eks hvis jeg gerne vil udskifte "Wednesday" med "Onsdag d."
Jeg mener det er noget med

$tid = replace(Wednesday, Onsdag d.)
Avatar billede gizp Nybegynder
23. marts 2005 - 14:48 #8
Koden er vidst str_replace();

Den smider nok ikke noget i tabellen, da du har kaldt textarea for tekst, men på den næste side kalder du den besked ;D
Avatar billede venchil Nybegynder
23. marts 2005 - 19:01 #9
Så skulle det vist være ordnet. Men lige inden jeg gir dig point:

1. Hvordan får jeg teksten " - Skrev $vis['tid']:" efter navnet på den der har skrevet indlæget?

2. Hvordan laver jeg et mellemrum (<p>) mellem indlægene?
Avatar billede gizp Nybegynder
24. marts 2005 - 16:49 #10
Sådan ;)

while ($vis = mysql_fetch_array($hent)) {
  echo "<a href=\"". $vis['hjemmeside'] ."\">". $vis['navn'] ."</a> - ". $vis['tid'] ."<br>";
  echo $vis['besked'] ."<p />";
}
Avatar billede venchil Nybegynder
24. marts 2005 - 18:43 #11
Så er svaret accepteret, men lige inden du går helt. Hvordan får jeg så de nyeste indlæg først. Order by "tid" virker omvendt.
Avatar billede gizp Nybegynder
24. marts 2005 - 22:46 #12
Du skal bruge ORDER BY tid DESC
Avatar billede gizp Nybegynder
25. marts 2005 - 15:40 #13
eller ORDER BY tid ASC
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