hmm .. chansar på att..
kolla: else if --> elseif
kolla: ($_SESSION["active"] == true AND $_GET['action'] == 'edit') --> (($_SESSION["active"] == true) && ($_GET['action'] == 'edit'))
3 svar · 383 visningar · startad av lillebror
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%"> </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%"> </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%"> </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
hmm .. chansar på att..
kolla: else if --> elseif
kolla: ($_SESSION["active"] == true AND $_GET['action'] == 'edit') --> (($_SESSION["active"] == true) && ($_GET['action'] == 'edit'))
Ska testa med det. Återkommer.
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! :)