Login script

  • Onderwerp starter Onderwerp starter moh
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.
Nog neit echt af maar hier is alvast een klein gedeelte momenteel laat hij alleen de links view comments zien en niet de nieuws zelf.

PHP:
<?php
// connectie
include_once "functions.inc";
 
connect();

$id = $_GET['news_id'];
// check of news_id bestaat en details weergeven.
	if($id) {
 	$qry = "SELECT *,charname FROM news, profile WHERE news.id=$id && news.profile_id=profile.id";
	$res = mysql_query($qry) or die (mysql_error());
		while ($row = mysql_fetch_assoc($res)){
			$ncharname = $row['charname'];
			$nsubject = $row['subject'];
			$nmessage = $row['message'];
			$ntimestamp = $row['timestamp'];
							
				echo "<b>$nsubject</b><hr color=\"#A48BFE\"><br>";
				echo nl2br($nmessage);
				echo" <hr color=\"#A48BFE\">";	
				echo"<font color=\"#07B2F6\">posted by <b>$ncharname</b> on $ntimestamp</font><br><br><br><br>";
				
	$qry2 = "SELECT *,charname FROM news_comments, profile WHERE news_comments.news_id=$id && news_comments.profile_id=profile.id";
	$res2 = mysql_query($qry2) or die (mysql_error());
		while ($row2 = mysql_fetch_assoc($res2)){
			$ccharname = $row2['charname'];
			$cmessage = $row2['message'];
			$ctimestamp = $row2['timestamp'];
			
				echo "Response from <b>$ccharname:</b><br><br>";
				echo nl2br($cmessage);
				echo" <hr color=\"#A48BFE\">";	
				echo"<font color=\"#07B2F6\">posted on $ctimestamp</font><br><br>";
			
		}
		}  	 	
// check niet geslaagt dus de news berichten weergeven		
    }else {
		$query = "SELECT * FROM news";
		$result = mysql_query($query) or die (mysql_error());
  			while($row = mysql_fetch_assoc($result)) {
      				echo "<a href=\"?news_id='".$row['id'] ."'\">View comments</a><br>";
   				}	
			  }
	
?>

tot zover werkt dit wel wat ik wou is dat de orginele post ook weer wordt weergegeven boven aan zodat ze zien hey ik bekijk comments van...
hehe het werkt bijna goed!

de enigste VAGE probleem die ik heb is dit in de database staat bij de news_comments tabel een rij met timestamp hier staat dat dummy (een user) heeft gepost op 2009-08-28 als DATE
wat geeft de site weer : posted on 2026-08-09 lol? echt vaag -.- anyway om de date om te draaien naar 28-08-2009 op website zal ik zeker moeten zeggen dat $timestamps een array is?

en dan bepaalen d/m/Y weergeven.

maarja het vage voorlopig is de post datum klopt dus helemaal niet deze informatie staat niet eens in de tabel enig idee wat dit kan veroorzaken.

o en dacht eraan om te zeggen als er geen comments zijn gevonden echo dan no comments made yet maarja in die qry2 heeft hij altijd resultaat -.- want hij vind $id :p mmm :s
 
Laatst bewerkt:
Heb je nu nog steeds je index.php zoals in je bericht van gister 15:30?
Dat zou ik zo niet doen.

Houdt je index.php zo:
PHP:
<?php                               
$page = $_GET['page'];
if (isset($page)) {
	if (!strpos($page,".") && !strpos($page,"/")) {
		$path = "inc/".$page.".php";
		if(file_exists($path)){
			include($path);
		} else {
			echo "That page does not exists.";
		}
	}
} else {
	// Standaard tekst wanneer er geen specifieke pagina wordt opgevraagd
	echo "No $ GET dus welkom op deze site bla bla ....";
}																
?>
Je news.php wordt geïnclude wanneer $_GET['page'] gelijk is aan "news"
Wil je dus bij een nieuws_id wat weergeven doe je dat zo:
PHP:
<?php
// connectie
include_once "functions.inc";
 
