webForumDet fria alternativet

Text som försvinner på hemsidan

PHP

18 svar · 624 visningar · startad av addeweb

Medlem sedan jan. 2004216 inlägg
Frågan#1

Jag har upptäckt att mycket text som skrevs in i ett formulär inte
visades i sin helhet på sidan, bara 4-5 rader på sidan och
omkring 150 tecken. Jag har också prövat med att i databasen
skriva in mycket text i själva tabellen men ändå visas inte all text
på hemsidan medan mycket text finns kvar i tabellen. Har också
testat med en funktion Förhandsgranska som gjorts för
formuläret så att användaren kan se resultatet innan denne
skickar in texten till databasen. Texten visas i sin helhet som den
ska göra, inget saknas. Problemet är att den text som man har skickat
från formuläret till databasen inte visas i sin helhet på sidan. Del
av texten försvinner på vägen till databasen. Vad kan det bero på
att det blev fel??? Har jag glömt något??

Jag använder MSSQL och PHP för sidorna. Kolumnen text i
tabellen Litteratur har datatypen varchar med längden 1-8000 tkn.
Håller på att göra litteratur-sidor där användare kan lämna
in förslag till olika ämnen.
Inlämnade förslag kan variera i teckenmängd.

Kan inte lägga in hela koden här på sidan. Mycket kod som jag skrivit.

Medlem sedan mars 20034 471 inlägg
#2

Varning för att detta inlägg troligen är totalt irrelevant!!!

Du är säker på att VARCHAR kan ta en så stor mängd tecken? För MySQL's del gäller - om jag fattat rätt - att ett för stort textstycke som "lagras" i en VARCHAR innebär att de första tecknen lagras och resten trunkeras.

Medlem sedan jan. 2004216 inlägg
#3

Jamen, jag har satt gränsen för 6000 tecken istället för maximala 8000 som gäller för varchar, en variabel längd som varierar i storlek beroende på hur mycket text som skrivits in i ett formulär. Jag har testat med att skriva in mer text i själva tabellen men tyvärr visas inte hela texten på sidan.

Medlem sedan nov. 200013 890 inlägg
#4

Jag har testat med att skriva in mer text i själva tabellen men tyvärr visas inte hela texten på sidan.

Det låter som att det är fel i din HTML- eller CSS-kod. Kan du visa oss koden eller länka till den aktuella sidan?

Medlem sedan jan. 2004216 inlägg
#5

Jag var tvungen att göra koden lite kortare innan jag kunde lägga upp den här.

<?php
if(isset($_POST['preview'])){

$sidrubrik = $_POST['sidrubrik'];
$pageid = $_POST['pageid'];
$id = $_POST['id'];
$rubrik = $_POST['rubrik'];
$text = $_POST['text'];
$ptext = $text;

$ptext = str_replace("<", "&lt;", $ptext);
$ptext = str_replace(">", "&gt;", $ptext);
// Textformatering
$ptext = str_replace("[B]", "<b>", $ptext);
$ptext = str_replace("[/B]", "</b>", $ptext);
$ptext = str_replace("[I]", "<i>", $ptext);
$ptext = str_replace("[/I]", "</i>", $ptext);
$ptext = str_replace("[U]", "<u>", $ptext);
$ptext = str_replace("[/U]", "</u>", $ptext);
// Externa länkar som öppnas i separat fönster
$ptext = eregi_replace("\\[URL\\]www.([^\\[]*)\\[/URL\\]", "<a href=\"http://www.\\1\" target=_blank><u>\\1</u></a>", $ptext);
$ptext = eregi_replace("\\[URL\\]([^\\[]*)\\[/URL\\]","<a href=\"\\1\" target=_blank><u>\\1</u></a>", $ptext);
$ptext = eregi_replace("\\[URL=([^\\[]*)\\]([^\\[]*)\\[/URL\\]","<a href=\"\\1\" target=_blank><u>\\2</u></a>", $ptext);
$ptext = nl2br($ptext); 
 ?>
<h5 style="margin-bottom: 2px">Förhandsgranskning</h5>
----
<h5 style="margin-bottom: 2px; margin-top: 2px"><?=$rubrik?></h5><?=$ptext?><br />
<br />----
<h5 style="font-style: oblique; ; margin-top: 20px"><?=$sidrubrik?></h5>
<form name="form1" action="<?=$_SERVER['PHP_SELF']?>" method="post">
<input type="hidden" name="pageid" value="<?=$pageid?>" />
<input type="hidden" name="sidrubrik" value="<?=$sidrubrik?>" />
<input type="hidden" name="id" value="<?=$id?>" />

<table cellpadding="2" cellspacing="0" border="0">
<tr><td colspan="2"><b>Rubrik:</b> <input type="text" size="40" name="rubrik" class="input" value="<?=$rubrik?>" /></td></tr>
<tr><td colspan="2"><b>Text:<b> <br/><textarea wrap="virtual" ONSELECT="storeCaret(this);" ONCLICK="storeCaret(this);"
 ONKEYUP="storeCaret(this);" name="text" cols="65" rows="14"
class="input"><?=$text?></textarea></td></tr>
<tr><td valign="top">&#171 <a href="content.php?pageid=<?=$pageid?>&id=<?=$id?>">
<u>Tillbaka</u></a></td>
<td align="right"><a href="#" onClick="popupwindow('help.php',500,500); return false;" style="color: red"><u>Hjälp</u></a>&nbsp;&nbsp
<input type="submit" name="preview" value="Förhandsgranska" class="button" />&nbsp;
<input type="submit" name="add_submit" value="Skicka" class="button" /></td></tr></table>
</form>
<?php }

