webForumDet fria alternativet

paging och include skummt.

27 svar · 343 visningar · startad av badmongo

badmongoMedlem sedan maj 200367 inlägg
#1

hej.... jag har en gästbok....(klotter.php)
som jag includat i index.php
paging länken ser ut såhär. i klotter.php ser ut så här
<a href='klotter.php?sida=$aldre'>äldre</a>

hur ska jag lösa det utan att gästboken ska öppna sig i en ny sida när man trycker äldre?

-------index.php

  \<?php if ($\_GET\['sida'\] == "start") {
include "start.php";

} elseif ($_GET['sida'] == "klotter") {
include "klotter.php";
}
?>

  \<a href="index.php?sida=klotter"\>KLOTTER\</a\>
MatteMedlem sedan aug. 20002 975 inlägg
#2

Närman inkluderar en fil i en annan fil, är det i princip som om man klippt ut koden från klotter.php och klistrat in den i index.php. Koden från klotter.php blir alltså en del av koden i index.php.

Länken till äldre ska därför gå till index.php.

Då är det mindre lämpligt att använda samma variabelnamn för att styra, dels vilken sida som ska inkluderas, dels pagingen.

Använd t.ex $page för att styra vilken sida av pagingen som ska visas.

<a href='index.php?sida=klotter&page=$aldre'>äldre</a>
badmongoMedlem sedan maj 200367 inlägg
#3

ååh fyfan vad du är bäst... nu kan jag sova gott tack som fan.

badmongoMedlem sedan maj 200367 inlägg
#4

bara ett problem kvar.

när man trycker på skicka knappen om man skrivit nått så händer ingenting....

------------------------------------------ klotter.php

<?
/*---------------------- INSTÄLLNINGAR -----------------------------------*/

$server = "localhost"; // MySQL-serveradress, oftast localhost
$username = "xxxxxxx"; // MySQL-användarnamn
$password = "xxxxxxx"; // MySQL-lösenord
$databas = "xxxxxxxx"; // Databasens namn, ska innehålla tabellen guestbook
$antal = "7"; // Antal inlägg per sida

/*---------------------- INSTÄLLNINGAR -----------------------------------*/

// Kopplar till databasen
$koppling = @mysql_connect("$server", "$username", "$password");
mysql_select_db("$databas");
if (!$koppling) {
echo "Databasen är för tillfället ur funktion. Var vänlig försök senare.";
exit();
}

// Lägger till nya inlägg
if($todo == "add"){
$namn = htmlspecialchars($namn);
$epost = htmlspecialchars($epost);
$hemsida = eregi_replace("http://", "", $hemsida);
$hemsida = htmlspecialchars($hemsida);
$meddelande = eregi_replace("\n", "<br>", $meddelande);
$meddelande = eregi_replace("\r", "", $meddelande);

$tid = date("H:i, Y-m-d");
mysql_query("INSERT INTO guestbook SET namn = '$namn', epost = '$epost', hemsida = '$hemsida', meddelande = '$meddelande', tid = '$tid'");
echo mysql_error();
Header("Location: klotter.php");

}

// Formuläret
?>

<form action="index.php?sida=klotter?todo=add" method="post">

namn<br>
<input name="namn" type="text" size="20"><br>
epost<br>
<input name="epost" type="text" size="20"><br>
hemsida<br>
<input name="hemsida" type="text" size="20"><br>

<textarea name="meddelande" wrap="virtual" rows=4 cols=17></textarea><br>

<input type="image" border="0" name="submit" src="gfx/oki.gif" width="28" height="19">
</form>

        \<?

// Kollar vilken sida man är på
if(!isset($page)){$page=1;}
$step = ($page-1)*$antal;

// Hämtar inläggen, och antalet inlägg
$meddelanden = mysql_query("SELECT namn, epost, hemsida, meddelande, tid FROM guestbook ORDER BY ID DESC LIMIT $step, $antal");
$inlagg = mysql_fetch_array(mysql_query("SELECT COUNT(ID) AS ID FROM guestbook"));
$inlagg = $inlagg['ID'];

// Listar upp inläggen
while($rad = mysql_fetch_array($meddelanden)){
echo "<b>$rad[namn] ($rad[tid])</b>  ";
if($rad['epost'] != ""){echo "<a href='mailto:$rad[epost]' target='_blank'><u>mejl</u></a>  ";}
if($rad['hemsida'] != ""){echo "<a href='http://$rad[hemsida]' target='_blank'><u>hemsida</u></a>";}
echo "<br>$rad[meddelande] <br>";
echo "<img src='gfx/hr.gif' width='293' height='9'><br>";
}

// Länkar till nyare och äldre inlägg
$nyare = $page-1;
$aldre = $page+1;
if($page > 1){echo "<a href='index.php?sida=klotter&page=$nyare'><u>nyare</u></a>";}
if($page > 1 AND $page != ceil($inlagg / $antal)){echo " | ";}
if($page != ceil($inlagg / $antal) AND !($inlagg < $antal)){
echo "<a href='index.php?sida=klotter&page=$aldre'><u>äldre</u></a>";
}