connect();
// check of news_id bestaat en details weergeven.
if(isset($_GET['news_id']) && ctype_digit($_GET['news_id'])) {
	$id = $_GET['news_id'];
	$qry = "SELECT *,charname FROM news, profile WHERE news.id= ". $id ." && news.profile_id=profile.id";
	$res = mysql_query($qry) or die (mysql_error());
	while ($row = mysql_fetch_assoc($res)){
		$ncharname = $row['charname'];
		$nsubject = $row['subject'];
		$nmessage = $row['message'];
		$ntimestamp = $row['timestamp'];
		echo "<b>$nsubject</b><hr color=\"#A48BFE\"><br>";
		echo nl2br($nmessage);
		echo" <hr color=\"#A48BFE\">";  
		echo"<font color=\"#07B2F6\">posted by <b>$ncharname</b> on $ntimestamp</font><br><br><br><br>";
		$qry2 = "SELECT *,charname FROM news_comments, profile WHERE news_comments.news_id=$id && news_comments.profile_id=profile.id";
		$res2 = mysql_query($qry2) or die (mysql_error());
		while ($row2 = mysql_fetch_assoc($res2)){
			$ccharname = $row2['charname'];
			$cmessage = $row2['message'];
			$ctimestamp = $row2['timestamp'];
			echo "Response from <b>$ccharname:</b><br><br>";
			echo nl2br($cmessage);
			echo" <hr color=\"#A48BFE\">";  
			echo"<font color=\"#07B2F6\">posted on $ctimestamp</font><br><br>";
		}
	}       
// check niet geslaagt dus de news berichten weergeven      
} else {
	$query = "SELECT * FROM news";
	$result = mysql_query($query) or die (mysql_error());
	while($row = mysql_fetch_assoc($result)) {
		echo "<a href=\"?page=news&news_id='".$row['id'] ."'\">View comments</a><br>";
	}   
}
?>
Moet volgens mij gewoon zo blijven werken.

In je database heb je de postdatum als type TIMESTAMP of DATE(TIME)?

Als men een nieuw nieuwsbericht aanmaakt wat stuur je dan naar de database als datum?
 
hey bedank message ik zal nog wel even proberen die code die je net had gepost om toch die informatie in news.php te gooien
PHP:
if(isset($_GET['news_id']) && ctype_digit($_GET['news_id'])) {
    $id = $_GET['news_id'];

want ik lag in de knoei met index.php $Get daarom heb ik het zo gedaan :) zal later proberen.

nou er is nog geen post page ik heb zelf met phpmyadmin een date geslecteerd en het wordt opgeslagen als type: DATE dus daarom vind ik het zo raar bij de andere post werkt het normaal -.-

btw
PHP:
&& ctype_digit($_GET['news_id']))

is die nodig want je zegt al $id = $_GET(news['id']) daarin vind hij al een value of is dat meer voor protection dat dat alleen een nummer kan zijn?
 
Laatst bewerkt:
Het is sowieso veiliger om alleen een nummer te verwachten.

SQL Injection zit niemand op te wachten, als je alles toelaat kan men je hele database leeggooien.

Het type DATE in je database wordt altijd zo opgeslagen YYYY-MM-DD, je kunt met de MySQL-functie DATE_FORMAT het juiste formaat in 1x uit je database halen.

Meer informatie daarover vind je hier: http://dev.mysql.com/doc/refman/6.0/en/date-and-time-functions.html
 
Daar heb je volkomen gelijk in.

Alleen de code die je meegeeft werkt helaas niet bij mij verklaring zou zijn hoe ik de script zelf al heb opgebouwd.

de if isset news_id check pakt hij niet op news.php verklaring hiervoor kan zijn is dat ik niet zeg page header = header.php content=whateverlink.php footer=footer.php

ik blijf altijd op me index.php hij echoed alleen data van $get in index.php dus als news_id niet bekent is op index.php selecteerd hij de else statement als $_GET niet page is.

het ligt echt aan mijn opbouw en dat maakt het lastig ook om hulp te bieden.

en eveneens het ctype_digit zal ik waarschijnlijk op deze manier in index.php moeten verwerken want ik zei $id = $_GET['news_id'] && ctyp etc toen werkte me queries niet goed wat er gebeurde was hij liet elke comment zien bij de post ookal hoorde de comment bij een andere post dus ik ga kijken of het wel werkt als ik hem aangeef op de index.php
(update: en inderdaad ctype_digit werkt dus wel goed als ik hem zet op index.php)


