Permalänk
Medlem
Skrivet av Bosnic:

Sen närden refreshar så hämtar den bara $roomnr ifrån sidan den redan är på, dvs room.php Hade det inte funkat så hade jag aldrig kunnat se några inlägg alls.

Inläggen dyker upp men försvinner så fort javascriptet försöker uppdatera.

eftersom javascriptet gör ett helt nytt anrop till servern, så vet inte servern vad som fanns i $roomnr när du anropade room.php.
för att se hur servern reagerar när javascriptet anropar include/roombody.php, så kan du skriva in adressen dit i din browser och se vad du får tillbaka:
http://<dinserver>/<eventuellsökväg>/include/roombody.php

Visa signatur

as far as we can tell, the massacre went well...

Permalänk
Medlem

Tror jovnas är inne på rätt spår!

Pröva med

$('#roombody').load('include/roombody.php?r=<?php echo $roomnr; ?>');

och lägg till samma funktion i include/roombody.php som du hade i den andra filen.

Edit: Oj, jovnas du hade visst skrivet en väldigt liknande kod tidigare. Missa det.

Permalänk
Medlem
Skrivet av Bosnic:

Om jag inte har fel så finns $roomnr fortfarande kvar i "room.php" och när "roombody.php" refreshar är det bara att hämta värdet eftersom det aldrig ändras och därför finns kvar?

Sen att du har livlig fantasi är bara ett stort + ! Har själv löst vissa problem förr med lite fantasi när inget annat gick

Refreshar du sidan så finns den inte kvar om jag inte har helt fel.
Det finns ju ett enkelt sätt att testa på, lägg till echo $roomnr innan din query och se ifall den returnerar något.
Den kommer förmodligen returnera något första gången men sedan kommer det vara tomt om jag förstår allt rätt.

Jag är lite förvirrad över hur dina filer är uppbyggda.

Som jag förstår det så ser din roombody.php ut såhär:

<?php require ("script/connect_mysql.php"); $gethead = mysql_query("SELECT * FROM post WHERE RoomID='$roomnr' ORDER BY Date DESC"); $postcount = mysql_num_rows($gethead); // count the output amount if ($postcount > 0) { while($row = mysql_fetch_array($gethead)){ $postid = $row["ID"]; $user = $row['User']; $text = $row["Text"]; $date = $row["Date"]; $printpost .= ' <div class="roompost"> <div style="float: left; margin-left: 20px; margin-top: 5px;">'.$user.'</div> <div style="float: right; margin-right: 20px; margin-top: 5px;">'.$date.'</div> <div style="margin-top:30px; margin-left: 20px; margin-bottom: 10px;">'.$text.'</div> </div> '; } } mysql_free_result($gethead); echo $printpost; ?>

Och din room.php ser ut såhär:

<?php if(isset($_GET["r"])) { $roomnr = $_GET["r"]; } else if(!isset($_GET["r"])) { header ("location: index.php"); exit(); } ?> <script type="text/javascript"> var auto_refresh = setInterval( function () { $('#roombody').load('include/roombody.php'); }, 1500); </script> <div id="roombody"><?php include("include/roombody.php");?></div>

Jag skulle testa något sådant här isåfall.

Byta ut:

if(isset($_GET["r"])) { $roomnr = $_GET["r"]; }

Till:

if(isset($_GET["r"])) { session_start(); $_SESSION['roomnr'] = $_GET["r"]; $roomnr = $_SESSION['roomnr']; }

Kan mycket väl ha fel, men jag blir lite förvirrad av hur det är upplagt.
Testa och se ifall det blir någon skillnad.

EDIT: Ändra i javascriptet också, nu ser det ut såhär:

Byt till:

$('#roombody').load('include/roombody.php');

Permalänk
Medlem
Skrivet av BuruZ:

Kan mycket väl ha fel, men jag blir lite förvirrad av hur det är upplagt.
Testa och se ifall det blir någon skillnad.

Provade göra som du sa, men det verkar inte fungera. Jag ändrade lite i "roombody.php" filen så att den skulle hämta 'roomnr' ifrån en session och det funkar. Dock så har jag hittat stället där koden strular upp.

