handdator

Visa fullständig version : Webbdesign: kommentarfunktion...


_Robbie_
2008-01-11, 12:36
Någon som har lust att hjälpa mig med en sak till min webbsida? Jag har bara kommentarfunktionen kvar... Jag hittade följande guide:

http://allsyntax.com/tutorials/PHP/24/Building-a-Comments-Script/1.php

och databas koden här:
http://www.allsyntax.com/code/PHP/11/Database-Connection/index.php


Men jag har ingen aning om hur man ska fixa till detta...=/

Någon frivillig som kan hjälpa mig kanske?

tossefar
2008-01-11, 12:48
Hur tänkte du nu? Din första länk leder till en guide för precis det du efterfrågat. Otroligt lättläst och smidig guide också, ta en titt där vet jag... o_O

_Robbie_
2008-01-11, 12:51
Hur tänkte du nu? Din första länk leder till en guide för precis det du efterfrågat. Otroligt lättläst och smidig guide också, ta en titt där vet jag... o_O

Jo men jag fattar inte var den här ska vara nånstans? Just nu har jag bara tagit alla koder och lagt dem efter varandra i en vanlig div. Men det är tydligen fel?


CREATE TABLE `comments` (
`article_id` int(11) NOT NULL default '0',
`id` int(11) NOT NULL auto_increment,
`page` varchar(255) NOT NULL default '',
`username` varchar(255) NOT NULL default 'Guest',
`subject` varchar(255) NOT NULL default '',
`contact` varchar(255) NOT NULL default '',
`comment` text NOT NULL,
`ip` varchar(15) NOT NULL default '0',
`date` varchar(255) NOT NULL default '',
`time` varchar(11) NOT NULL default '',
PRIMARY KEY (`id`)
) TYPE=MyISAM AUTO_INCREMENT=51 ;

tossefar
2008-01-11, 12:52
Lagt dem efter varandra exakt var?

Det där är sql-kommandon för att bygga databasen till kommentarerna. De skriver du i mysql direkt.

_Robbie_
2008-01-11, 13:00
Lagt dem efter varandra exakt var?

Det där är sql-kommandon för att bygga databasen till kommentarerna. De skriver du i mysql direkt.

Hur kommer jag åt mysql?

Jag har ju följande kod för att connecta till databasen. Men ska den koden vara i diven bland allt de andra eller?

<?php

$database[dbserver]="website.com";
$database[dbuser]="user";
$database[dbname]="database_1";
$database[dbpass]="password";
$table ="table1";

$connect = mysql_connect($database['dbserver'], $database['dbuser'], $database['dbpass']);

$select= mysql_select_db($database['dbname']);
?>

tossefar
2008-01-11, 13:04
Censurera ditt lösen om du inte redan gjort det :)

tossefar
2008-01-11, 13:07
Den första delen kan du sätta var som helst i den .php som ska visas. Den har ingen output som visas på skärmen, så det spelar ingen större roll.

Del två (som börjar med create table) ska du skriva i programmet mysql. Inte någonstans i webbkoden alltså.

Olsson
2008-01-11, 13:07
Du måste skicka SQL-satsen till databasen med hjälp av en funktion i PHP.

så här kan det exempelvis se ut för att köra den frågan du posta först som skapar databastabellen "comments"

$bajs = "CREATE TABLE `comments` (
`article_id` int(11) NOT NULL default '0',
`id` int(11) NOT NULL auto_increment,
`page` varchar(255) NOT NULL default '',
`username` varchar(255) NOT NULL default 'Guest',
`subject` varchar(255) NOT NULL default '',
`contact` varchar(255) NOT NULL default '',
`comment` text NOT NULL,
`ip` varchar(15) NOT NULL default '0',
`date` varchar(255) NOT NULL default '',
`time` varchar(11) NOT NULL default '',
PRIMARY KEY (`id`)
) TYPE=MyISAM AUTO_INCREMENT=51";

mysql_db_query($database[dbname], $bajs, $connect);

tossefar
2008-01-11, 13:08
Du måste skicka SQL-satsen till databasen med hjälp av en funktion i PHP.

så här kan det exempelvis se ut för att köra den frågan du posta först som skapar databastabellen "comments"

$bajs = "CREATE TABLE `comments` (
`article_id` int(11) NOT NULL default '0',
`id` int(11) NOT NULL auto_increment,
`page` varchar(255) NOT NULL default '',
`username` varchar(255) NOT NULL default 'Guest',
`subject` varchar(255) NOT NULL default '',
`contact` varchar(255) NOT NULL default '',
`comment` text NOT NULL,
`ip` varchar(15) NOT NULL default '0',
`date` varchar(255) NOT NULL default '',
`time` varchar(11) NOT NULL default '',
PRIMARY KEY (`id`)
) TYPE=MyISAM AUTO_INCREMENT=51";

mysql_db_query($database[dbname], $bajs, $connect);

Känns väl en smula onödigt med tanke på att det bara ska köras en enda gång :)

