MickeA.comMedlem sedan feb. 20034 528 inlägg
Hej
Här är koden till en gästbok, där alla mess sparas i en textfil:
<?php
$file = file("guestbook.txt");
$antal = count($file);
if(isset($pos) && ($pos == 0)) $pos=0; $count=5;
if($pos >= $antal) {
$pos = 0;
}
$linje = "<br><font color='#FFFFFF'>___________________________________</font><br><br>";
echo ("&txtRead=");
for($i=$pos; $i<($count+$pos); $i++)
{
if($i > $antal-1) {
break;
}
$text = explode("|",$file[$antal-$i-1]);
$antal-$i;?></b> <?=$text[0];?></p>
<p><?=$text[1];?></p>
<p><?=$text[2];?></p>
<p><?=$text[3];?></p>
<hr /><br />
<?
}
$back = $pos-$count;
$forward = $pos+$count;
if ($pos > 0) {
echo "<a href=\"read.php?pos=$back\">prev</a> <b>:</b>";
}
if ($antal > $forward) {
echo "<a href=\"read.php?pos=$forward\">next</a>";
}
?>
Felmessen är så många, så dom kan ni istället kolla in på:
http://mickea.dyndns.org/_php/gb_flash/read.php
Det har iaf. med att göar att den på flera ställen säger att:
Notice: Undefined variable: pos
Det har alltså med pagingen att göra, men vad är det som ställer till det??
Tack !
JonttoMedlem sedan okt. 2001126 inlägg
Du definierar $pos endast om den redan är satt. Kan du inte sätta in en $pos=$_GET/$_POST/0; vad nu än $pos är för ngt, före första if-satsen.
Alternativ sätter du in
if(!isset($pos))
$pos=0;
där. För att först kolla om $pos är satt eller inte.
MickeA.comMedlem sedan feb. 20034 528 inlägg
Tack för det snabba svaret, men jag kan i princip ingen php at all, bara grunderna, hur själv syntaxen ser ut,l men resten, Nepp ;)
$pos är en räknare el. liknande som räknar antalet inlägg som skrivits ut, den har alltså med pagingen att göra. Vad den gör, varför den gör det osv. har jag ingen aning om.
Kollade på den första ifsatsen med, jag tycker det ser ut som ett syntaxfel där, men jag har ingen aning.
Att notera är att det är inte jag som gjort scriptet, ag har fått det, för att modifiera det, samt få det att samköra med Flash.
MickeA.comMedlem sedan feb. 20034 528 inlägg
Ah, nu var jag dum. Jag läste inte det du skrev så noga, la till
$pos=0;
där i början och nu funkar det ;)
Tack, återkommer om det är ngt mer.
WiZzLeRMedlem sedan juni 2002369 inlägg
MickeA.comMedlem sedan feb. 20034 528 inlägg
Tack, nu funark själva inläsningen, men att skriva till filen funkar inte:
<?php
$name = $_POST['strName'];
$name = htmlspecialchars($name);
$name = stripslashes($name);
$name = str_replace("\n","",$name);
$name = str_replace("|","",$name);
$message = $_POST['strMess'];
$message = nl2br($message);
$message = str_replace("\n","",$message);
$message = str_replace("|","",$message);
$subject = $_POST['strSub'];
$subject = htmlspecialchars($subject);
$subject = str_replace("\n","",$subject);
$subject = str_replace("|","",$subject);
$date = date("Y-m-d H:i", time());
$fp=fopen("guestbook.txt", "a+");
fputs($fp,"$date|$subject|$message|$name|\n");
fclose($fp);
//header("location:read.php");
exit;
echo ("&loaded=true");
?>
Får felmess:
Notice: Undefined index: strName in E:\Projekt\_php\gb_flash\write.php on line 3
Notice: Undefined index: strMess in E:\Projekt\_php\gb_flash\write.php on line 9
Notice: Undefined index: strSub in E:\Projekt\_php\gb_flash\write.php on line 14
Förstår inte vad felet är med dom namnen...?
PeeerMedlem sedan mars 20025 362 inlägg
De värden du söker saknas från formuläret. Kolla så att du använder method="post" på formuläret.
MickeA.comMedlem sedan feb. 20034 528 inlägg
Hmm, tack, det funkade. Nu är det bara det här med $pos kvar. För att det här skall funka med Flash gäller det att det inte blir ngt som helst annat i phpfilen, förutom det man bestämt skall skrivas ut.
Som det är nu kommer ju en 'Notice' ut om att $pos inte är def.
Sånt måste bort, hur ska jag göra?? $pos har ibland ett värde från en querystring som ibland laddas tillsammans med filen.
Frågan då; Kan man m.h.a en ifsats fixa till det här??
PeeerMedlem sedan mars 20025 362 inlägg
Löste du inte det själv här uppe, dvs genom att sätta $pos = 0; överst i koden?
MickeA.comMedlem sedan feb. 20034 528 inlägg
Peeer skrev:
Löste du inte det själv här uppe, dvs genom att sätta $pos = 0; överst i koden?
Nej, det ställde eg. till det ännu mer, för som jag sa så skickas $pos ibland med som ett värde i en Querystring. Men bör jag inte kunna lösa det med:
if($_GET['pos'] = ""){
$pos = 0;
}else{
$pos = $pos;
}
Nu kan jag inte syntaxen rätt, eftersom jag inte som jag nämnde aldrig sysslat med PHP, så rätta mig gärna om jag har fel.
PeeerMedlem sedan mars 20025 362 inlägg
Möjligt att jag har fattat funktionen med $pos helt fel, men den talar väl om vilket inlägg som pagingen ska börja med. Är det inte medskickat i querystringen så ska det vara 0?
isf:
if(isset($_GET['pos']) and is_numeric($_GET['pos'])){
$pos = $_GET['pos'];
}else{
$pos = 0;
}
Lägg koden överst så borde det fungera.
MickeA.comMedlem sedan feb. 20034 528 inlägg
MickeA.comMedlem sedan feb. 20034 528 inlägg
Nämen Stabilt ;)
Tack så mkt för hjälpen.