// Visar antal inlägg<br>

echo "<br>($inlagg inlägg på ".ceil($inlagg / $antal)." ";
if(ceil($inlagg / $antal) < 2){echo "sida)";}else{echo "sidor)";}
?>

MatteMedlem sedan aug. 20002 975 inlägg
#5

Lite fel i INSERT-koden.

Ändra

mysql_query("INSERT INTO guestbook SET namn = '$namn', epost = '$epost', 
             hemsida = '$hemsida', meddelande = '$meddelande', tid = '$tid'");

Till

$sql = "INSERT INTO guestbook(namn, epost, hemsida, meddelande, tid)
        VALUES('$namn', '$epost', '$hemsida', '$meddelande', '$tid');

// Lägger till lite felsökning om det fortfarande inte skulle fungera
// Ta bort "or die"-delen när skriptet fungerar
mysql_query($sql) or die("SQL: $sql <br>".mysql_error());
badmongoMedlem sedan maj 200367 inlägg
#6

nu funkar det inte alls =/

MatteMedlem sedan aug. 20002 975 inlägg
#7

Naturligtvis fungerar det inte :r

Ett litet citationstecken har gått och gömt sig. Om vi lägger dit det, hur funkar det då?

$sql = "INSERT INTO guestbook(namn, epost, hemsida, meddelande, tid)
        VALUES('$namn', '$epost', '$hemsida', '$meddelande', '$tid')";

// Lägger till lite felsökning om det fortfarande inte skulle fungera
// Ta bort "or die"-delen när skriptet fungerar
mysql_query($sql) or die("SQL: $sql <br>".mysql_error());
PeddaMedlem sedan juni 20006 032 inlägg
#8

/r Matte han svara, *sudda*

badmongoMedlem sedan maj 200367 inlägg
#9

nu så ser man gästboken varjefall =)

men det går fortfarande inte att lägga dit data via
formuläret.

http://www.maclabbet.com/badmongo/testsida/index.php?sida=klotter

MatteMedlem sedan aug. 20002 975 inlägg
#10

Du har följande formulärhuvud:

<form action="index.php?todo=add" method="post">

Då kommer inte klotter.php att inkluderas eftersom du inte angivit det.
Testa att skriva t så här:

<form action="index.php?sida=klotter&todo=add" method="post">
badmongoMedlem sedan maj 200367 inlägg
#11

fel på rad 33

och på rad 33 står detta

Header("Location: klotter.php");

vad börja ändra denna till?

felmedelande:

Warning: Cannot add header information - headers already sent by (output started at /Volumes/OSX_2/web/badmongo/testsida/index.php:10) in /Volumes/OSX_2/web/badmongo/testsida/klotter.php on line 33

klotter.php--------------------------

<?
/*---------------------- INSTÄLLNINGAR -----------------------------------*/

$server = "localhost"; // MySQL-serveradress, oftast localhost
$username = "xxxx"; // MySQL-användarnamn
$password = "xxxxx"; // MySQL-lösenord
$databas = "xxxxxx"; // Databasens namn, ska innehålla tabellen guestbook
$antal = "7"; // Antal inlägg per sida

/*---------------------- INSTÄLLNINGAR -----------------------------------*/

// Kopplar till databasen
$koppling = @mysql_connect("$server", "$username", "$password");
mysql_select_db("$databas");
if (!$koppling) {
echo "Databasen är för tillfället ur funktion. Var vänlig försök senare.";
exit();
}

// Lägger till nya inlägg
if($todo == "add"){
$namn = htmlspecialchars($namn);
$epost = htmlspecialchars($epost);
$hemsida = eregi_replace("http://", "", $hemsida);
$hemsida = htmlspecialchars($hemsida);
$meddelande = eregi_replace("\n", "<br>", $meddelande);
$meddelande = eregi_replace("\r", "", $meddelande);

$tid = date("H:i, Y-m-d");
$sql = "INSERT INTO guestbook(namn, epost, hemsida, meddelande, tid) VALUES('$namn', '$epost', '$hemsida', '$meddelande', '$tid')";

echo mysql_error();
Header("Location: klotter.php");

}

// Formuläret
?>

MatteMedlem sedan aug. 20002 975 inlägg
#12

Kan du visa hela felmeddelandet, samt rad 33 och några rader före.

[EDIT]
Ursäkta, missade dina sista rader. Återkommer strax.

MatteMedlem sedan aug. 20002 975 inlägg
#13

Felmeddelandet säger att du har en output till webbläsaren på rad 10 i index.php.

Före en header får man inte skicka något till webbläsaren. Du får alltså inte ha någon HTML-kod, ej heller någon echo eller print. Även "tomtecken" som radbytning eller mellanslag skickar till webbläsaren.

Hur ser början på index.php ut?

badmongoMedlem sedan maj 200367 inlägg
#14

så här ser index.php ut.

---------------------------------------------------------------

<html>
<head>
<title>ERIK*JOHANSSON</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link href="stil.css" rel="stylesheet" type="text/css">
</head>

