Avatar billede Slettet bruger
30. oktober 2005 - 15:21 Der er 37 kommentarer og
1 løsning

Paging i gæstebog + andre små spørgsmål

Hello eksperter!

www.vokadin.dk/test/yeah/

Nogle der vil lave følgende ting:

1. Lave sådan at den viser 20 poster pr. side
2. Få dato og tid til at fungere så den viser 24/12-2005 18:45
3. Få den til at smide en tilbage til index.php efter man har skrevet i gæstebogen

Er dum til PHP og MySql, så hvis det kunne blive skåret ud i pap ville det være rigtig rart!

Alle får points, og gerne flere :)

På forhånd tak!

-Nico

INDEX.PHP:

<? include "config.php"; ?>

<p><font size="2" face="Verdana">Vis Forum - <a href="tilfoej.php">Tilføj Indlæg</a></font></p>

<hr color="#000000">

<?    $res_tagwall = mysql_query("SELECT * FROM tagwall order by id DESC");
            while ($row_tagwall = mysql_fetch_array($res_tagwall)){
?>
<div align="left">
  <table border="0" width="262" height="14" cellspacing="0" cellpadding="0">
    <tr>
      <td width="262" height="1"><font size="2" face="Verdana"><i>Navn</i> : <b><?=$row_tagwall[navn]?></b></font></td>
    </tr>
    <tr>
      <td width="262" height="1"><font size="2" face="Verdana"><i>Dato</i> : <b><?=$row_tagwall[dato]?></b></font></td>
    </tr>
    <tr>
      <td width="262" height="1"><font size="2" face="Verdana"><i>Hjemmeside</i> : <b><a href="http://<?=$row_tagwall[url]?>.dk" target="_blank"><?=$row_tagwall[url]?></a></b></font></td>
    </tr>
    <tr>
      <td width="262" height="14"><font size="2" face="Verdana"><i>Besked</i> :</font></td>
    </tr>
    <tr>
      <td width="262" height="4"><font size="2" face="Verdana"><b><?=$row_tagwall[txt]?></b></font></td>
    </tr>
  </table>
</div><br>
<?
}
?>

TILFOEJ.PHP:

<? include "config.php"; ?>

<?
if ($_POST["action"] == "update")
{
    $navn = ($_POST["navn"]);
    $url = ($_POST["url"]);
    $txt = ($_POST["txt"]);
    $id = ($_POST["id"]);
    $dato_array = getdate();
    $dato = $dato_array["mday"] . "/" . $dato_array["mon"] . "-" . $dato_array["year"];
    $ip = getenv('REMOTE_ADDR');


    $sql = "INSERT INTO tagwall SET navn = '$navn', ip = '$ip', url = '$url', dato = '$dato', id = '$id', txt = '$txt'";
    mysql_query($sql) or die(mysql_error());
    header("location: index.php");
}
?>

<p>
<font size="2" face="Verdana"><a href="index.php">Vis Forum</a> - Tilføj Indlæg</font></p>

<hr color="#000000">
<p></p>
<form action="tilfoej.php?m=saadan" method="post">
<input type="hidden" name="action" value="update">
<div align="left">
    <table border="0" width="376" height="1" cellspacing="0" cellpadding="0">
        <tr>
            <td width="125" height="1"><font size="2" face="Verdana">Navn:</font></td>
            <td width="216" height="1"><font size="2" face="Verdana">
                <input type="text" name="navn" size="20" style="background-color: #FFFFFF; color: #000000; font-size: 13 px; font-family: Verdana; font-weight: bold; border: 1 solid #000000">&nbsp;</font>
            </td>
        </tr>
        <tr>
            <td width="125" height="24"><font size="2" face="Verdana">Hjemmeside:</font></td>
            <td width="216" height="24"><font size="2" face="Verdana">
                http://<input type="text" name="url" size="20" style="background-color: #FFFFFF; color: #000000; font-size: 13 px; font-family: Verdana; font-weight: bold; border: 1 solid #000000"></font>
            </td>
        </tr>
        <tr>
            <td width="125" height="11"><font size="2" face="Verdana">Besked:</font></td>
            <td width="216" height="11"><font size="2" face="Verdana">
                <textarea rows="2" name="txt" cols="20" style="background-color: #FFFFFF; color: #000000; font-size: 13 px; font-family: Verdana; font-weight: bold; border: 1 solid #000000"></textarea></font>
            </td>
    </tr>
    <tr>
      <td width="125" height="1"><font size="2" face="Verdana">Bekræft:</font></td>
      <td width="216" height="1"><font size="2" face="Verdana"><input type="submit" name="update" value="ROCK'N'ROLL" style="background-color: #FFFFFF; color: #000000; font-size: 13 px; font-family: Verdana; border: 1 solid #000000"></font></td>
    </tr>
  </table>