if(isset($_POST['add_submit'])){

// Hämta variabler som är skickade från formuläret med action="POST".
$id = $_POST['id'];
$rubrik = $_POST['rubrik'];
$text = $_POST['text'];
$pageid = $_POST['pageid'];
	
$rubrik = htmlentities(stripslashes($rubrik), ENT_QUOTES);
$text = htmlentities(stripslashes($text), ENT_QUOTES);

 if ((empty($rubrik)) || (empty($text))){ 
 die("<h5>Skriv in både rubrik och text!</h5>
&#171 <a href=\"content_add.php?pageid=$pageid&id=$id\"><u>Tillbaka</u>");
 }

$result3 = mssql_query("INSERT INTO litteratur (rubrik, text, pageid) VALUES ('$rubrik', '$text', '$pageid')") 
or die("Att lägga till ett förslag fungerar ej!");
?>	       
<h5>Nu har du lagt upp den på sidan! </h5>
&#171 <a href="page.php?pageid=<?=$pageid?>"><u>Tillbaka</u></a>

<?php   
mssql_close($connection);
exit;
 }

if((!isset($_POST['add_submit'])) && (!isset($_POST['preview']))){ 

$msquery = "SELECT * FROM litteratur_sidor WHERE pageid = '".$_GET['pageid']."'";
$result = mssql_query($msquery, $connection); 
$pageid = mssql_result($result,0,"pageid");
$sidrubrik = mssql_result($result,0,"sidrubrik");

$msquery2 = "SELECT id FROM litteratur WHERE pageid ='".$_GET['pageid']."'
 AND id = '".$_GET['id']."'";
$result2 = mssql_query($msquery2, $connection); 
$id = mssql_result($result2,0,"id");

?>
<h5 style="font-style: oblique; margin-bottom: 2px;"><?=$sidrubrik?></h5>
<form name="form1" action="<?=$_SERVER['PHP_SELF']?>" method="post">
<input type="hidden" name="pageid" value="<?=$pageid?>" />
<input type="hidden" name="sidrubrik" value="<?=$sidrubrik?>" />
<input type="hidden" name="id" value="<?=$id?>" />
<table cellpadding="2" cellspacing="0" border="0">
<tr><td colspan="2"><b>Rubrik:</b> 
<input type="text" size="40" name="rubrik" class="input" value="<?=$rubrik?>" />
</td></tr>
<tr><td colspan="2"><b>Text:<b> <br/><textarea wrap="virtual" ONSELECT="storeCaret(this);" ONCLICK="storeCaret(this);"
 ONKEYUP="storeCaret(this); checkLength(this,this.form.display,6000);" 
ONKEYPRESS="checkLength(this, this.form.display, 6000");" name="text" cols="65" rows="14" class="input"><?=$text?></textarea>
</td></tr><tr><td valign="top">
&#171 <a href="content.php?pageid=<?=$pageid?>&id=<?=$id?>"><u>Tillbaka</u></a>
</td><td align="right">
<a href="#" onClick="popupwindow('help.php',500,500); return false;" style="color: red"><u>Hjälp</u></a>&nbsp;&nbsp
<input type="reset" name="clear" value="Rensa" class="button" />&nbsp;
<input type="submit" name="preview" value="Förhandsgranska" class="button" />&nbsp;
<input type="submit" name="add_submit" value="Skicka" class="button" /></td></tr>
<tr><td colspan="2" align="right">Antal tecken kvar:&nbsp;
<input type="text" name="display" size="6" value="6000" disabled="disabled" onfocus="this.blur();"
 style="text-align: center" class="input" /></td></tr>
</table>
</form> 
<?php } 
?>
Medlem sedan nov. 200013 890 inlägg
#6