Jag gjorde så att jag skrev ut siffror på flera ställen i koden med hjälp utav "echo" och på sätt ifall koden fastnar/buggar eller får ett error någonstans så ser jag var

session_start(); echo "1"; $roomnr = $_SESSION['roomnr']; echo "ses ". $_SESSION['roomnr'] . "<br>" . $roomnr . "<br>"; $gethead = mysql_query("SELECT * FROM post WHERE RoomID='$roomnr' ORDER BY Date DESC"); echo "2 " . $roomnr; $postcount = mysql_num_rows($gethead); // count the output amount echo "6 "; if ($postcount > 0) { echo "7 "; while($row = mysql_fetch_array($gethead)){ echo "3"; $postid = $row["ID"]; $user = $row['User']; $text = $row["Text"]; $date = $row["Date"]; $printpost .= ' <div class="roompost"> <div style="float: left; margin-left: 20px; margin-top: 5px;">'.$user.'</div> <div style="float: right; margin-right: 20px; margin-top: 5px;">'.$date.'</div> <div style="margin-top:30px; margin-left: 20px; margin-bottom: 10px;">'.$text.'</div> </div> '; } echo "4"; } echo "num5"; mysql_free_result($gethead); echo $printpost;

Jag upptäckte att så fort sidan refreshar så försvinner radkoden

echo "7 "; och echo "3";

Vilket betyder att det det uppstår ett fel någonstans här:

if ($postcount > 0) { echo "7 "; while($row = mysql_fetch_array($gethead)){ echo "3";

Fast detta sker endast efter att sidan refreshar och innan den gör det så funkar allt som det ska

Permalänk
Medlem

ändra till

$gethead = mysql_query("SELECT * FROM post WHERE RoomID='$roomnr' ORDER BY Date DESC") or die(mysql_error());

för att skriva ut eventuella felmeddelanden från SQL-servern.

kör

echo '$postcount = ' . $postcount; // innan din if alltså...

för att se vad du egentligen får tillbaka från mysql_num_rows().

Visa signatur

as far as we can tell, the massacre went well...

Permalänk
Medlem
Skrivet av Bosnic:

Provade göra som du sa, men det verkar inte fungera. Jag ändrade lite i "roombody.php" filen så att den skulle hämta 'roomnr' ifrån en session och det funkar. Dock så har jag hittat stället där koden strular upp.

Jag gjorde så att jag skrev ut siffror på flera ställen i koden med hjälp utav "echo" och på sätt ifall koden fastnar/buggar eller får ett error någonstans så ser jag var

Fast detta sker endast efter att sidan refreshar och innan den gör det så funkar allt som det ska

Lägg till mysql_error() som jag har gjort i koden och se ifall den spottar ut något.

session_start(); echo "1"; $roomnr = $_SESSION['roomnr']; echo "ses ". $_SESSION['roomnr'] . "<br>" . $roomnr . "<br>"; $gethead = mysql_query("SELECT * FROM post WHERE RoomID='$roomnr' ORDER BY Date DESC") or die(mysql_error()); echo "2 " . $roomnr; $postcount = mysql_num_rows($gethead) or die(mysql_error()); // count the output amount echo $postcount.'<br />'; echo "6 "; if ($postcount > 0) { echo "7 "; while($row = mysql_fetch_array($gethead)){ echo "3"; $postid = $row["ID"]; $user = $row['User']; $text = $row["Text"]; $date = $row["Date"]; $printpost .= ' <div class="roompost"> <div style="float: left; margin-left: 20px; margin-top: 5px;">'.$user.'</div> <div style="float: right; margin-right: 20px; margin-top: 5px;">'.$date.'</div> <div style="margin-top:30px; margin-left: 20px; margin-bottom: 10px;">'.$text.'</div> </div> '; } echo "4"; } echo "num5"; mysql_free_result($gethead); echo $printpost;

Permalänk
Medlem
Skrivet av BuruZ:

Lägg till mysql_error() som jag har gjort i koden och se ifall den spottar ut något.

Jo lite dumt att man har glömt av helt att man kunde göra så, har använt den metoden flitigt innan

Men hur som, den spottade ut detta iaf:

Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)

Så får ta en snabb koll och försöka hitta en lösning