</div>
</form>

CONFIG.PHP:

<?
    $dbhost = "localhost"; // ADRESSEN TIL MYSQL
    $database = "vokadin_dk"; // DATABASENS NAVN
    $dbuser = "vokadin_dk"; // BRUGER
    $dbpass = "XXXXXXXX"; // KODE
?>

<?
mysql_connect($dbhost,$dbuser,$dbpass);
mysql_select_db($database);
?>
Avatar billede jakobdo Ekspert
30. oktober 2005 - 15:36 #1
1:

<? include "config.php"; ?>

<p><font size="2" face="Verdana">Vis Forum - <a href="tilfoej.php">Tilføj Indlæg</a></font></p>

<hr color="#000000">

<?

    $offset = (int)(isset($_GET["offset"]))?$_GET["offset"]:0;
   
    $pr_side = 20;
   
    $antal_sider = mysql_result(mysql_query("SELECT count(id) FROM tagwall),0);
   
    $res_tagwall = mysql_query("SELECT * FROM tagwall order by id DESC LIMIT $offset,$pr_side");
    while ($row_tagwall = mysql_fetch_array($res_tagwall))
    {
?>
<div align="left">
  <table border="0" width="262" height="14" cellspacing="0" cellpadding="0">
    <tr>
      <td width="262" height="1"><font size="2" face="Verdana"><i>Navn</i> : <b><?=$row_tagwall[navn]?></b></font></td>
    </tr>
    <tr>
      <td width="262" height="1"><font size="2" face="Verdana"><i>Dato</i> : <b><?=$row_tagwall[dato]?></b></font></td>
    </tr>
    <tr>
      <td width="262" height="1"><font size="2" face="Verdana"><i>Hjemmeside</i> : <b><a href="http://<?=$row_tagwall[url]?>.dk" target="_blank"><?=$row_tagwall[url]?></a></b></font></td>
    </tr>
    <tr>
      <td width="262" height="14"><font size="2" face="Verdana"><i>Besked</i> :</font></td>
    </tr>
    <tr>
      <td width="262" height="4"><font size="2" face="Verdana"><b><?=$row_tagwall[txt]?></b></font></td>
    </tr>
  </table>
</div><br>
<?
}
if ($offset >= $pr_side)
{
    $forrige = $offset-$pr_side;
    echo "<a href='?offset=$forrige'>Forrige</a> ";
}

if ($antal_sider > $offset+$pr_side)
{
    $naeste = $offset+$pr_side;
    echo "<a href='?offset=$naeste'>Næste</a>";
}
?>

2: ret:
$dato = $dato_array["mday"] . "/" . $dato_array["mon"] . "-" . $dato_array["year"];
til:
$dato = $dato_array["mday"] . "/" . $dato_array["mon"] . "-" . $dato_array["year"] . "-" . $dato_array["hours"] . "-" . $dato_array["minutes"];

3:
header("location: index.php");
tilføj:
header("location: index.php");
exit();
Avatar billede Slettet bruger
30. oktober 2005 - 15:45 #2
hello jacobdo!!! tak for den hurtige respons!

har nu prøvet at smide dine ændringer ind i filerne og smidt dem ud på samme adresse.

Nu viser den ingenting i index.php ?
Og den bliver stadig på tilfoej.php efter man har oprettet et indlæg?
Avatar billede jakobdo Ekspert
30. oktober 2005 - 15:53 #3
Hmm, prøv at lav:
echo "OFFSET: " . $offset . "<br>";
echo "PR SIDE: " . $pr_side . "<br>";
og sæt dem inden:
$res_tagwall = mysql_query("SELECT * FROM tagwall order by id DESC LIMIT $offset,$pr_side");
Avatar billede Slettet bruger
30. oktober 2005 - 15:56 #4
hm, der sker intet, stadig tom side. det er da ret underligt?
Avatar billede jakobdo Ekspert
30. oktober 2005 - 16:00 #5
Men hvad skriver den ved offset og pr side?
Avatar billede Slettet bruger
30. oktober 2005 - 16:01 #6
undskyld, men skriver hvor? (sikkert et ret dumt spørgsmål?)
Avatar billede jakobdo Ekspert
30. oktober 2005 - 16:03 #7
I din index.php har du linien:

$res_tagwall = mysql_query("SELECT * FROM tagwall order by id DESC LIMIT $offset,$pr_side");

lige over den linie, tilføjer du:
echo "OFFSET: " . $offset . "<br>";
echo "PR SIDE: " . $pr_side . "<br>";

Så din kode kommer til at se sådan her ud:
echo "OFFSET: " . $offset . "<br>";
echo "PR SIDE: " . $pr_side . "<br>";
$res_tagwall = mysql_query("SELECT * FROM tagwall order by id DESC LIMIT $offset,$pr_side");
Avatar billede Slettet bruger
30. oktober 2005 - 16:06 #8
jep. det gjorde jeg også.
Avatar billede Slettet bruger
30. oktober 2005 - 16:16 #9
men ja, der er stadig tom side. underligt?
Avatar billede jakobdo Ekspert
30. oktober 2005 - 17:30 #10
Ja, det er mærkeligt!
Avatar billede Slettet bruger
30. oktober 2005 - 17:34 #11
nu har jeg ikke så meget forstand på det, men hvor kommer $forrige og $naeste ind? koden er brugt nederst, men skal der ikke være et eller andet kodeværk som beskriver hvad $forrige og $naeste er øverst?
Avatar billede jakobdo Ekspert
30. oktober 2005 - 17:41 #12
forrige og naeste er som de skal være!
Jeg tror måske det kan være en fejl i mit sql som skulle lave en count.
Prøv at ret:
$antal_sider = mysql_result(mysql_query("SELECT count(id) FROM tagwall),0);
til:
$query = mysql_query("SELECT count(id) FROM tagwall");
$antal_sider = mysql_result($query,0);
Avatar billede Slettet bruger
30. oktober 2005 - 17:50 #13
så kom der noget på siden igen!!!

der er stadig en lille fejl dato/tidspunkt, og når jeg opretter et indlæg, så viser den en blank side og bliver på tilfoej.php?m=saadan - du kan jo selv lige prøve at oprette et indlæg.

og nu skriver den OFFSET: 0 PR SIDE: 20 ?

hvis det er, så giver jeg gerne lidt flere point for din hjælp!!! du er virkelig til stor hjælp lige nu! :)

(jeg prøver lige at oprette en masse indlæg så vi kan se om sideskiftet virker som det skal)
Avatar billede Slettet bruger
30. oktober 2005 - 17:56 #14
sideskiftet fungerer! :) rigtig godt!

kan man lave det sådan at hvis der nu er flere sider at den viser 1 - 2 - 3 - 4 som man så kan trykke på?
Avatar billede jakobdo Ekspert
30. oktober 2005 - 18:00 #15
Du kan slette dette kode igen:
echo "OFFSET: " . $offset . "<br>";
echo "PR SIDE: " . $pr_side . "<br>";
Det med 1 - 2 - 3 - 4, skal jeg lige tænke lidt over...
Avatar billede Slettet bruger
30. oktober 2005 - 18:07 #16
okay. er ved at forstå det grundlæggende i php nu hvor jeg sidder og skimter det igennem.

okay, bare giv dig god tid :)

har du set hvordan den laver dato/tidspunkt ? det ser lidt sjovt ud
Avatar billede jakobdo Ekspert
30. oktober 2005 - 18:23 #17
Det med tid synes jeg er en dum løsning!
Selv ville jeg bruge: NOW().

Prøv at smid dette kode i stedet for det gamle forrige/næste kode:

if ($offset >= $pr_side)
{
    $forrige = $offset-$pr_side;
    echo "<a href='?offset=$forrige'>Forrige</a> ";
}

$count = 0;
for($i=0;$i<$antal_sider;$i+=$pr_side)
{
    echo "<a href=\"'?offset=".$i."\">".$count++."</a>";
}

if ($antal_sider > $offset+$pr_side)
{
    $naeste = $offset+$pr_side;
    echo "<a href='?offset=$naeste'>Næste</a>";
}
Avatar billede Slettet bruger
30. oktober 2005 - 19:26 #18
det ser ret fint ud! i stedet for at den skriver side '0' som side 1, hvad skal der skrives for at den skriver side '1'?

når man bruger NOW() hvordan kommer det så til at stå? og hvor skal NOW() indsættes?
Avatar billede jakobdo Ekspert
30. oktober 2005 - 19:35 #19
$count = 1; // så vil den starte ved 1,2,3 osv.

Du skal så ændre data type på dato til: datetime
Så ændre du din insert til:
$navn = ($_POST["navn"]);
    $url = ($_POST["url"]);
    $txt = ($_POST["txt"]);
    $id = ($_POST["id"]);
    $ip = getenv('REMOTE_ADDR');


    $sql = "INSERT INTO tagwall SET navn = '$navn', ip = '$ip', url = '$url', dato = NOW(), id = '$id', txt = '$txt'";
    mysql_query($sql) or die(mysql_error());
    header("location: index.php");

Og så skal du også rette i din kode som trækker det ud, men det tager vi når det her er på plads!
Avatar billede Slettet bruger
30. oktober 2005 - 19:44 #20
det ser ud til at fungere nu!

men den gider nu stadig ikke at hoppe til index.php efter man har postet et indlæg. og kan man få den til at 'refreshe' databasen når der er postet? - for efter jeg har postet et indlæg, så skal jeg lige trykke F5 for at få vist indlægget.
Avatar billede jakobdo Ekspert
30. oktober 2005 - 19:49 #21
Prøv lige at tilføj dette ved header
header("location: index.php");
echo "<hr><b>Skidt</b><hr>";
exit();

Lav så et indlæg og se om den skriver skidt
Avatar billede Slettet bruger
30. oktober 2005 - 19:53 #22
jep, den skriver skidt.
Avatar billede Slettet bruger
30. oktober 2005 - 19:54 #23
vil det sige at man kan sende brugeren videre til index.php, og så skrive 'dit indlæg er nu oprettet' eller noget i den stil?
Avatar billede jakobdo Ekspert
30. oktober 2005 - 19:55 #24
Vi er enige om du har skrevet:
header("location: index.php");
og har du noget som laver output ovenover?
Smutter offline for i dag...
Avatar billede Slettet bruger
30. oktober 2005 - 19:57 #25
jep, har skrevet det rigtigt.

kan det være pga. den her: <form action="tilfoej.php?m=saadan" method="post">
?
Avatar billede jakobdo Ekspert
01. november 2005 - 22:21 #26
Det burde det altså ikke være.
Kan du ikke lige poste alt din kode herinde?
Avatar billede Slettet bruger
01. november 2005 - 22:24 #27
Here you go:

<? include "config.php"; ?>

<?
if ($_POST["action"] == "update")
{
    $navn = ($_POST["navn"]);
    $url = ($_POST["url"]);
    $txt = ($_POST["txt"]);
    $id = ($_POST["id"]);
    $ip = getenv('REMOTE_ADDR');

    $sql = "INSERT INTO tagwall SET navn = '$navn', ip = '$ip', url = '$url', dato = NOW(), id = '$id', txt = '$txt'";
    mysql_query($sql) or die(mysql_error());
    header("location: index.php");
    echo "<hr><b>Skidt</b><hr>";
    exit();

}
?>

<p>
<font size="2" face="Verdana"><a href="index.php">Vis Forum</a> - Tilføj Indlæg</font></p>

<hr color="#000000">
<p></p>
<form action="tilfoej.php?m=saadan" method="post">
<input type="hidden" name="action" value="update">
<div align="left">
    <table border="0" width="376" height="1" cellspacing="0" cellpadding="0">
        <tr>
            <td width="125" height="1"><font size="2" face="Verdana">Navn:</font></td>
            <td width="216" height="1"><font size="2" face="Verdana">
                <input type="text" name="navn" size="20" style="background-color: #FFFFFF; color: #000000; font-size: 13 px; font-family: Verdana; font-weight: bold; border: 1 solid #000000">&nbsp;</font>
            </td>
        </tr>
        <tr>
            <td width="125" height="24"><font size="2" face="Verdana">Hjemmeside:</font></td>
            <td width="216" height="24"><font size="2" face="Verdana">
                http://<input type="text" name="url" size="20" style="background-color: #FFFFFF; color: #000000; font-size: 13 px; font-family: Verdana; font-weight: bold; border: 1 solid #000000"></font>
            </td>
        </tr>
        <tr>
            <td width="125" height="11"><font size="2" face="Verdana">Besked:</font></td>
            <td width="216" height="11"><font size="2" face="Verdana">
                <textarea rows="2" name="txt" cols="20" style="background-color: #FFFFFF; color: #000000; font-size: 13 px; font-family: Verdana; font-weight: bold; border: 1 solid #000000"></textarea></font>
            </td>
    </tr>
    <tr>
      <td width="125" height="1"><font size="2" face="Verdana">Bekræft:</font></td>
      <td width="216" height="1"><font size="2" face="Verdana"><input type="submit" name="update" value="ROCK'N'ROLL" style="background-color: #FFFFFF; color: #000000; font-size: 13 px; font-family: Verdana; border: 1 solid #000000"></font></td>
    </tr>
  </table>
</div>
</form>
Avatar billede jakobdo Ekspert
02. november 2005 - 06:54 #28
Hvad har du i din config.php? (smid den evt herind, men husk at fjern brugernavn, kodeord, host og databasenavn)

Og du kan evt lige prøve at teste dette script:

<?
include "config.php";

if ($_POST["action"] == "update")
{
    $navn = ($_POST["navn"]);
    $url = ($_POST["url"]);
    $txt = ($_POST["txt"]);
    $id = ($_POST["id"]);
    $ip = getenv('REMOTE_ADDR');

    $sql = "INSERT INTO tagwall SET navn = '$navn', ip = '$ip', url = '$url', dato = NOW(), id = '$id', txt = '$txt'";
    mysql_query($sql) or die(mysql_error());
    header("location: index.php");
    exit();
}
?>

Det som muligvis kan være problemet, er at dette kode:
<? include "config.php"; ?>

<?

Mellem ?> og <? er en tom linie, det bliver smidt til browseren, og inden en header() må der intet output være smidt.
Avatar billede Slettet bruger
02. november 2005 - 10:39 #29
min config ser sådan her ud:

<?
    $dbhost = "XXXXXXXX"; // ADRESSEN TIL MYSQL
    $database = "XXXXXXXX"; // DATABASENS NAVN
    $dbuser = "XXXXXXXX"; // BRUGER
    $dbpass = "XXXXXXXX"; // KODE
?>

<?
mysql_connect($dbhost,$dbuser,$dbpass);
mysql_select_db($database);
?>
Avatar billede jakobdo Ekspert
02. november 2005 - 10:49 #30
Ret den til:
<?
$dbhost = "XXXXXXXX"; // ADRESSEN TIL MYSQL
$database = "XXXXXXXX"; // DATABASENS NAVN
$dbuser = "XXXXXXXX"; // BRUGER
$dbpass = "XXXXXXXX"; // KODE

mysql_connect($dbhost,$dbuser,$dbpass);
mysql_select_db($database);
?>
Avatar billede Slettet bruger
05. november 2005 - 20:15 #31
har rettet det, men den skriver det der 'skidt'. skal jeg slette det?
Avatar billede jakobdo Ekspert
06. november 2005 - 00:33 #32
Ja, slet echo "<hr><b>Skidt</b><hr>";
Avatar billede Slettet bruger
06. november 2005 - 13:04 #33
hm, den bliver stadig på tilfoej.php?m=saadan med helt blank side.
Avatar billede jakobdo Ekspert
06. november 2005 - 17:03 #34
Prøv at kontakt mig på msn: jakobdo (at) hotmail (dot) com
Avatar billede Slettet bruger
17. marts 2006 - 19:30 #35
kom med et svar. så får du dine point!! :)

sorry at det tog så lang tid!
Avatar billede jakobdo Ekspert
17. marts 2006 - 19:46 #36
Svar!
Avatar billede Slettet bruger
17. marts 2006 - 20:52 #37
cool! :)

hvis det er du gider, så har jeg oprettet et nyt spørgsmål til en ny hjemmeside. kan godt bruge lidt hjælp :)

http://www.eksperten.dk/spm/696027

Nico
Avatar billede jakobdo Ekspert
17. marts 2006 - 21:11 #38
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