Du skriver:

Jag har testat med att skriva in mer text i själva tabellen men tyvärr visas inte hela texten på sidan.

Vilken tabell pratar du om? Är det HTML-tabellen eller tabellen i databasen?

Medlem sedan jan. 2004216 inlägg
#7

Själva litteratur-tabellen i databasen.

Medlem sedan jan. 2004216 inlägg
#8

Ingen som vill hjälpa mig??

Medlem sedan aug. 20002 975 inlägg
#9

Om jag förstår dig rätt har du testat med att direkt i databasen (ej genom PHP) skriva in text, men när du sedan med PHP försöker visa texten, så kommer inte allt med.
Du har också direkt i databasen kollat att det du manuellt skrev in finns där ?

Då borde det vara koden som visar inlägget du ska visa för oss.
Det du visar ovan är kod som sparar till databasen, men problemet kan ligga på andra sidan.

Har du kollat (annat än med PHP) att den text som du försöker spara till databasen hamnar där eller ej ?

Medlem sedan jan. 2004216 inlägg
#10

Det fungerar att lägga in mycket text i formuläret och sedan
skicka in den i databasen. Har kollat i litteratur-tabellen att hela
texten finns med så det är ok med både formulär-sida och tabell.
Men tyvärr visas fortfarande inte hela texten på sidan. Här är
koden till visningssidan:

<?php
$msquery = "SELECT RubrikID, Rubrik FROM Rubrik WHERE RubrikID = '7'";
$result = mssql_query($msquery, $connection); 
$littrubrik = mssql_result($result,0,"Rubrik");
$RubrikID = mssql_result($result,0,"RubrikID");

$msquery2 = "SELECT * FROM litteratur_sidor WHERE pageid = '".$_GET['pageid']."'";
$result2 = mssql_query($msquery2, $connection); 
$pageid = mssql_result($result2,0,"pageid");
$sidrubrik = mssql_result($result2,0,"sidrubrik");

$msquery3 = "SELECT * FROM litteratur WHERE pageid = '".$_GET['pageid']."' AND id = '".$_GET['id']."'";
$result3 = mssql_query($msquery3, $connection);
$id = mssql_result($result3,0,"id");
$pageid = mssql_result($result3,0,"pageid");

?>
<table cellpadding="0" cellspacing="0" border="0" width="100%">
<tr><td><h3 style="margin-bottom: 2px"><?=$littrubrik?></h3></td><td align="right" valign="top">
<?php
// Kollar status 
	if($status >= 1 && isset($_SESSION['Loginname'])) { 
    	// Körs om du har status 1 (sysop) ?>
  	[ <a href="#" onClick="popupwindow('utskrift.php?pageid=<?=$pageid?>&id=<?=$id?>',500,500); return false;">Utskrift</a> ]
	[ <a href="content_add.php?pageid=<?=$pageid?>&id=<?=$id?>">Skapa nytt</a> ]
	[ <a href="content_update.php?pageid=<?=$pageid?>&id=<?=$id?>">Edit</a> ] 
	[ <a href="admin.php?pageid=<?=$pageid?>&id=<?=$id?>">Admin</a> ]
	<?php } else { ?>
	[ <a href="#" onClick="popupwindow('utskrift.php?pageid=<?=$pageid?>&id=<?=$id?>',500,500); return false;">Utskrift</a> ]
	[ <a href="content_add.php?pageid=<?=$pageid?>&id=<?=$id?>">Lämna förslag</a> ] 
	
	<?php } 
?>
</td></tr></table>
<h5 style="font-style: oblique;"><?=$sidrubrik?></h5>

<?php 
$msquery4 = "SELECT * FROM litteratur WHERE pageid = '".$_GET['pageid']."' AND id = '".$_GET['id']."'";
$result4 = mssql_query($msquery4, $connection);