punt is sommige code die ik krijg betekend ook vaak dat ik alles moet aanpassen.
en tja dat valt zwaar some ben ik uren bezig met 1 klein ding..
 
Laatst bewerkt:
Als je "alles" aan moet passen dan zit je code niet logisch in elkaar. :confused:

Als je op index.php je layout hebt (wat logisch is) dan wil je daar alleen maar gaan checken of je een bepaalde pagina moet includen.

Nieuwscommentaar wil je enkel laten zien op de nieuwspagina, dan is het onnozel om altijd op index.php te gaan checken of er een news_id is meegegeven aan de URL. :rolleyes:

Als je nou eens je volledige code van index.php hier plaatst en ook de volledige code van news.php dan kunnen wij er wel een logisch geheel van maken.
 
index.php
PHP:
<html>
<head>
<title>INSIGNIFICANT</title>
	<link href="style.css" rel="stylesheet" type="text/css">
</head>
<body>
	<div id="align">
		<?php
		include_once "inc/functions.inc";
					
		connect();

		if (isset($_COOKIE["insignificant"])) {
    		$username = $_COOKIE["insignificant"];

				$qry = "SELECT access FROM permissions WHERE id = (SELECT permissions_id FROM profile  WHERE charname = '".$username."')";
	
				$rData = mysql_query($qry);
  				$aData = mysql_fetch_assoc($rData);

					if ( $aData[ 'access' ] == 'Admin' && 'Member' && 'Guest' ) {
						echo "<div id=\"logo\">
								<ul>
								<li><a href=\"index.php?page=news\">NEWS</a></li>
								<li><a href=\"index.php?page=raids\">Raids</a></li>
								<li><a href=\"http://insignificant.3forum.biz/\">FORUM</a></li>
								</ul>
									<div id=\"logintrue\">
										You are logged in as:<br><br><b>$username</b>
									</div>
         						</div><br><br>";
							    }}else{
										echo "<div id=\"logo\">
										      <ul>
											  <li><a href=\"index.php?page=news\">NEWS</a></li>
											  <li><a href=\"http://insignificant.3forum.biz/recruitment-f7/\">JOIN US</a></li>
											  <li><a href=\"http://insignificant.3forum.biz/\">FORUM</a></li>
											  <li><a href=\"index.php?page=register\">REGISTER</a></li>
											  </ul>
												<div id=\"login\">
													<form name=\"setCookie\" method=\"POST\" action=\"index.php?page=login\">
														Username: <input type=\"text\" name=\"username\" size=\"24\"><br>
														Password: <input type=\"password\" name=\"password\" size=\"20\"><br>
														<input type=\"submit\" value=\"Login\" name=\"submit\">
													</form>
											 	</div>
		                                      </div><br><br>";
 }
?>
<div id="contains">
	<table width="70%">
	<tr>
	<td>
		<?php					 			
		$page = $_GET['page'];
	 	$news = $_GET['news_id'] && ctype_digit($_GET['news_id']);
					 
			if ($page){
								 		
				if (!strpos($page,".") && !strpos($page,"/")){
					$path = "inc/".$page.".php";
								 			
						if(file_exists($path)){
							include($path);
						}else echo "That page does not exists.";
				}else {echo "Not allowed!";}
		 	}else 
				 if ($news){
						if (!strpos($news,".") && !strpos($news,"/")){
							include "inc/news.php";
						}
				 }else echo "Welcome to Insignificant!<br><br>
				 			This website is still under heavy construction.";
		?>
 	</td>
	</tr>
	</table>
</div>
</div>
</body>
</html>

news.php
PHP:
<?php
// connectie
include_once "functions.inc";
 
connect();

