webForumDet fria alternativet

Får inte if-sats att fungera

PHP

3 svar · 383 visningar · startad av lillebror

Medlem sedan apr. 20041 597 inlägg
Frågan#1

Hej,

Jag har en kommentarfunktion till mina artiklar där användare kan diskutera innehållet i artikeln. Av någon anledning har den delen av funktionen där man kan editera och spara en kommentar slutat fungera. Mycket enkelt förklarat har jag en if-else if-sats som ser ut på följande sätt:

if($_SESSION["active"] == true) { 
echo "sess: ".$_SESSION["active"]."<br/>";
	echo "get: ".$_GET['action']."<br/>";
	echo "1";
	?>

	<form action="xxx" method="post" onsubmit="return validateNewArticleComment(this)">
		<tr>
			<td style="width: 10%">&nbsp;</td>
			
			<td colspan="2" style="padding: 0px 5px 5px 0;"><span style="font-weight: bold; font-size: 11px;">Din kommentar:</span><br />
				
				<textarea cols="50" rows="5" name="comment"></textarea>
				<input type="hidden" name="from" value="<?php echo $_SESSION["uid"]; ?>" />
				<input type="hidden" name="articleID" value="<?php echo $_GET['articleID']; ?>" />
				<input type="hidden" name="ip" value="<?php echo getenv("REMOTE_ADDR"); ?>" />		
				<br /><br />
				<input class="buttons" type="submit" name="sendcomment" value="Skicka" style="font: 0.85em verdana, arial, tahoma, serif;" />
			
			</td>
		</tr>
	</form>

	<?php 
	} else if($_SESSION["active"] == true AND $_GET['action'] == 'edit') { # 
	$RSobj_comment_edit = editArticleComment($_GET['commentID']);
	echo "sess: ".$_SESSION["active"]."<br/>";
	echo "get: ".$_GET['action']."<br/>";
	echo "2";
	?>
	
	<form action="xxx" method="post">
		<tr>
			<td style="width: 10%">&nbsp;</td>

			<td colspan="2" style="padding: 0px 5px 5px 0;"><span style="font-weight: bold; font-size: 11px;">Redigera kommentar:</span><br />

				<textarea cols="47" rows="3" name="comment"><?php echo $RSobj_comment_edit['comment']; ?></textarea>
				<input type="hidden" name="ip" value="<?php echo getenv("REMOTE_ADDR"); ?>" />
				<input type="hidden" name="commentID" value="<?php echo $_GET['commentID']; ?>" />
				<input type="hidden" name="articleID" value="<?php echo $_GET['articleID']; ?>" />		
				<br /><br /><input class="buttons" type="submit" name="updatecomment" value="Spara" style="font: 0.85em verdana, arial, 

tahoma, serif;" />

			</td>
		</tr>
	</form>

	<?php 
	} else if($_SESSION["active"] == false) { 
	echo "sess: ".$_SESSION["active"]."<br/>";
	echo "get: ".$_GET['action']."<br/>";
	echo "3";
	?>
		<tr>
			<td style="width: 10%">&nbsp;</td>
		
			<td colspan="2" style="font-weight: bold; font-size: 11px;">För att lämna kommentar - <a href="not.logged.in.php">Logga in</a></td>
		</tr>

	<?php 
	$_SESSION["activepage"] = "http://".$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF']."?".$_SERVER['QUERY_STRING'];
	#$_SESSION["activepage"] = "http://".$_SERVER['HTTP_HOST']."not.logged.in.php";
	} 
	?>

Det problem jag har nu är när en användare vill editera sin kommentar så kommer han/hon aldrig till det formuläret. För att komma dit krävs det att $_GET["action"]=edit och att $_SESSION["active"] = true. Dessa båda värden är uppfyllda men funktionen tar sig aldrig till den mittersta if else-satsen där spara-formuläret öppnar sig. Någon som kan titta på koden och se om jag har glömt något? Jag har suttit och tittat i en halvtimme och testat utan att få till det. Känns lite löjligt det här :r

Medlem sedan okt. 20001 285 inlägg
#2

hmm .. chansar på att..

kolla: else if --> elseif
kolla: ($_SESSION["active"] == true AND $_GET['action'] == 'edit') --> (($_SESSION["active"] == true) && ($_GET['action'] == 'edit'))

Medlem sedan apr. 20041 597 inlägg
#3

Ska testa med det. Återkommer.

Medlem sedan apr. 20041 597 inlägg
#4

Fuel skrev:

hmm .. chansar på att..

kolla: else if --> elseif
kolla: ($_SESSION["active"] == true AND $_GET['action'] == 'edit') --> (($_SESSION["active"] == true) && ($_GET['action'] == 'edit'))

Det blev tyvärr ingen skillnad.

Men jag kom precis på vad det är som orsakar problemet. I min nuvarande if-else-sats finns variabeln $_SESSION["active"] med två gånger där den testas om den är "true". Att jag hamnade i första satsen berodde på att den fanns där och blev sann oavsett om jag skulle redigera eller inte. Nu har jag bytt ordning på dem och då fungerar det perfekt! :)

300 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
155 ms — deklarationer (db)
0 ms — hämta statistik (cache)
142 ms — hämta tråd, inlägg och bilagor (db)
117 ms — ändringar (db)