<body bgcolor="#FFFFFF" background="gfx/bg.gif" text="#666666" link="#666666" vlink="#333333" alink="#333333" leftmargin="0" topmargin="0" marginwidth="0" marginheight="0">
<table width="570" height="121" border="0" align="center" cellpadding="0" cellspacing="0">
<tr>
<td width="570" height="121"><img src="gfx/top.jpg" width="570" height="121" border="0"></td>
</tr>
</table>
<table width="560" height="12" border="0" align="center" cellpadding="0" cellspacing="0">
<tr>
<td width="232" height="12">
<a href="index.php?sida=start">START</a> |
<a href="index.php?sida=info">INFO</a> |
<a href="index.php?sida=kontakta">KONTAKTA</a> |
<a href="index.php?sida=klotter">KLOTTER</a>

  \</td\>
\<td width="330" align="right"\>\<b\>ARBETEN &raquo;\</b\> 

\<a href="index.php?sida=foto"\>FOTO\</a\> \|
\<a href="index.php?sida=graf"\>GRAF\</a\> \|
\<a href="index.php?sida=web"\>WEB\</a\>


\</td\>

</tr>
</table>
<center><img src="gfx/hr.gif" width="560" height="9"></center>
<table width="560" align="center" border="0" cellspacing="0" cellpadding="0">
<tr>
<td>
<?php if ($_GET['sida'] == "start") {
include "start.php";
} elseif ($_GET['sida'] == "info") {
include "info.php";
} elseif ($_GET['sida'] == "kontakta") {
include "kontakta.php";
} elseif ($_GET['sida'] == "klotter") {
include "klotter.php";
} elseif ($_GET['sida'] == "foto") {
include "foto.php";
} elseif ($_GET['sida'] == "graf") {
include "graf.php";
} elseif ($_GET['sida'] == "web") {
include "web.php";
}
?>

\</td\>

</tr>
</table>
<center><img src="gfx/hr.gif" width="560" height="9"></center>
<table width="560" align="center" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="376"> 321 BESÖKARE</td>
<td width="184" align="right"><a href="mainlto:badmongo@maclabbet.com">BADMONGO @ MACLABBET . COM</a></td>
</tr>
</table>

</body>
</html>

MatteMedlem sedan aug. 20002 975 inlägg
#15

I och med att du har din sida uppbyggd på det här viset så kan du inte använda header().

Du får istället använda javascript:

echo "<script type=\"text/javascript\">
<!--
  document.location.href = 'index.php?sida=klotter';
// -->
</script>";
badmongoMedlem sedan maj 200367 inlägg
#16

sådär fick inget felmedelande nu...

men det lagras ändå ingen information idatabasen....

blää händer absoluti ingenting iom man skriver nått..

MatteMedlem sedan aug. 20002 975 inlägg
#17

Lägger den till tomma rader, eller lägger den inte till något alls?

Hur ser koden ut nu för if-satsen:

// Lägger till nya inlägg 
if($todo == "add"){ 
   .
   .
   .
}
badmongoMedlem sedan maj 200367 inlägg
#18

den lägger inte till någonting alls.... kolla själv på

http://www.maclabbet.com:16080/badmongo/testsida/index.php?sida=klotter

// Lägger till nya inlägg
if($todo == "add"){
$namn = htmlspecialchars($namn);
$epost = htmlspecialchars($epost);
$hemsida = eregi_replace("http://", "", $hemsida);
$hemsida = htmlspecialchars($hemsida);
$meddelande = eregi_replace("\n", "<br>", $meddelande);
$meddelande = eregi_replace("\r", "", $meddelande);

$tid = date("H:i, Y-m-d");
$sql = "INSERT INTO guestbook(namn, epost, hemsida, meddelande, tid) VALUES('$namn', '$epost', '$hemsida', '$meddelande', '$tid')";

echo mysql_error();

echo "<script type=\"text/javascript\">
<!--
document.location.href = 'index.php?sida=klotter';
// -->
</script>";

}

MatteMedlem sedan aug. 20002 975 inlägg
#19

Du kör aldrig mysql_query().

Ändra

$sql = "INSERT INTO guestbook(namn, epost, hemsida, meddelande, tid) 
        VALUES('$namn', '$epost', '$hemsida', '$meddelande', '$tid')"; 

echo mysql_error();

Till

$sql = "INSERT INTO guestbook(namn, epost, hemsida, meddelande, tid)
        VALUES('$namn', '$epost', '$hemsida', '$meddelande', '$tid')";

// Ta bort "or die"-delen när skriptet fungerar
mysql_query($sql) or die("SQL: $sql <br>".mysql_error());
badmongoMedlem sedan maj 200367 inlägg
#20

felmedelande.

Parse error: parse error in /Volumes/OSX_2/web/badmongo/testsida/klotter.php on line 31

rad 31.

[KOD]$sql = "INSERT INTO guestbook(namn, epost, hemsida, meddelande, tid) VALUES('$namn', '$epost', '$hemsida', '$meddelande', '$tid')";

138 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
135 ms — hämta tråd, inlägg och bilagor (db)