webForumDet fria alternativet

Visa nyheter på startsidan

PHP

6 svar · 773 visningar · startad av Shaadow

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

Hejsan!

Håller på att bli galen... Har hållt på hela kvällen med att försöka fixa så att mina nyheter som jag skriver ska visas på startsidan men jag får det inte till att fungera!

Det som är konstigt är att jag har gjort likadant i admin/list_news.php och där fungerar det utan att felmeddelandet kommer upp som lyder:

Warning: mysqli_error() expects exactly 1 parameter, 0 given in C:\xampp\htdocs\martin\includes\show_news.php on line 8

Tacksam för all hjälp!
(Kan bero på att jag är trött också att jag inte hittar felet, men ja, hoppas på hjälp iaf)

includes/show_news.php

<?php
	include('conn.php');
	//create database connection
	$conn = dbConnect('query');
	//prepare the SQL query
	$sql = 'SELECT * FROM nyheter ORDER by datum DESC';
	//process the query
	$result = $conn->query($sql) or die(mysqli_error());
	//if successful, print it out
	while ($row = $result->fetch_assoc()) {
?>
				<p id="rubrik"><?=$row['title']?></p>
				<p id="stycke"><?=$row['article']?></p>
				<p id="skribent">Skrivit av: <b><?=$row['writer']?></b>, <i><?=$row['datum']?></i></p>
<?php
	}
?>

includes/conn.php

<?php
function dbConnect($type) {
	if ($type == 'query') {
		$user = 'member';
		$pwd = 'test';
		}
	elseif ($type == 'admin') {
		$user = 'Martin';
		$pwd = 'test';
		}
	else {
		exit('Unrecognized connection type');
		}
	$conn = new mysqli('localhost', $user, $pwd, 'martinsnest')
	or die ('Cannot open database');
	return $conn;
	}
?>

index.php

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Martin's Nest</title>
<link href="stil.css" rel="stylesheet" type="text/css" />
</head>

<body>
<div id="wrapper">
	<div id="container">
		<div id="header" align="center">
			<img src="images/header.jpg" border="0" />
		</div>
		
			<ul id='menu'>
				<li><a href="index.php">Startsida</a></li>
				<li><a href="register.php">Bli medlem</a></li>
				<li><a href=""></a></li>
				<li><a href=""></a></li>
				<li><a href="faq.php">F.A.Q</a></li>
				<li><a href="contact.php">Kontakta</a></li>
			</ul>
			<ul id='menur'>
				<li><a href="admin/index.php">Administration</a></li>
			</ul>
	
		<div id="main">
		<p>&nbsp;</p>
			<table>
				<tr>
					<td id="border" valign="top">
						<p id="litenrubrik">
							Senaste nyheter
						</p>
					</td>
					<td id="border" valign="top">
						<?php
							include('includes/show_news.php');
						?>
					</td>
				</tr>
			</table>
		</div>
	
		<div id="footer">
			<?php
				include('includes/link.php');
			?>
		</div>
	</div>
</div>
</body>
</html>
Medlem sedan apr. 2008137 inlägg
#2

Skicka med $conn till mysqli_error så ser du vad du får för fel.

Medlem sedan apr. 200632 inlägg
#3

Tack så mycket effata!
Hittade problemet nu och nu syns nyheterna. :)

Fråga #2

Hur gör man för att slippa skriva html kod i nyheterna varje gång man skriver nytt?
Dvs att den automatiskt upptäcker radbrytningar (<br>) och stycken (<p>).

Medlem sedan okt. 20041 556 inlägg
#4

Kan inte PHP men testa att använda str_replace() på de tecken du vill byta ut.

Medlem sedan apr. 200632 inlägg
#5

Travoni skrev:

Kan inte PHP men testa att använda str_replace() på de tecken du vill byta ut.

Det är ju enterslag jag vill "byta ut" så att säga.
Dvs att om du använder ett enterslag så ska den automatiskt skriva ut <br>, och använder jag två ska den använda en <p>-tagg.
Frågan är ju bara hur man gör, så jag slipper använda HTML när jag skriver nyheter på sidan.

Medlem sedan mars 2004455 inlägg
#6

Har du provat använda funktionen nl2br? Den ska göra om '\n' till <br />.

http://se.php.net/manual/en/function.nl2br.php

Medlem sedan apr. 200632 inlägg
#7

Har fixat mitt problem med ett skript :)

Kan lika bra fortsätta här med mitt andra problem.
Har fixat så att efter x antal nyheter så skapas det en ny sida och man kan bläddra, det fungerade bra i MySQL men nu när jag försöker i MySQLi fungerar det inte.
Har själv försökt kolla upp olika lösningar men utan resultat =/
Felmeddelandet lyder:

Warning: mysql_result(): supplied argument is not a valid MySQL result resource in C:\xampp\htdocs\martin\includes\show_news.php on line 21

Det jag vet är att den kommenterade raden måste ändras på något sätt, men är inte säker på hur.

show_news.php

<?php
	if(!isset($_GET['page'])){ 
	$page = 1; 
	} else { 
	$page = $_GET['page']; 
	} 
	$max_results = 5; //Antalet inlägg som ska visas
	//prepare the SQL query
	$sql = 'SELECT * FROM nyheter ORDER by created DESC';
	//process the query
	$result = $conn->query($sql) or die(mysqli_error($conn));
	//if successful, print it out
	while ($row = $result->fetch_assoc()) {
?>
				<p id="rubrik"><?=$row['title']?></p>
				<p id="stycke"><?=$row['article']?></p>
				<p id="skribent">Skrivit av: <b><?=$row['writer']?></b>, <i><?=$row['created']?></i></p>
<?php
			}
			
			/* $total_results = mysql_result($conn->query("SELECT COUNT(*) as Num FROM nyheter"),0); */
			$total_pages = ceil($total_results / $max_results); 
			// Föregående 
			if($page > 1){ 
			    $prev = ($page - 1); 
			    echo "<a href=\"".$_SERVER['PHP_SELF']."?page=$prev\"></a> "; 
			} 
		?>
		<div id="sida">Sida
		<?php
			for($i = 1; $i <= $total_pages; $i++){ 
			    if(($page) == $i){
				   echo "$i "; 
			        } else { 
			            echo "<a href=\"".$_SERVER['PHP_SELF']."?page=$i\">$i</a> "; 
			    } 
			} 
			// Nästa 
			if($page < $total_pages){ 
			    $next = ($page + 1); 
			    echo "<a href=\"".$_SERVER['PHP_SELF']."?page=$next\"></a> "; 
			}
			function matain() {
			}
			mysqli_close($conn);
			
		?>
265 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
125 ms — deklarationer (db)
0 ms — hämta statistik (cache)
135 ms — hämta tråd, inlägg och bilagor (db)
128 ms — ändringar (db)