$id = $_GET['news_id'];
// check of news_id bestaat en details weergeven.
	if($id) {
 	$qry = "SELECT news.id, news.profile_id, news.subject, news.message, news.timestamp, profile.charname FROM news, profile WHERE news.id=$id && news.profile_id=profile.id";
	$res = mysql_query($qry) or die (mysql_error());
		while ($row = mysql_fetch_assoc($res)){
			$ncharname = $row['charname'];
			$nsubject = $row['subject'];
			$nmessage = $row['message'];
			$ntimestamp = $row['timestamp'];
			$ntimestamp = strtotime( $ntimestamp );
			$ntimestamp = date( 'D/d/m/Y', $ntimestamp );

				echo "<b><font color=\"#07B2F6\">Original post :</b></font><br>";			
				echo "<b>$nsubject</b><hr color=\"#A48BFE\"><br>";
				echo nl2br($nmessage);
				echo" <hr color=\"#A48BFE\">";	
				echo"<ul><font color=\"#07B2F6\">posted by <b>$ncharname</b> on $ntimestamp</font></ul><br><br><br><br><b><font color=\"#07B2F6\">Replies :</b></font>";
		}		
	$qry2 = "SELECT news_comments.id, news_comments.news_id, news_comments.profile_id, news_comments.message, news_comments.timestamp, profile.charname FROM news_comments, profile
			WHERE news_comments.news_id=$id && news_comments.profile_id=profile.id";
	$res2 = mysql_query($qry2) or die (mysql_error());
		while ($row2 = mysql_fetch_assoc($res2)){
			$ccharname = $row2['charname'];
			$cmessage = $row2['message'];
			$ctimestamp = $row2['timestamp'];
			$ctimestamp = strtotime( $ctimestamp );
			$ctimestamp = date( 'D/d/m/Y', $ctimestamp );
			
				echo "<hr color=\"#A48BFE\"><br>";
				echo nl2br($cmessage);
				echo" <hr color=\"#A48BFE\">";	
				echo"<ul><font color=\"#07B2F6\">posted by <b>$ccharname</b> on $ctimestamp</font></ul><br><br>";
		}
// check niet geslaagt dus de news berichten weergeven		
    }else {
		$query = "SELECT news.id, news.profile_id, news.subject, news.message, news.timestamp, profile.charname FROM news,profile WHERE news.profile_id=profile.id";
		$result = mysql_query($query) or die (mysql_error());
  			while($row = mysql_fetch_assoc($result)) {
  				$nid = $row['id'];
				$charname = $row['charname'];
				$subject = $row['subject'];
				$message = $row['message'];
				$timestamp = $row['timestamp'];
				$timestamp = strtotime( $timestamp );
				$timestamp = date( 'D/d/m/Y', $timestamp );
							
				echo "<b>$subject</b><hr color=\"#A48BFE\"><br>";
				echo nl2br($message);
				echo" <hr color=\"#A48BFE\">";	
				echo"<ul><li><font color=\"#07B2F6\">posted by <b>$charname</b> on $timestamp </font><a href=\"?news_id=$nid\">View comments</a></li></ul><br><br><br>";
   				}	
			  }
	
?>
 
index.php
PHP:
<html>
<head>
	<title>INSIGNIFICANT</title>
	<link href="style.css" rel="stylesheet" type="text/css">
</head>
<body>
<div id="align">
<?php
include_once "inc/functions.inc";

connect();

if (isset($_COOKIE["insignificant"])) {
	$username = $_COOKIE["insignificant"];
	$qry = "SELECT access FROM permissions WHERE id = (SELECT permissions_id FROM profile  WHERE charname = '".$username."')";
	
	$rData = mysql_query($qry);
	$aData = mysql_fetch_assoc($rData);
	if ( $aData[ 'access' ] == 'Admin' && 'Member' && 'Guest' ) {
		echo '
	<div id="logo">
		<ul>
			<li><a href="index.php?page=news">NEWS</a></li>
			<li><a href="index.php?page=raids">Raids</a></li>
			<li><a href="http://insignificant.3forum.biz/">FORUM</a></li>
		</ul>
		<div id="logintrue">
			You are logged in as:<br />
			<br/>
			<b>'. $username .'</b>
		</div>
	</div>
	<br />
	<br />';
	}
} else{
	echo '
	<div id="logo">
		<ul>
			<li><a href="index.php?page=news">NEWS</a></li>
			<li><a href="http://insignificant.3forum.biz/recruitment-f7/">JOIN US</a></li>
			<li><a href="http://insignificant.3forum.biz/">FORUM</a></li>
			<li><a href="index.php?page=register">REGISTER</a></li>
		</ul>
		<div id="login">
			<form name="setCookie" method="POST" action="index.php?page=login">
				Username: <input type="text" name="username" size="24"><br>
				Password: <input type="password" name="password" size="20"><br>
				<input type="submit" value="Login" name="submit">
			</form>
		</div>
	</div>
	<br />
	<br />';
}
?>
<div id="contains">
<table width="70%">
	<tr>
		<td>
