php/MySQL error

  • Onderwerp starter Onderwerp starter otie
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

otie

Gebruiker
Lid geworden
1 dec 2008
Berichten
313
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/a4133872/public_html/forum2/forum/main_forum.php on line 56

die error krijg ik in mijn forum.
dit is lijn 57:
PHP:
while($rows=mysql_fetch_array($result)):
en als ik de dubbelepunt opp het einde weg haal krijg ik eer error op line 109
PHP:
<?php endwhile;
 
Ik weet niet waarom je daar een :zet? Een while loop gaat normaal gezien gewwon als volgt:

while (blablab =blalbal) {

test
test

}
 
Ik weet niet waarom je daar een :zet? Een while loop gaat normaal gezien gewwon als volgt:

while (blablab =blalbal) {

test
test

}

ik heb het niet zelf gemaakt, het is het simple php forum script dat ik heb gedownload.
voor de rest werkt alles wel (leden enz)
ik kijk ff hoe het is zonder die : tnx alvast
 
het werkt niet, dan krijg ik
Parse error: syntax error, unexpected T_ENDWHILE in /home/a4133872/public_html/forum2/forum/main_forum.php on line 109 :(
hier is het forum
 
Laatst bewerkt:
Grote kans dat het probleem in $result zit aangezien de error "Supplied argument is not a valid MySQL result resource" is.

Dat houdt in dat het argument in de functie mysql_fetch_arry() niet geldig is.
Het argument is de inhoud van de variabele $result.

Daar zal of
PHP:
$result = mysql_query($query);
staan, of
PHP:
$result = mysql_query("SELECT * FROM etc");

Zet voor je WHILE eens dit
PHP:
if(!$result) {
  echo 'Er is een fout opgetreden! MySQL zegt: '. mysql_error();
} else {
En na je ENDWHILE nog een sluit-accolade om de ELSE af te sluiten.
 
okey bedankt, ik zal even kijken

ik heb het gevonden, hier is de regel:
PHP:
$result=mysql_unbuffered_query($sql);
dit is de variabele $sql:
PHP:
$sql="SELECT q. * , a1.a_datetime, a1.a_name, a1.a_email, a1.a_id
FROM forum_question AS q
LEFT JOIN forum_answer AS a1 ON q.id = a1.question_id
LEFT JOIN forum_answer AS a2 ON a1.question_id = a2.question_id
AND a1.a_id < a2.a_id
WHERE a2.a_id IS NULL 
ORDER BY q.sticky DESC , q.id DESC LIMIT $startat, $rpp";
dit werkt ook niet
PHP:
if(!$result) {
  echo 'Er is een fout opgetreden! MySQL zegt: '. mysql_error();
} else {
 
Laatst bewerkt:
Dan is de waarde waarschiijnlijk nul.
 
Dat het niet werkt ligt eerder aan de manier waarop je het hebt verwerkt denk ik dan aan de code.

Kun je de volledige code hier plaatsen?
 
main_forum.php daar gaat de index redict pagina naartoe.
hier de gehele code bedankt alvast

PHP:
<?php
require('config.php');
if(empty($_COOKIE['newposts']) || !empty($_GET['np'])) {
	setcookie("newposts", time());
	$_COOKIE['newposts'] = time();
}
	
// Pagination
$page=mysql_real_escape_string($_GET['page']);
$pagination ='';
$startat = $page * $rpp;
$q=mysql_unbuffered_query("SELECT count(*) FROM {$db_prefix}question");
if(!$q) die('Script is not installed.');
$row = mysql_fetch_row($q);
$pages = ($row[0] + $rpp - 1) / $rpp - 1;

for ($k=0; $k<$pages; $k++) {
	if ($k != $page)
		$pagination .= " <a href='main_forum.php?page=$k'>".($k+1)."</a>";
	else
		$pagination .= " <strong>&lt;".($k+1)."&gt;</strong>";
}

// Get number of users
$q = mysql_unbuffered_query("SELECT count(*) FROM {$db_prefix}user");
$row = mysql_fetch_row($q);
$users=$row[0];

// Fetch Users
// THIS QUERY IS SO FRIGGIN CONFUSING
$sql="SELECT q. * , a1.a_datetime, a1.a_name, a1.a_email, a1.a_id
FROM forum_question AS q
LEFT JOIN forum_answer AS a1 ON q.id = a1.question_id
LEFT JOIN forum_answer AS a2 ON a1.question_id = a2.question_id
AND a1.a_id < a2.a_id
WHERE a2.a_id IS NULL 
ORDER BY q.sticky DESC , q.id DESC LIMIT $startat, $rpp";
// OREDER BY id DESC is order result by descending 
$result=mysql_unbuffered_query($sql);

// Start Template
include('header.php');
?>
<h2>Forum</h2>
<div style="width:100%;text-align: left;float:left;"><a href="?np=1">Seen New Posts</a></div>
<div>
<div>
	<div style="width:50%" class="mfheader">Topic</div>
	<div style="width:13%" class="mfheader">Created by</div>
	<div style="width:10%" class="mfheader">Views</div>
	<div style="width:8%" class="mfheader">Replies</div>
	<div style="width:15%" class="mfheader">Last Post</div>
</div>

<?php 
while($rows=mysql_fetch_array($result)):
	if(preg_match("/guest/i", $rows['name'])){
		list($rows['email'],$ip) = explode('|',$rows['email']);
		if(preg_match('/\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/', $rows['email'])) {
			list($login,$server)=explode('@',$rows['email']);
			$namelink = '<script language="javascript" type="text/javascript">DisplayMail("'.$server.'", "'.$login.'", "'.$rows['name'].'","onmouseover=\"Tip(\'Posted on '.$rows['datetime'].'\')\"");</script>';
		} else
			$namelink = '<span onmouseover="Tip(\'Posted on '.$rows['datetime'].'\')">'.$rows['name'].'</span>';
	}
	else
		$namelink ='<a href="view_profile.php?id='.$rows['name'].'" onmouseover="Tip(\'Posted on '.$rows['datetime'].'\')">'.$rows['name'].'</a>';
	
	// security for registered globals
	$new='';
	//check if there is a post at all
	if(!empty($rows['a_id'])) {
		$datetime=$rows['a_datetime'];
		$postdate = '<a href="view_topic.php?id='.$rows['id'].'#b'.$rows['a_id'].'" onmouseover="Tip(\'Last Posted By '.$rows['a_name'].'\')">'.$rows['a_datetime'].'</a>';	
	} else {
		$datetime=$rows['datetime'];
		$postdate=$rows['datetime'];
	}
	
	// Separate Date/Time
	$ArrDate=explode(' ',$datetime);
	$date=explode('/',$ArrDate[0]);
	$time=explode(':',$ArrDate[1]);
	// Check if new
	if(mktime($time[0],$time[1],$time[2],$date[1],$date[0],'20'.$date[2]) > $_COOKIE['newposts'])
		$new='_new';
	

		
	
	if($rows['locked'])
		$pic ='lock'.$new;
	else
		$pic = 'folder'.$new;
?>
<div>
	<div style="width:50%;text-align: left;" class="mfrow">
	<img src='<?=$pic?>.gif' alt='Locked' border='0' style='padding-right: 3px;' />
	<?php
	if ($rows['sticky'])
		echo "<img src='sticky.gif' alt='Sticky' border='0' style='padding-right: 3px;' />";
	?>
	<a href="view_topic.php?id=<?=$rows['id'] ?>"><?=$rows['topic'] ?></a>
	</div>
	<div style="width:13%" class="mfrow"> <?=$namelink ?></div>
	<div style="width:10%" class="mfrow"> <?=$rows['view'] ?></div>
	<div style="width:8%" class="mfrow"> <?=$rows['reply'] ?></div>
	<div style="width:15%" class="mfrow"> <?=$postdate?></div>
</div>
<?php endwhile;
$topic='';
if ($_SESSION['logged_in'] || $guest_question)
	$topic='<a href="create_topic.php"><strong>Create New Topic</strong> </a>';
?>
	<div style="background:#E6E6E6;float:left;width:100%;">
	<div class="mffooter" style="float:left;text-align:left;"><?= $topic ?></div>
	<form method="post" action="search.php">
	<div class="mffooter" style="float:right;text-align:right;">
		<input type="text" name="searchstr" style="padding:0px; width:120px;" /> 
		<input type="submit" value="Search" style="padding:0px;" />
	</div>
	</form>
	</div>
	<div style="width:100%;text-align: right;float:left;"><?=$pagination ?></div>
</div>
<div style="float:left;width:100%;">
<h3>Forum Key</h3>
<p>
<table>
	<tr>
		<td width="20" align="left"><img src="folder_new.gif" alt="New posts" /></td>
		<td>New posts</td>
		<td width="20" align="center"><img src="folder.gif" alt="No new posts" /></td>
		<td>No new posts</td>
		<td width="20" align="center"><img src="sticky.gif" alt="Sticky" /></td>
		<td>Sticky</td>
	</tr>
	<tr>
		<td><img src="lock_new.gif" alt="New posts [ Locked ]" /></td>
		<td>New posts [ Locked ]</td>
		<td><img src="lock.gif" alt="No new posts [ Locked ]" /></td>
		<td>No new posts [ Locked ]</td>
	</tr>
</table>
There are <?=$users ?> registered users.</p>
</div>
<?php include('footer.php') ?>
 
Laatst bewerkt door een moderator:
Normaal zal ik dit nooit aanraden, maar omdat je anders op meerdere plekken wat aan moet passen is dit de makkelijkste manier.

Maak van regel 39 in main_forum.php eens
PHP:
$result=mysql_unbuffered_query($sql) or die('Er is een fout opgetreden! MySQL zegt '. mysql_error());
Met deze code wordt er een foutmelding weergegeven wanneer de query een fout op levert.
Mijn vermoeden is dus dat die query niet juist is waardoor de WHILE geen goede input krijgt.

Aangezien we alleen main_forum.php nodig hadden heb ik de rest van je code verwijderd.
Zo ziet ook niet iedereen je MySQL gegevens ;)
 
dit krijg ik nu als foutmelding:
Er is een fout opgetreden! MySQL zegt Table 'a4133872_forum.forum_question' doesn't exist
dus een tabel mist er :(
maar laatmaar, ik zoek wel andere forumsoftware die klein is...
misschien weet 1 van jullie er nog eentje?
 
Laatst bewerkt:
phpBB, punBB, SMF?

Of zijn die je te uitgebreid?
 
Status
Niet open voor verdere reacties.

Nieuwste berichten

Terug
Bovenaan Onderaan