Olsson
2008-01-11, 13:10
Känns väl en smula onödigt med tanke på att det bara ska köras en enda gång :)

Ahh ser det nu ja.. jag trodde de va något Initieringscript

_Robbie_
2008-01-11, 13:18
Nu har jag lagt in den där koden i MYSQL (har döpt den till comments) och därför har jag följande kod kvar:

Men ingenting syns på sidan...

<?php
$database[dbserver]=" localhost";
$database[dbuser]=" whitestone_se";
$database[dbname]=" whitestone_se";
$database[dbpass]=" ********";
$table ="comments";


$connect = mysql_connect($database['dbserver'], $database['dbuser'], $database['dbpass']);

$select= mysql_select_db($database['dbname']);
?>


<? require_once($_SERVER['DOCUMENT_ROOT'].'/database_connect.php');

//query comments for this page of this article
$inf = "SELECT * FROM `comments` WHERE page = '".stripslashes($_SERVER['REQUEST_URI'])."' ORDER BY time ASC";
$info = mysql_query($inf);
if(!$info) die(mysql_error());

$info_rows = mysql_num_rows($info);
if($info_rows > 0) {
echo '<h5>Comments:</h5>';
echo '<table width="95%">';

while($info2 = mysql_fetch_object($info)) {
echo '<tr>';
echo '<td>"'.htmlspecialchars(stripslashes($info2->subject)).'" by: <a href="'.$info2->contact.'">'.htmlspecialchars(stripslashes($info2->username)).'</a></td> <td><div align="right"> @ '.date('h:i:s a', $info2->time).' on '.$info2->date.'</div></td>';
echo '</tr><tr>';
echo '<td colspan="2"> '.htmlspecialchars(stripslashes(nl2br($info2->comment))).' </td>';
echo '</tr>';
}//end while
echo '</table>';
echo '<hr width="95%" noshade>';
} else echo 'No comments for this page. Feel free to be the first <br>';

if(isset($_POST['submit'])) {
if(!addslashes($_POST['username'])) die('<u>ERROR:</u> you must enter a username to add a comment.');
if(!addslashes($_POST['contact'])) die('<u>ERROR:</u> enter contact method in contact field.');
if(!addslashes($_POST['subject'])) die('<u>ERROR:</u> enter a subject to your comment.');
if(!addslashes($_POST['comment'])) die('<u>ERROR:</u> cannot add comment if you do not enter one!?');
//this is for a valid contact
if(substr($_POST['contact'],0,7) != 'mailto:' && !strstr($_POST['contact'],'//')) {
if(strstr($_POST['contact'],'@'))
$_POST['contact'] = "mailto:".$_POST['contact']."";
else
$_POST['contact'] = "http://".$_POST['contact']."";
} //end valid contact

//try to prevent multiple posts and flooding...
$c = "SELECT * from `comments` WHERE ip = '".$_SERVER['REMOTE_ADDR']."'";
$c2 = mysql_query($c);
while($c3 = mysql_fetch_object($c2)) {
$difference = time() - $c3->time;
if($difference < 300) die('<u>ALERT:</u> '.$c3->username.', You have already commented earlier; if you have a question, try the forums!<BR>');
} //end while

//add comment
$q ="INSERT INTO `comments` (article_id, page, date, time, username, ip, contact, subject, comment) VALUES ('".$_GET['id']."', '".$_POST['page']."', '".$_POST['date']."', '".$_POST['time']."', '".addslashes($_POST['username'])."', '".$_SERVER['REMOTE_ADDR']."', '".addslashes($_POST['contact'])."', '".addslashes($_POST['subject'])."', '".addslashes($_POST['comment'])."')";

$q2 = mysql_query($q);
if(!$q2) die(mysql_error());

//refresh page so they can see new comment
header('Location: http:www.whitestone.se/analyserna.php//' . $_SERVER['HTTP_HOST'] . $_POST['page'] . "#commentsrn");


} else { //display form
?>
<form name="comments" action="<? $_SERVER['PHP_SELF']; ?>" method="post">
<input type="hidden" name="page" value="<? echo($_SERVER['REQUEST_URI']); ?>">
<input type="hidden" name="date" value="<? echo(date("F j, Y.")); ?>">
<input type="hidden" name="time" value="<? echo(time()); ?>">

<table width="90%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td><div align="right">Username: </div></td>
<td><input name="username" type="text" size="30" value=""></td>
</tr>
<tr>
<td><div align="right">Contact: </div></td>
<td><input type="text" name="contact" size="30" value=""> <i>(email or url)</i></td>
</tr>
<td><div align="right">Subject: </div></td>
<td><input type="text" name="subject" size="30" value=""></td>
</tr>
<tr>
<td><div align="right">Comment: </div></td>
<td><textarea name="comment" cols="45" rows="5" wrap="VIRTUAL"></textarea></td>
</tr>
<tr>
<td></td>
<td colspan="2"><input type="reset" value="Reset Fields">
<input type="submit" name="submit" value="Add Comment"></td>
</tr>
</table>
</form>
<?
} // end else
?>