<?php
if (isset($_GET['page'])){
	$page = $_GET['page'];
	if (!strpos($page,".") && !strpos($page,"/")) {
		$path = "inc/".$page.".php";
		if(file_exists($path)) {
			include($path);
		} else {
			echo "That page does not exists.";
		}
	} else {
		echo "Not allowed!";
	}
} else {
	echo "Welcome to Insignificant!<br><br>
This website is still under heavy construction.";
?>
		</td>
	</tr>
</table>
</div>
</div>
</body>
</html>
news.php
PHP:
<?php
// connectie
include_once "functions.inc";

connect();

// check of news_id bestaat en details weergeven.
if(isset($_GET['news_id']) && ctype_digit($_GET['news_id'])) {
	$id = $_GET['news_id'];
	$qry = "SELECT
				news.id,
				news.profile_id,
				news.subject,
				news.message,
				DATE_FORMAT(news.timestamp, '%a/%d/%m/%Y) AS news.timestamp,
				profile.charname
			FROM news, profile
			WHERE news.id = ". $id ."
			AND news.profile_id=profile.id";
	$res = mysql_query($qry) or die (mysql_error());
	// Je haalt maar 1 resultaat op dus een WHILE is onnodig
	$row = mysql_fetch_assoc($res);
		$ncharname = $row['charname'];
		$nsubject = $row['subject'];
		$nmessage = nl2br($row['message']);
		$ntimestamp = $row['timestamp'];
		echo'
		<b><font color="#07B2F6">Original post :</b></font><br>
		<b>'. $nsubject .'</b><hr color="#A48BFE"><br>
		'. $nmessage .'
		<hr color="#A48BFE">
		<ul>
			<li><font color="#07B2F6">posted by <b>'. $ncharname .'</b> on '. $ntimestamp .'</font></li>
		</ul>
		<br><br><br><br>
		<b><font color="#07B2F6">Replies :</b></font>';
		// Commentaar ophalen
		$qry2 = "SELECT
					news_comments.id,
					news_comments.news_id,
					news_comments.profile_id,
					news_comments.message,
					DATE_FORMAT(news_comment.timestamp, '%a/%d/%m/%Y) AS news_comments.timestamp,
					profile.charname
				FROM news_comments, profile
				WHERE news_comments.news_id= ". $id ."
				AND news_comments.profile_id=profile.id";
		$res2 = mysql_query($qry2) or die (mysql_error());
		while ($row2 = mysql_fetch_assoc($res2)){
			$ccharname = $row2['charname'];
			$cmessage = nl2br($row2['message']);
			$ctimestamp = $row2['timestamp'];
			echo '
			<hr color="#A48BFE"><br>
			'. $cmessage .'
			<hr color="#A48BFE">
			<ul>
				<li><font color="#07B2F6">posted by <b>'. $ccharname .'</b> on '. $ctimestamp .'</font></li>
			</ul>
			<br><br>';
		}
// check niet geslaagt dus de news berichten weergeven      
} else {
	$query = "SELECT
					news.id,
					news.profile_id,
					news.subject,
					news.message,
					DATE_FORMAT(news.timestamp, '%a/%d/%m/%Y) AS news.timestamp,
					profile.charname
				FROM news,profile
				WHERE news.profile_id=profile.id";
	$result = mysql_query($query) or die (mysql_error());
	while($row = mysql_fetch_assoc($result)) {
		$nid = $row['id'];
		$charname = $row['charname'];
		$subject = $row['subject'];
		$message = nl2br($row['message']);
		$timestamp = $row['timestamp'];
		echo '
		<b>'. $subject .'</b>
		<hr color="#A48BFE"><br>
		'. $message .'
		<hr color="#A48BFE">
		<ul>
			<li>
				<font color="#07B2F6">posted by <b>'. $charname .'</b> on '. $timestamp .'</font>
				<a href="?page=news&news_id='. $nid .'">View comments</a>
			</li>
		</ul>
		<br><br><br>';
	}
}
?>
Netjes geformateerd, datums zouden meteen goed vanuit de database moeten komen.

Als je verder met PHP gaat leer jezelf dan dit aan:
HTML echoën met PHP is altijd enkele quotes.

Je moet dan wel al je variabelen "escapen" maar dan weet je meteen waar je variabelen hebt zitten.
Verder levert het een prettiger te lezen HTML-code op.

Als het goed is als je nu naar index.php?page=news gaat krijg je een lijstje met alle nieuwsberichten.

Als je dan op "Views comments" klikt moet je doorgaan naar index.php?page=news&news_id={getal}

Dan zou je een enkel nieuwsbericht te zien krijgen met commentaar.
 
Bedankt voor de code ziet er inderdaad beter uit.
Heb in index.php even laatste else statement geclosed van bovenstaande code :)

news.php heeft een sql error date format.
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''%a/%d/%m/%Y) AS news.timestamp, profile.charname ' at line 6
ik zie de fout niet...
misschien? de error is weg nu maar ik zie nou geen datum echo..
PHP:
DATE_FORMAT(news.timestamp, '%a/%d/%m/%Y') AS 'news.timestamp'

anyway ik had nachtdienst en code gerommel heeft me echt slaperig gemaakt vast vanmiddag laat wel weer fris met code aan het stoeien

PS:
Je geeft veel feedback en ben zeer tevreden over deze forum is php een hobbie van jou of is het meer je werk omgeving?
 
Laatst bewerkt:
Ah ja, ik zie inderdaad dat er wat schoonheidsfoutjes ingeslopen zijn :o

Dit moet allemaal goed zijn :)
index.php
PHP:
<html>
<head>
	<title>INSIGNIFICANT</title>
	<link href="style.css" rel="stylesheet" type="text/css">
</head>
<body>
<div id="align">
<?php
include_once "inc/functions.inc";

connect();

if (isset($_COOKIE["insignificant"])) {
	$username = $_COOKIE["insignificant"];
	$qry = "SELECT access FROM permissions WHERE id = (SELECT permissions_id FROM profile  WHERE charname = '".$username."')";
	
	$rData = mysql_query($qry);
	$aData = mysql_fetch_assoc($rData);
	if ( $aData[ 'access' ] == 'Admin' && 'Member' && 'Guest' ) {
		echo '
	<div id="logo">
		<ul>
			<li><a href="index.php?page=news">NEWS</a></li>
			<li><a href="index.php?page=raids">Raids</a></li>
			<li><a href="http://insignificant.3forum.biz/">FORUM</a></li>
		</ul>
		<div id="logintrue">
			You are logged in as:<br />
			<br/>
			<b>'. $username .'</b>
		</div>
	</div>
	<br />
	<br />';
	}
} else{
	echo '
	<div id="logo">
		<ul>
			<li><a href="index.php?page=news">NEWS</a></li>
			<li><a href="http://insignificant.3forum.biz/recruitment-f7/">JOIN US</a></li>
			<li><a href="http://insignificant.3forum.biz/">FORUM</a></li>
			<li><a href="index.php?page=register">REGISTER</a></li>
		</ul>
		<div id="login">
			<form name="setCookie" method="POST" action="index.php?page=login">
				Username: <input type="text" name="username" size="24"><br>
				Password: <input type="password" name="password" size="20"><br>
				<input type="submit" value="Login" name="submit">
			</form>
		</div>
	</div>
	<br />
	<br />';
}
?>
<div id="contains">
<table width="70%">
	<tr>
		<td>
<?php
if (isset($_GET['page'])){
	$page = $_GET['page'];
	if (!strpos($page,".") && !strpos($page,"/")) {
		$path = "inc/".$page.".php";
		if(file_exists($path)) {
			include($path);
		} else {
			echo "That page does not exists.";
		}
	} else {
		echo "Not allowed!";
	}
} else {
	echo "Welcome to Insignificant!<br><br>
This website is still under heavy construction.";
}
?>
		</td>
	</tr>
</table>
</div>
</div>
</body>
</html>
news.php
PHP:
<?php
// connectie
include_once "functions.inc";

connect();

// check of news_id bestaat en details weergeven.
if(isset($_GET['news_id']) && ctype_digit($_GET['news_id'])) {
	$id = $_GET['news_id'];
	$qry = "SELECT
				news.id,
				news.profile_id,
				news.subject,
				news.message,
				DATE_FORMAT(news.timestamp, '%a/%d/%m/%Y') AS news.timestamp,
				profile.charname
			FROM news, profile
			WHERE news.id = ". $id ."
			AND news.profile_id=profile.id";
	$res = mysql_query($qry) or die (mysql_error());
	// Je haalt maar 1 resultaat op dus een WHILE is onnodig
	$row = mysql_fetch_assoc($res);
		$ncharname = $row['charname'];
		$nsubject = $row['subject'];
		$nmessage = nl2br($row['message']);
		$ntimestamp = $row['timestamp'];
		echo'
		<b><font color="#07B2F6">Original post :</b></font><br>
		<b>'. $nsubject .'</b><hr color="#A48BFE"><br>
		'. $nmessage .'
		<hr color="#A48BFE">
		<ul>
			<li><font color="#07B2F6">posted by <b>'. $ncharname .'</b> on '. $ntimestamp .'</font></li>
		</ul>
		<br><br><br><br>
		<b><font color="#07B2F6">Replies :</b></font>';
		// Commentaar ophalen
		$qry2 = "SELECT
					news_comments.id,
					news_comments.news_id,
					news_comments.profile_id,
					news_comments.message,
					DATE_FORMAT(news_comment.timestamp, '%a/%d/%m/%Y') AS news_comments.timestamp,
					profile.charname
				FROM news_comments, profile
				WHERE news_comments.news_id= ". $id ."
				AND news_comments.profile_id=profile.id";
		$res2 = mysql_query($qry2) or die (mysql_error());
		while ($row2 = mysql_fetch_assoc($res2)){
			$ccharname = $row2['charname'];
			$cmessage = nl2br($row2['message']);
			$ctimestamp = $row2['timestamp'];
			echo '
			<hr color="#A48BFE"><br>
			'. $cmessage .'
			<hr color="#A48BFE">
			<ul>
				<li><font color="#07B2F6">posted by <b>'. $ccharname .'</b> on '. $ctimestamp .'</font></li>
			</ul>
			<br><br>';
		}
// check niet geslaagt dus de news berichten weergeven      
} else {
	$query = "SELECT
					news.id,
					news.profile_id,
					news.subject,
					news.message,
					DATE_FORMAT(news.timestamp, '%a/%d/%m/%Y') AS news.timestamp,
					profile.charname
				FROM news,profile
				WHERE news.profile_id=profile.id";
	$result = mysql_query($query) or die (mysql_error());
	while($row = mysql_fetch_assoc($result)) {
		$nid = $row['id'];
		$charname = $row['charname'];
		$subject = $row['subject'];
		$message = nl2br($row['message']);
		$timestamp = $row['timestamp'];
		echo '
		<b>'. $subject .'</b>
		<hr color="#A48BFE"><br>
		'. $message .'
		<hr color="#A48BFE">
		<ul>
			<li>
				<font color="#07B2F6">posted by <b>'. $charname .'</b> on '. $timestamp .'</font>
				<a href="?page=news&news_id='. $nid .'">View comments</a>
			</li>
		</ul>
		<br><br><br>';
	}
}
?>
In de query had ik de single-quote na %Y niet afgesloten.
De ELSE had je inderdaad zelf al achterhaalt (Vast een UNEXPECTED error ;))

