Gå til innhold

Hvorfor fungerer ikke gjesteboka mi?


Anbefalte innlegg

Prøver å få til en gjestebok på nettsida mi med bruk av SQL (ja, er en del av ei skoleoppgave). Problemet ser ut til å være dato-greiene med SQL-servern. Får lagt inn ting i basen, men det kommer med samme dato (eller, 00-00-00 00:00:00 står det riktignok). PHP-koden gir dato så det er rett liksom.

 

gjest.php

<h1>Gjestebok!</h1><br>
<h2>Legg igjen ein kommentar då vell!</h2><br><br>
<form method="post" action="?gjest" name="gjest">
Namn <input maxlength="30" size="15" name="namn"><br><br>
Kommentar (1000 teikn): <textarea cols="50" rows="3" name="kommentar">	</textarea>
<br> <br>
 <input name="store" value="Lagre" type="submit"></form>

<?php

include 'db.php';

$kommentar = $_POST['kommentar'];
$namn = $_POST['namn'];
$store = $_POST['store'];

if ($store) 
store($namn,$kommentar);




function store($namn,$kommentar)
{ date_default_timezone_set("Europe/Oslo");			// to avoid warning tha timezone is  ot set  
 $dato = date("Y-M-D H:i:s");			  //  retrieve date from the server		
 $resultat = mysql_query("INSERT INTO gjestdb VALUES	  
 ('$dato', '$namn', '$kommentar')");					 // sender en sql streng til mysql serveren med verdiene som skal inn
if (!$resultat)										// resultat f�r verdien false hvis sql setningen ikke var vellykket
			echo "<br><b>Ikke godkjent!</b>";
else			
	{ include 'gjest.php';		including the last one, stored now
	}  
$store = false;	
}

function retrieve()	
{	 $query = "SELECT * FROM gjestdb ORDER BY dato DESC";
$result = mysql_query($query);
$number = mysql_numrows($result);

$runner = 0;
while ($runner < $number)
{	$dato = mysql_result($result, $runner,"dato");
	$namn = mysql_result($result, $runner,"namn");
	$kommentar = mysql_result($result, $runner,"kommentar");
	echo "<b>$dato  $namn </b><br> $kommentar <br>";
	$runner++; // $runner = $runner + 1;
}
}
?>

 

 

db.php

<?PHP 

   $result = mysql_connect("server", "username", "password");
  if ($result == FALSE)
	echo "Kobla til SQL-basen";
  $result = mysql_select_db("joachv09");
	if (!$result)
	echo "Valgt SQL-base er ikkje riktig";
?>

Endret av viiite
Lenke til kommentar
Videoannonse
Annonse
Gjest Slettet-rXRozPkg

Kan du si meg hvordan tabellen (gjestdb) er bygd opp?

 

F.eks. koble til mysql serveren hvis du har tilgang til dette (direkte på kommandolinje eller phpMyAdmin) og kjøre "EXPLAIN gjestdb;", og poste resultatet her.

 

Det jeg vil vite er hvilke datatyper de forskjellige kolonnene er definert som, og hva de heter.

Lenke til kommentar
Gjest Slettet-rXRozPkg

$dato = date("Y-M-D H:i:s");

Vil gi f.eks: 2009-Oct-Wed 10:41:12

Parameterene du gir til date er feil.

 

Illegal DATETIME, DATE, or TIMESTAMP values are converted to the “zero” value of the appropriate type ('0000-00-00 00:00:00' or '0000-00-00').

Ref: http://dev.mysql.com/doc/refman/5.1/en/datetime.html

 

Bytt til:

$dato = date("Y-m-d H:i:s");

 

Les om parameterene her:

http://no.php.net/manual/en/function.date.php

 

En annen ting er at det å bruke et datofelt som primary key ikke er spesielt lurt, da ting vil dø/krasje/ikke fungere skikkelig (alt ettersom hvordan du behandler feil) den gangen to brukere legger inn en beskjed i samme sekund.

Nå blir sikkert ikke dette noe problem for deg i denne skoleoppgaven, men du bør tenke på det til neste gang :o)

Endret av Slettet-rXRozPkg
Lenke til kommentar

Nå får jeg beskjed om at linje 52 er feil.. altså "?>"

 

melding: Parse error: syntax error, unexpected $end in

 

 

Fra linje 38-52

function retrieve()
{	 $query = "SELECT * FROM gjestdb ORDER BY dato DESC";
$result = mysql_query($query);
$number = mysql_numrows($result);

$runner = 0;
while ($runner < $number)
{	$dato = mysql_result($result, $runner,"dato");
	$namn = mysql_result($result, $runner,"namn");
	$kommentar = mysql_result($result, $runner,"kommentar");
	echo "<b>$dato  $namn </b><br> $kommentar <br>";
	$runner++; // $runner = $runner + 1;
}
}
?>

Endret av viiite
Lenke til kommentar

Trur ikke feilen din er på de linjene, du har sannsynligvis glemt å avslutte en tidligere funksjon med }. PHP parseren forventet ikke å finne slutten på skriptet da noe ikke er avsluttet enda.

 

post gjerne hele koden i en codebox dersom du ikke finner ut av det (eller på pastie.org)

Lenke til kommentar

Veit, prøvde det men da fungerte ingenting.. Har det på ei anna side. Prøvde en gang, så gadd ikke mer :p Skal nok få det til. Visninga blir ikke helt slik den skal være etter at folk har trykket på "lagre", så kan like godt redirekte de tilbake til utgangspunktet før de har skrevet noe.

 

Men skulle gjerne hatt en div rundt det folk har skrevet. prøvde å lage en div rundt retrieve()-funksjonen og det men fungerte ikke. Vil gjerne ha en annen farge og border på det liksom. Skal prøve meg mer fram der også - prøvde bare en gang der også ;)

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...