</div>

_Robbie_
2008-01-11, 14:17
Tycker det är lite konstigt att ingenting syns. Kanske är de fel att ha Div? Ingen aning. Någon som ser källan till varför ingenting syns?

Jax
2008-01-11, 14:47
Jag får uppfattningen att du har missuppfattat mysql och php. Jag kanske har fel men skjuter några kontrollfrågor.

Var ligger sidan?

Om lokalt på datorn:
Har du överhuvudtaget en webbserver med mysql och php installerat?

Om på ett webbhotell:
Har hotellet stöd för mysql och php?
Har du skapat en databas?

För mig ser det ut som att du inte har php eftersom du inte ens får ett felmeddelande av all kod. Det är nämligen precis det som händer om du inte har php eftersom html inte tolkar det koden utan ignorerar den helt.

_Robbie_
2008-01-11, 14:50
Jag får uppfattningen att du har missuppfattat mysql och php. Jag kanske har fel men skjuter några kontrollfrågor.

Var ligger sidan?

Om lokalt på datorn:
Har du överhuvudtaget en webbserver med mysql och php installerat?

Om på ett webbhotell:
Har hotellet stöd för mysql och php?
Har du skapat en databas?

För mig ser det ut som att du inte har php eftersom du inte ens får ett felmeddelande av all kod. Det är nämligen precis det som händer om du inte har php eftersom html inte tolkar det koden utan ignorerar den helt.

Sidan ligger på webbhotellet www.one.com
Ja den har stöd för mysql och php. Jag har lagt upp tabellen på databasen (mysql)...


Jag har använt php till mitt formulär på kontaktsidan - den funkar finfint.

Jag tycker det är otroligt skumt att man inte ser något över huvud taget...

Trance
2008-01-11, 14:55
En liten småsak som förmodligen inte är problemet. Har inte jobbat med PHP så kan inte heller felsöka riktigt. Men:

header('Location: http:www.whi...

Skall nog vara:

header('Location: http://www.whi...

_Robbie_
2008-01-11, 14:57
En liten småsak som förmodligen inte är problemet. Har inte jobbat med PHP så kan inte heller felsöka riktigt. Men:

header('Location: http:www.whi...

Skall nog vara:

header('Location: http://www.whi...

Yep, har ändrat det...

_Robbie_
2008-01-11, 14:58
Kanske blir enklare och se om jag laddar upp HELA koden för sidan?





<meta content="text/html; charset=utf-8" http-equiv="content-type"/><title>WHITESTONE - Teknisk analys</title>

<meta content="" name="keywords"/>
<meta content="" name="description"/>
<link media="screen" type="text/css" rel="stylesheet" href="analyserna.css"/><link rel="stylesheet" type="text/css" href="chrome://firebug/content/highlighter.css"/></head>
<script type="text/javascript">
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
</script>
<script type="text/javascript">
var pageTracker = _gat._getTracker("UA-3370678-1");
pageTracker._initData();
pageTracker._trackPageview();
</script>
<body>
<div id="wrapper">
<div id="wrapper2">
<div id="header">
<div id="logo">

</div>
<div id="menu">
<ul>
<li><a href="index.html">Startsida</a></li>
<li><a href="undersida1.html">Analyser</a></li>
<li><a href="taskola.html">TA-skola</a></li>
<li><a href="kontakt.php">Kontakt</a></li>
</ul>
</div>
</div>
<!-- end #header -->
<div id="sidebar">
<a href="undersida1.html">Analyser</a> > Dow Jones </div>


<!-- end #sidebar -->



<div id="page">
<div id="content">
<div class="post">2007-12-27 </div>
</div>

<!-- end #content -->
<div id="sidebar2">

<?php
$database[dbserver]=" localhost";
$database[dbuser]=" whitestone_se";
$database[dbname]=" whitestone_se";
$database[dbpass]=" ******";
$table ="comments";


$connect = mysql_connect($database['dbserver'], $database['dbuser'], $database['dbpass']);

$select= mysql_select_db($database['dbname']);
?>


<? require_once($_SERVER['DOCUMENT_ROOT'].'/database_connect.php');

//query comments for this page of this article
$inf = "SELECT * FROM `comments` WHERE page = '".stripslashes($_SERVER['REQUEST_URI'])."' ORDER BY time ASC";
$info = mysql_query($inf);
if(!$info) die(mysql_error());

$info_rows = mysql_num_rows($info);
if($info_rows > 0) {
echo '<h5>Comments:</h5>';
echo '<table width="95%">';

while($info2 = mysql_fetch_object($info)) {
echo '<tr>';
echo '<td>"'.htmlspecialchars(stripslashes($info2->subject)).'" by: <a href="'.$info2->contact.'">'.htmlspecialchars(stripslashes($info2->username)).'</a></td> <td><div align="right"> @ '.date('h:i:s a', $info2->time).' on '.$info2->date.'</div></td>';
echo '</tr><tr>';
echo '<td colspan="2"> '.htmlspecialchars(stripslashes(nl2br($info2->comment))).' </td>';
echo '</tr>';
}//end while
echo '</table>';
echo '<hr width="95%" noshade>';
} else echo 'No comments for this page. Feel free to be the first <br>';

if(isset($_POST['submit'])) {
if(!addslashes($_POST['username'])) die('<u>ERROR:</u> you must enter a username to add a comment.');
if(!addslashes($_POST['contact'])) die('<u>ERROR:</u> enter contact method in contact field.');
if(!addslashes($_POST['subject'])) die('<u>ERROR:</u> enter a subject to your comment.');
if(!addslashes($_POST['comment'])) die('<u>ERROR:</u> cannot add comment if you do not enter one!?');
//this is for a valid contact
if(substr($_POST['contact'],0,7) != 'mailto:' && !strstr($_POST['contact'],'//')) {
if(strstr($_POST['contact'],'@'))
$_POST['contact'] = "mailto:".$_POST['contact']."";
else
$_POST['contact'] = "http://".$_POST['contact']."";
} //end valid contact

//try to prevent multiple posts and flooding...
$c = "SELECT * from `comments` WHERE ip = '".$_SERVER['REMOTE_ADDR']."'";
$c2 = mysql_query($c);
while($c3 = mysql_fetch_object($c2)) {
$difference = time() - $c3->time;
if($difference < 300) die('<u>ALERT:</u> '.$c3->username.', You have already commented earlier; if you have a question, try the forums!<BR>');
} //end while

//add comment
$q ="INSERT INTO `comments` (article_id, page, date, time, username, ip, contact, subject, comment) VALUES ('".$_GET['id']."', '".$_POST['page']."', '".$_POST['date']."', '".$_POST['time']."', '".addslashes($_POST['username'])."', '".$_SERVER['REMOTE_ADDR']."', '".addslashes($_POST['contact'])."', '".addslashes($_POST['subject'])."', '".addslashes($_POST['comment'])."')";

$q2 = mysql_query($q);
if(!$q2) die(mysql_error());

//refresh page so they can see new comment
header('Location: http://whitestone.se/analyserna.php//' . $_SERVER['HTTP_HOST'] . $_POST['page'] . "#commentsrn");


} else { //display form
?>
<form name="comments" action="<? $_SERVER['PHP_SELF']; ?>" method="post">
<input type="hidden" name="page" value="<? echo($_SERVER['REQUEST_URI']); ?>">
<input type="hidden" name="date" value="<? echo(date("F j, Y.")); ?>">
<input type="hidden" name="time" value="<? echo(time()); ?>">

<table width="90%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td><div align="right">Username: </div></td>
<td><input name="username" type="text" size="30" value=""></td>
</tr>
<tr>
<td><div align="right">Contact: </div></td>
<td><input type="text" name="contact" size="30" value=""> <i>(email or url)</i></td>
</tr>
<td><div align="right">Subject: </div></td>
<td><input type="text" name="subject" size="30" value=""></td>
</tr>
<tr>
<td><div align="right">Comment: </div></td>
<td><textarea name="comment" cols="45" rows="5" wrap="VIRTUAL"></textarea></td>
</tr>
<tr>
<td></td>
<td colspan="2"><input type="reset" value="Reset Fields">
<input type="submit" name="submit" value="Add Comment"></td>
</tr>
</table>
</form>
<?
} // end else
?>
</div>



<!-- end #sidebar -->

<div style="clear: both;"> </div>
<!-- end #widebar -->
</div>
<!-- end #page -->
</div>
<!-- end #wrapper2 -->
<div id="footer">
<p>Copyright © 2007 Whitestone</p>
</div>
</div>
<!-- end #wrapper -->
</body></html>

_Robbie_
2008-01-11, 17:32
Sluta skriva ditt lösenord till hela världen :smash:

Nej, oavsett om sidan kan ansluta till databas eller ej så printas det grafiska ut. Jag har egentligen varken tid eller ork att läsa igenom hela koden, men har du testat utan divar?

Yep, har testat utan divvar...

Per B
2008-01-11, 17:45
<? $_SERVER['PHP_SELF']; ?> - du saknar "echo" (eller <?=$_SER....)

Men action borde bli tom, och då borde den ladda samma sida ändå?!?

Vilken url ligger sidan på?

_Robbie_
2008-01-11, 18:01
<? $_SERVER['PHP_SELF']; ?> - du saknar "echo" (eller <?=$_SER....)

Men action borde bli tom, och då borde den ladda samma sida ändå?!?

Vilken url ligger sidan på?

Här ligger sidan på
http://www.whitestone.se/analyserna.php

Per B
2008-01-11, 18:10
Inget av det som ligger efter det att du börjat med PHP-koden visas ju alls (t ex slutet på div:arna eller body-slutet), vilket tyder på att nåt är fel i PHP-koden. Antagligen är servern konfigurerad att inte visa några fel. Prova lägg till denna rad i början av filen:

<?
error_reporting(6143);
?>

_Robbie_
2008-01-11, 18:12
Inget av det som ligger efter det att du börjat med PHP-koden visas ju alls (t ex slutet på div:arna eller body-slutet), vilket tyder på att nåt är fel i PHP-koden. Antagligen är servern konfigurerad att inte visa några fel. Prova lägg till denna rad i början av filen:

<?
error_reporting(6143);
?>

Ja precis, ingenting visas öht... JO nu visar sig. Har lagt till filen precis i början men ingenting händer...

"Access denied for user 'whitestone.se'@'srv91.b-one.net' (using password: NO)"

Per B
2008-01-11, 18:16
Tyder ju på att du inte får kontakt med databasen. Dubbelkolla att du skrivit in rätt user och password.

Trance
2008-01-11, 18:20
Du har " text" och inte "text". Vet inte om det spelar någon roll.

Per B
2008-01-11, 18:22
Prova byta ut "localhost" mot "srv91.b-one.net" för $database[server]

_Robbie_
2008-01-11, 18:28
Det verkar funka nu. Prova ni?

http://www.whitestone.se/analyserna.php

Jax
2008-01-11, 18:32
Funkar. Antar att du inte vill koda om funktionen, men den var riktigt irriterande.

Dels att felmeddelandet kommer på nästa sida och inte visas speciellt tydligt och dels att mitt egna meddelande inte kom fram förrän jag uppdaterade sidan manuellt.

_Robbie_
2008-01-11, 18:32
Det verkar funka nu. Prova ni?

http://www.whitestone.se/analyserna.php



Men hur justerar man så att det blir radbrytning mellan inläggen? Nu kommer de ju helt på varandra...


Vad händer precis när ni kommenterat? Kommer uppdateras sidan då?

JAX: Hur gör man så att så att felmeddelandet inte ska komma på nästa sida?

Jax
2008-01-11, 18:38
Men hur justerar man så att det blir radbrytning mellan inläggen? Nu kommer de ju helt på varandra...


Vad händer precis när ni kommenterat? Kommer uppdateras sidan då?

JAX: Hur gör man så att så att felmeddelandet inte ska komma på nästa sida?
Var ett tag sedan jag kodade och har det inte i huvudet. Orkar inte friska upp minnet så mycket att jag kan fixa koden, men det smidigaste är att göra det med javascript. Alltså du låter ett script kontrollera inmatningsfälten och sen om det inte är okej så visas en alert-ruta. Är det okej så går den vidare till nästa sida. Finns snyggare sätt, men på min tid gjorde i alla fall jag så (det var inte så många år sedan).

Vill du pilla så tycker jag även att du ska ta bort kravet på kontaktuppgift.
Det borde räcka att ta bort den här raden:

if(!addslashes($_POST['contact'])) die('<u>ERROR:</u> enter contact method in contact field.');

Men antagligen även funktionen efteråt som kontrollerar om det är en korrekt adress som matas in. Som sagt, orkar inte lägga tid på att läsa kod. Sorry!

Jax
2008-01-11, 18:41
Alltså du låter ett script kontrollera inmatningsfälten och sen om det inte är okej så visas en alert-ruta. Är det okej så går den vidare till nästa sida. Finns snyggare sätt, men på min tid gjorde i alla fall jag så (det var inte så många år sedan).
Fel, det gjorde jag inte alls. Jag lät sidan samma sida ladda om igen och den här gången med felmeddelanden i rött vid inmatningsfälten. Går att lösa utan att ladda om också, dock är jag inte säker på vad som är smidigast då. Pratas om att Ajax är det bästa för sånt, men det kan jag inte.

_Robbie_
2008-01-11, 18:43
Var ett tag sedan jag kodade och har det inte i huvudet. Orkar inte friska upp minnet så mycket att jag kan fixa koden, men det smidigaste är att göra det med javascript. Alltså du låter ett script kontrollera inmatningsfälten och sen om det inte är okej så visas en alert-ruta. Är det okej så går den vidare till nästa sida. Finns snyggare sätt, men på min tid gjorde i alla fall jag så (det var inte så många år sedan).

Vill du pilla så tycker jag även att du ska ta bort kravet på kontaktuppgift.
Det borde räcka att ta bort den här raden:

if(!addslashes($_POST['contact'])) die('<u>ERROR:</u> enter contact method in contact field.');

Men antagligen även funktionen efteråt som kontrollerar om det är en korrekt adress som matas in. Som sagt, orkar inte lägga tid på att läsa kod. Sorry!



aha, Finns det något sätt för mig att ta bort inläggen?

Jax
2008-01-11, 18:46
aha, Finns det något sätt för mig att ta bort inläggen?

Smidigaste är att gå in i databasan och fixa det där igenom. Antar att du har phpmyadmin som gränsnitt. Därigenom är det väldigt smidigt.

Per B
2008-01-11, 19:11
_Robbie_,
det känns som du har en del att läsa på om du ska kunna få till den där sidan på ett bra sätt. Men jag ska hjälpa dig med koden för att med javascript kolla att username-fältet inte är tomt, så får du bygga på själv sen.

1. Döp formuläret till "commentform" genom att lägga in följande i form-taggen (<form...): "name='commentform'"
2. Sätt ett id på username-formulärfältet genom att lägga in "id='usernamefield'" i den taggen
3. Lägg till en javascript-funktion som kollar att username inte är tomt, och då submittar formuläret:
<script language="javascript">
function addComment() {
var errors = "";
if ( document.getElementById('usernamefield').value == '' )
error = error + "Please enter your username\n";
//... add more checks here if needed
if ( error == '' )
document.commentform.submit();
else
alert(error);
}
</script>
4. Ändra submit-knappen till:
<input type="button" value="Add Comment" onclick="javascript:addComment();">

_Robbie_
2008-01-11, 19:24
_Robbie_,
det känns som du har en del att läsa på om du ska kunna få till den där sidan på ett bra sätt. Men jag ska hjälpa dig med koden för att med javascript kolla att username-fältet inte är tomt, så får du bygga på själv sen.

1. Döp formuläret till "commentform" genom att lägga in följande i form-taggen (<form...): "name='commentform'"
2. Sätt ett id på username-formulärfältet genom att lägga in "id='usernamefield'" i den taggen
3. Lägg till en javascript-funktion som kollar att username inte är tomt, och då submittar formuläret:
<script language="javascript">
function addComment() {
var errors = "";
if ( document.getElementById('usernamefield').value == '' )
error = error + "Please enter your username\n";
//... add more checks here if needed
if ( error == '' )
document.commentform.submit();
else
alert(error);
}
</script>
4. Ändra submit-knappen till:
<input type="button" value="Add Comment" onclick="javascript:addComment();">



Tack! Det var lite strul blir det rätt nu?

?>
<form "name='commentform'" action="<? $_SERVER['PHP_SELF']; ?>" method="post">
<input type="hidden" name="page" value="<? echo($_SERVER['REQUEST_URI']); ?>">
<input type="hidden" name="date" value="<? echo(date("F j, Y.")); ?>">
<input type="hidden" name="time" value="<? echo(time()); ?>">

<table width="90%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td><div align="right">Username: </div></td>
<td><input name="id='usernamefield'" type="text" size="30" value=""></td>

<script language="javascript">
function addComment() {
var errors = "";
if ( document.getElementById('usernamefield').value == '' )
error = error + "Please enter your username\n";
//... add more checks here if needed
if ( error == '' )
document.commentform.submit();
else
alert(error);
}
</script>

</tr>


<tr>
<td><div align="right">Comment: </div></td>
<td><textarea name="comment" cols="45" rows="5" wrap="VIRTUAL"></textarea></td>
</tr>
<tr>
<td></td>
<td colspan="2"><input type="reset" value="Reset Fields">
<input type="button" value="Add Comment" onclick="javascript:addComment();"></td>
</tr>
</table>
</form>
<?
} // end else
?>

Per B
2008-01-11, 19:26
Jag använde ".." för att skilja koden från min text, så den ska inte vara med:

<form name='commentform'


och <script ...>function .... </script> lägger du FÖRST i filen

_Robbie_
2008-01-11, 19:39
Jag använde ".." för att skilja koden från min text, så den ska inte vara med:

<form name='commentform'


och <script ...>function .... </script> lägger du FÖRST i filen

Jag la <script ...>function .... </script> FÖRST i filen längst upp...

och ändrat i koden.. Men nu verkar inte knappen "add comment" funka =/ det står "fel på sidan i vänstra hörnet hos mig"

?>
<form name='commentform' action="<? $_SERVER['PHP_SELF']; ?>" method="post">
<input type="hidden" name="page" value="<? echo($_SERVER['REQUEST_URI']); ?>">
<input type="hidden" name="date" value="<? echo(date("F j, Y.")); ?>">
<input type="hidden" name="time" value="<? echo(time()); ?>">

<table width="90%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td><div align="right">Username: </div></td>
<td><input name=id='usernamefield' type="text" size="30" value=""></td>


</tr>


<tr>
<td><div align="right">Comment: </div></td>
<td><textarea name="comment" cols="45" rows="5" wrap="VIRTUAL"></textarea></td>
</tr>
<tr>
<td></td>
<td colspan="2"><input type="reset" value="Reset Fields">
<input type="button" value="Add Comment" onclick="javascript:addComment();"></td>
</tr>
</table>
</form>
<?
} // end else
?>

Per B
2008-01-11, 19:43
Det ska vara:

<input name="username" id="usernamefield" type="text" size="30" value="">

INTE

<input name=id="usernamefield" type="text" size="30" value="">

_Robbie_
2008-01-11, 19:52
Det ska vara:

<input name="username" id="usernamefield" type="text" size="30" value="">

INTE

<input name=id="usernamefield" type="text" size="30" value="">

Funkar fortfarande inte... Kanske är det något innan de som stör?

<? require_once($_SERVER['DOCUMENT_ROOT'].'/database_connect.php');

//query comments for this page of this article
$inf = "SELECT * FROM `comments` WHERE page = '".stripslashes($_SERVER['REQUEST_URI'])."' ORDER BY time ASC";
$info = mysql_query($inf);
if(!$info) die(mysql_error());

$info_rows = mysql_num_rows($info);
if($info_rows > 0) {
echo '<h5>Comments:</h5>';
echo '<table width="95%">';

while($info2 = mysql_fetch_object($info)) {
echo '<tr>';
echo '<td><b>'.htmlspecialchars(stripslashes($info2->username)).'</a></td> <td><div align="right"> @ '.date('h:i:s a', $info2->time).' on '.$info2->date.'</div></td>';
echo '</tr><tr>';
echo '<td colspan="2"> '.htmlspecialchars(stripslashes(nl2br($info2->comment))).' </td>';
echo '</tr>';
}//end while
echo '</table>';
echo '<hr width="95%" noshade>';
} else echo 'Inga kommentarer hittils<br>';

if(isset($_POST['submit'])) {
if(!addslashes($_POST['username'])) die('<u>ERROR:</u> you must enter a username to add a comment.');
if(!addslashes($_POST['comment'])) die('<u>ERROR:</u> cannot add comment if you do not enter one!?');



//add comment
$q ="INSERT INTO `comments` (article_id, page, date, time, username, ip, contact, subject, comment) VALUES ('".$_GET['id']."', '".$_POST['page']."', '".$_POST['date']."', '".$_POST['time']."', '".addslashes($_POST['username'])."', '".$_SERVER['REMOTE_ADDR']."', '".addslashes($_POST['contact'])."', '".addslashes($_POST['subject'])."', '".addslashes($_POST['comment'])."')";

$q2 = mysql_query($q);
if(!$q2) die(mysql_error());

//refresh page so they can see new comment
header('http://www.whitestone.se/analyserna.php//' . $_SERVER['HTTP_HOST'] . $_POST['page'] . "#commentsrn");


} else {

//display form
?>
<form name='commentform' action="<? $_SERVER['PHP_SELF']; ?>" method="post">
<input type="hidden" name="page" value="<? echo($_SERVER['REQUEST_URI']); ?>">
<input type="hidden" name="date" value="<? echo(date("F j, Y.")); ?>">
<input type="hidden" name="time" value="<? echo(time()); ?>">

<table width="90%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td><div align="right">Username: </div></td>
<td><input name="username" id="usernamefield" type="text" size="30" value=""></td>


</tr>


<tr>
<td><div align="right">Comment: </div></td>
<td><textarea name="comment" cols="45" rows="5" wrap="VIRTUAL"></textarea></td>
</tr>
<tr>
<td></td>
<td colspan="2"><input type="reset" value="Reset Fields">
<input type="button" value="Add Comment" onclick="javascript:addComment();"></td>
</tr>
</table>
</form>
<?
} // end else
?>

Per B
2008-01-11, 19:54
Det är i javascript-funktionen: råkade bland "errors" och "error"... ändra så att det står på ett sätt på samtliga ställen.

Ändrat till:
var error;

_Robbie_
2008-01-11, 19:59
Det är i javascript-funktionen: råkade bland "errors" och "error"... ändra så att det står på ett sätt på samtliga ställen.

Ändrat till:
var error;

Okej nu när man inte skrivit nåt i username så får man pop up "please enter" så den funkar... Men när man trycker på add comment så försvinner det man skrivit som att sidan uppdateras men det kommer inte upp nån ny kommentar...

Per B
2008-01-11, 20:05
Det är för att "submit" inte är definierat när du kollar den i denna rad:

if(isset($_POST['submit']))

ändra det till:

if(isset($_POST['username']))

Per B
2008-01-11, 20:31
header('Location: http://whitestone.se/analyserna.php//' . $_SERVER['HTTP_HOST'] . $_POST['page'] . "#commentsrn");

Ser lite skumt ut... du vill väl bara ladda om sidan analyserna.php så att kommentaren syns?

Ändra till detta:

header('Location: http://whitestone.se/analyserna.php');

_Robbie_
2008-01-11, 20:49
header('Location: http://whitestone.se/analyserna.php//' . $_SERVER['HTTP_HOST'] . $_POST['page'] . "#commentsrn");

Ser lite skumt ut... du vill väl bara ladda om sidan analyserna.php så att kommentaren syns?

Ändra till detta:

header('Location: http://whitestone.se/analyserna.php');

Har ändrat nu... Men den nya kommentaren syns inte =/

_Robbie_
2008-01-13, 15:59
Har hittat ett lite fel... När man kommenterar (trycker på add comments)så försvinner hela kommentar-funktionen...Jag vill att sidan laddas om och visar det nya inlägget direkt (när man trycker på add comments)...Hur gör man det?

http://www.whitestone.se/analyserna.php


<html>
<head>
<meta content="text/html; charset=utf-8" http-equiv="content-type"/><title>WHITESTONE - Teknisk analys</title>

<meta content="" name="keywords"/>
<meta content="" name="description"/>
<link media="screen" type="text/css" rel="stylesheet" href="analyserna.css"/><link rel="stylesheet" type="text/css" href="chrome://firebug/content/highlighter.css"/></head>
<script type="text/javascript">
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
</script>
<script type="text/javascript">
var pageTracker = _gat._getTracker("UA-3370678-1");
pageTracker._initData();
pageTracker._trackPageview();
</script>
<script language="javascript">
function addComment() {
var error = "";
if ( document.getElementById('usernamefield').value == '' )
error = error + "Please enter your username\n";
//... add more checks here if needed
if ( error == '' )
document.commentform.submit();
else
alert(error);
}
</script>
</head>
<body>
<div id="wrapper">
<div id="wrapper2">
<div id="header">
<div id="logo">

</div>
<div id="menu">
<ul>
<li><a href="index.html">Startsida</a></li>
<li><a href="undersida1.html">Analyser</a></li>
<li><a href="taskola.html">TA-skola</a></li>
<li><a href="kontakt.php">Kontakt</a></li>
</ul>
</div>
</div>
<!-- end #header -->
<div id="sidebar">
<a href="undersida1.html">Analyser</a> > <a href="analyserna.php">Dow jones</a> </div>


<!-- end #sidebar -->



<div id="page">
<div id="content">
<div class="post">2007-12-27</div>
</div>

<!-- end #content -->
<div id="sidebar"><img src="images/image1xl.jpg" width="290" height="370"> </div>

<div id="sidebar2">

<? require_once($_SERVER['DOCUMENT_ROOT'].'/database_connect.php');



if(isset($_POST['username'])) {
if(!addslashes($_POST['username'])) die('<u>ERROR:</u> you must enter a username to add a comment.');
if(!addslashes($_POST['comment'])) die('<u>ERROR:</u> cannot add comment if you do not enter one!?');



//add comment
$q ="INSERT INTO `comments` (article_id, page, date, time, username, ip, contact, subject, comment) VALUES ('".$_GET['id']."', '".$_POST['page']."', '".$_POST['date']."', '".$_POST['time']."', '".addslashes($_POST['username'])."', '".$_SERVER['REMOTE_ADDR']."', '".addslashes($_POST['contact'])."', '".addslashes($_POST['subject'])."', '".addslashes($_POST['comment'])."')";

$q2 = mysql_query($q);
if(!$q2) die(mysql_error());

//refresh page so they can see new comment
header('Location: http://whitestone.se/analyserna.php');


} else {

//display form
?>
<form name='commentform' action="<? $_SERVER['PHP_SELF']; ?>" method="post">
<input type="hidden" name="page" value="<? echo($_SERVER['REQUEST_URI']); ?>">
<input type="hidden" name="date" value="<? echo(date("F j, Y.")); ?>">
<input type="hidden" name="time" value="<? echo(time()); ?>">

<table width="90%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td><div align="right">Username: </div></td>
<td><input name="username" id="usernamefield" type="text" size="30" value=""></td>


</tr>


<tr>
<td><div align="right">Comment: </div></td>
<td><textarea name="comment" cols="45" rows="5" wrap="VIRTUAL"></textarea></td>
</tr>
<tr>
<td></td>
<td colspan="2"><input type="reset" value="Reset Fields">
<input type="button" value="Add Comment" onClick="javascript:addComment();"></td>
</tr>
</table>
</form>


<?
//query comments for this page of this article
$inf = "SELECT * FROM `comments` WHERE page = '".stripslashes($_SERVER['REQUEST_URI'])."' ORDER BY time ASC";
$info = mysql_query($inf);
if(!$info) die(mysql_error());

$info_rows = mysql_num_rows($info);
if($info_rows > 0) {
echo '<h5>Comments:</h5>';
echo '<table width="95%">';

while($info2 = mysql_fetch_object($info)) {
echo '<tr>';
echo '<td><b>'.htmlspecialchars(stripslashes($info2->username)).'</a></td> <td><div align="right"> @ '.date('h:i:s a', $info2->time).' on '.$info2->date.'</div></td>';
echo '</tr><tr>';
echo '<td colspan="2"> '.htmlspecialchars(stripslashes(nl2br($info2->comment))).' </td>';
echo '</tr>';
}//end while
echo '</table>';
echo '<hr width="95%" noshade>';
} else echo 'Inga kommentarer hittils<br>';
?>

<?
} // end else
?>
</div>



<!-- end #sidebar -->

<div style="clear: both;"> </div>
<!-- end #widebar -->
</div>
<!-- end #page -->
</div>
<!-- end #wrapper2 -->
<div id="footer">
<p>Copyright © 2007 Whitestone</p>
</div>
</div>
<!-- end #wrapper -->
</body>
</html>