PHP is een uit de hand gelopen hobby ;)
Verder heb ik het hier op Helpmij nodig om zaken te ontwikkelen :)
 
Laatst bewerkt:
Ach schoonheids foutjes kan gebeuren.

de date geeft nog steeds dezelfde error aan sql op line 6.
 
Kan komen door de /, vervang die eens door streepjes
 
Geen effect

DATE_FORMAT(hier de naam van de veldrij in de tabel, 'hoe weergeven') AS plaats hiervan een andere naam opgeven omdat het variable is? dus bijv formatted_date ?
 
Laatst bewerkt:
Hmm dan weet ik het niet meer, wellicht dat een andere gebruiker met een frisse kijk de knup wel weet te vinden. :confused:
 
Hey ik had gelijk het werkt nu Ik denk dat het knel loopt omdat hij 2 dingen wil doen en de DATA_FORMAT + de row data zelf.

wat ik heb gedaan is
PHP:
DATA_FORMAT(news.timestamp, '%a-%d-%m-%Y') AS formatted_date,

en bij de $row timestamp = $row['formatted_date'] dit doet het.

misschien komt het gewoon omdat hij 2 values heeft hoe het in de db staat en de aangegeven format dat sql niet weet wat ie ermee moet doen.
 
Laatst bewerkt:
Btw wat denk je wat het beste manier zou zijn om het volgende te doen?

