webForumDet fria alternativet
Logga in / Bli medlem

Definiera Variabel??

PHP

12 svar · 381 visningar · startad av MickeA.com

Medlem sedan feb. 20034 441 inlägg
Trådstart#1

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 !

Medlem sedan okt. 2001125 inlägg
#2

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.

Medlem sedan feb. 20034 441 inlägg
#3

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.

Medlem sedan feb. 20034 441 inlägg
#4

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.

Medlem sedan juni 2002346 inlägg
#5

$pos = NULL;

Medlem sedan feb. 20034 441 inlägg
#6

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...?

Medlem sedan mars 20025 907 inlägg
#7

De värden du söker saknas från formuläret. Kolla så att du använder method="post" på formuläret.

Medlem sedan feb. 20034 441 inlägg
#8

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??

Medlem sedan mars 20025 907 inlägg
#9

Löste du inte det själv här uppe, dvs genom att sätta $pos = 0; överst i koden?

Medlem sedan feb. 20034 441 inlägg
#10

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.

Medlem sedan mars 20025 907 inlägg
#11

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.

Medlem sedan feb. 20034 441 inlägg
#12

Ok, ska prova, tack ;)

Medlem sedan feb. 20034 441 inlägg
#13

Nämen Stabilt ;)

Tack så mkt för hjälpen.

386 ms totalt · 4 externa anrop · v20260731065814-full.51f67c91
119 ms — deklarationer (db)
121 ms — hämta statistik (db)
135 ms — hämta tråd, inlägg och bilagor (db)
127 ms — ändringar (db)