while($r = mssql_fetch_array($result4))
{
	$id = $r['id'];
	$rubrik = $r['rubrik'];
	$text = $r['text'];
	$pageid = $r['pageid'];
	
	$currentid = $id; // Variabel som tar emot värdet från $id för att markera
			  // aktuell titel med fetstil i länklistan längre ner på sidan.

	$text = str_replace("<", "&lt;", $text);
	$text = str_replace(">", "&gt;", $text);

	// Textformatering
	$text = str_replace("[B]", "<b>", $text);
	$text = str_replace("[/B]", "</b>", $text);
	$text = str_replace("[I]", "<i>", $text);
	$text = str_replace("[/I]", "</i>", $text);
	$text = str_replace("[U]", "<u>", $text);
	$text = str_replace("[/U]", "</u>", $text);

	// Externa länkar som öppnas i separat fönster
	$text = eregi_replace("\\[URL\\]www.([^\\[]*)\\[/URL\\]", "<a href=\"http://www.\\1\" target=_blank><u>\\1</u></a>", $text);
	$text = eregi_replace("\\[URL\\]([^\\[]*)\\[/URL\\]","<a href=\"\\1\" target=_blank><u>\\1</u></a>", $text);
	$text = eregi_replace("\\[URL=([^\\[]*)\\]([^\\[]*)\\[/URL\\]","<a href=\"\\1\" target=_blank><u>\\2</u></a>", $text);

	$text = nl2br($text); 
?>
	<h5 style="margin-bottom: 4px"><?=$rubrik?></h5><?=$text?>
	
<?php }

echo "<div style=\"border-top: solid 2px #FFCCFF; padding-top: 3px; margin-top: 40px\">";
echo "<table cellpadding=\"1\" cellspacing=\"0\" border=\"0\" width=\"100%\">";
echo "<tr><td><h5 style=\"margin-bottom: 1px\">Läs mer: </b></td></tr>";

$msquery5 = "SELECT * FROM litteratur WHERE pageid = '".$_GET['pageid']."'";
$result5 = mssql_query($msquery5, $connection);
while($s = mssql_fetch_array($result5))
{
	$id = $s['id'];
	$rubrik = $s['rubrik'];
	$text = $s['text'];
	$pageid = $s['pageid'];
//echo $id;

echo "<tr><td>";
if($id == $currentid){ ?>
	<b style="color: #cccccc"><?=$rubrik?></b>
<?php }else{ ?>
	<a href="content.php?id=<?=$id?>&pageid=<?=$pageid?>"><u><?=$rubrik?></u></a><br />
<? }
echo "</td></tr>";
}
echo "</table></div>";
mssql_close($connection); 
?>
<p>&#171 <a href="index.php"><u>Tillbaka</a></p>
Medlem sedan aug. 20002 975 inlägg
#11

Om du skriver ut det direkt när du hämtar det, blir det hugget då ?

$msquery4 = "SELECT * FROM litteratur WHERE pageid = '".$_GET['pageid']."' AND id = '".$_GET['id']."'";
$result4 = mssql_query($msquery4, $connection);

while($r = mssql_fetch_array($result4))
{
   echo nl2br($r['text']);
}
Medlem sedan jan. 2004216 inlägg
#12

Javisst, hela texten finns inte med.

Medlem sedan aug. 20002 975 inlägg
#13

Om du tar en titt på den genererade HTML-källkoden i webbläsaren.
Saknas texten där också ?

Medlem sedan jan. 2004216 inlägg
#14

Ja, texten saknas där också. Har kollat där.

Medlem sedan aug. 20002 975 inlägg
#15

M.a.o. så ligger hela texten i en post i databasen.
Men när man hämtar posten så kommer inte hela texten med.

Då har jag ingen aning om vad som kan vara problem, och kan inte hjälpa dig längre.

Medlem sedan jan. 2004216 inlägg
#16

Ok, tror inte heller det var apostrofer och citationstecken i texten som gjorde att text saknades. Har testat det också.
Kanske det finns någon annan som kan hjälpa mig??

Medlem sedan jan. 2004216 inlägg
#17

Att lägga in mycket text i formulär för att skicka den till databasen fungerar perfekt, hela texten finns där. Även med funktionen Förhandsgranska visas hela texten. Enda felet är att hela texten inte hämtas från databasen. Måste väl vara fel på databasanslutningen?

Medlem sedan jan. 2004216 inlägg
#18

Finns det ingen som har haft liknande problem??

Medlem sedan jan. 2004216 inlägg
#19

Problemet med försvunnen text är nu löst. Det ska vara en annan datatyp, text(16).

274 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
127 ms — deklarationer (db)
0 ms — hämta statistik (cache)
142 ms — hämta tråd, inlägg och bilagor (db)
129 ms — ändringar (db)