Ik heb natuurlijk de cookie check daaraan zag je al ik heb te maken met guests members en admin

Wat ik wil bereiken is dat guests alleen kunnen viewen / of geen geregistreerden dus is wel simpel.

Maar members kunnen commentaar geven en hun eigen bericht editten alleen hun eigen dus en verwijderen.

en admin mag alles edited en deleten etc.


moet ik hierbij bijv gaan werken met weer een $_GET value en dan en bijv: mode=

dan if mode is edit dan if admin dan weer een S_GET value edit welke id? echo de informatie om aan te passen
en mode view is + delete knopje voor admin bij elke post

ik loop hier al op stuk hij kan ik zeggen delete post is een link om een query uit te voeren
PHP:
$qry = "DELETE FROM `dbname`.`alle data in tabel` WHERE `tabelnaam`.`id`=$id";
naja query en result lukt me wel maar aangeven dat de echoed text delete post=deze qry uitvoeren :S
 
Laatst bewerkt:
Je moet dan iets hebben om mee te controleren.
Er zal dus een cookie of sessie moeten zijn waarin staat welke gebruiker er online is en welke rechten hij heeft

Op news.php zoiets
PHP:
// Controleren of de ingelogde persoon de eigenaar van de reactie is of dat het een admin betreft
if($_COOKIE['user_id'] == $row['comment_id'] || $_COOKIE['role'] == 'admin') {
  echo '<a href="altercomment.php?cid='. $row['comment_id'] .'">Wijzig je reactie</a>';
}
altercomment.php zal er globaal zo uit zien.
PHP:
if(isset($_GET['cid']) && ctype_digit($_GET['cid'])) {
  // query uitvoeren om te checken of de commentID wel bestaat
  if(id_bestaat) {
    if($_COOKIE['user_id'] == $row['comment_id'] || $_COOKIE['role'] == 'admin') {
      // formulier weergeven met de waardes uit de database
    } else {
      // Foutmelding geven met onjuiste rechten
    }
  } else {
    // Foutmelding geven comment_id bestaat niet
  }
}

Uiteraard moet je dan nog er voor zorgen dat je het formulier verwerkt en dat daarmee de database-waardes worden aangepast.
 
Misschien dus nieuwe php pagina voor maken bleh :(

Misschien dat ik meer uit $_GET kan proberen te halen

PHP:
 <?php
 	$con = mysql_connect("localhost","root","") or die (mysql_error());
	$db = mysql_select_db("test", $con); 
    
if(isset($_GET['news_delete']) && ctype_digit($_GET['news_delete'])){   
 
$nid = $_GET['news_delete'];
        $qry = "DELETE FROM news WHERE id='". $nid ."'"; 
        mysql_query($qry) or die(mysql_error());
        header("Location: test.php");}else{
        
		$qry2 = "SELECT * FROM news";
		$res2 = mysql_query($qry2) or die (mysql_error());
		
			while($row = mysql_fetch_assoc($res2)){	
			$id = $row['id'];
			$subject = $row['subject'];
			$message = $row['message'];
			
        echo'News page <p>
			subject: '. $subject .' <br><br>
			message : '. $message .' <br><br>
			id: '. $id .' <br><br><br> 
			<form action="?news_delete='. $id .'" method="POST">      
		    <input type="submit" value="Delete post" onclick="return confirm(\'Are you sure you want to delete this post?\')">
			</form>
			';
        	}
        }
?>
Dit werkt prima.

gaat nu wel goed komen, alleen tricky update delete knopje bij eigenpost voor members en uiteraard niet vergeten nog een extra check op te gooien want tis niet de bedoeling dat ze de url id zelf even een nummer invoeren en dan de query draait.. dus vergelijken of de post daadwerkelijk van hem is :).

btw er is nog iets wat ik probeer uit te zoeken.

je kan bijv $row = fetch_assoc

$row = $row['id'] etc etc.

is het mogelijk als ik bijv de $row['iets'] echo maar niet alles weergeeft instead gewoon 3 gegevens van de 5 totaal die eronder zitten?
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan