Gå til innhold

Rediger-funksjon til gjestebok-script


Anbefalte innlegg

Jeg har tenkt å lage en rediger-funksjon til gjesteboka mi, slik at jeg kan redigere bort evt. stygge ord, eller slibrige bemerkningner uten å måtte slette hele innlegget. Dessuten vil jeg ha muligheten til å kommentere innleggene i gjesteboka mi. All infoen fra gjestegoka er lagret i en database. Det jeg lurer på er hvordan jeg skal gå frem for å få til dette.

Lenke til kommentar
Videoannonse
Annonse

Driver og roter på med det samme... Har fått det til å funke sånn noenlunde, men er endel jeg må fikse på for å få det perfekt. Kan i hvert fall vise spørringen jeg bruker for å lagre endringene:

 

$query = "UPDATE $sqlTable SET navn = '$name',epost = '$email',kommentar = '$comment' WHERE id = '$id' LIMIT 1";

Lenke til kommentar

Går det ikke an å bare gjøre det slik, eller vet den ikke hva den skal oppdatere da?

 

$id = $_GET['id'];

if (mysql_query("Update $mySQLtable (tittel,navn,nyhet,dato) VALUES ('$tittel','$navn','$nyhet','$dato WHERE id = '$id'')"))

Endret av Tha_Zaynt
Lenke til kommentar

Personlig kaller jeg opp infoen fra db til ett form, deretter forandrer jeg det som skal forandres og oppdatere databasen vh en lignende query som loomy har.

 

Bruker samme form som ved en ny entry, bare forandrer verdien på submit knappen slik at den oppdatere isteden for lage ny entry i datbasen

Lenke til kommentar
Men hvordan gjør du det når du henter opp den infoen du skal endre fra databsen? Setter du infoen inn som value i et form(...)

Yup :yes:

 

	$id = $_GET['id'];
mysql_connect($sqlHost, $sqlUser, $sqlPass) or die("Could not connect to database: " . mysql_error());
mysql_select_db($sqlDB);
$query = mysql_query("SELECT * FROM $sqlTable WHERE id = $id");
$row = mysql_fetch_object($query);
echo '
<form method="post" action="?action=save_changes&id=' . $id . '">
<p>Name:<br /><input type="text" name="name" maxlength="30" size="30" value="' . $row->navn . '" /></p>
<p>E-mail (optional):<br /><input type="text" name="email" maxlength="30" size="30" value="' . $row->epost . '" /></p>
<p>Your comment:<br /><textarea name="comment" cols="60" rows="8">' . $row->kommentar . '</textarea></p>
<input type="submit" value="Save changes" />
</form>';
mysql_close();

Lenke til kommentar

Tror du kan gjøre det slik:

 

  
<?php 
mysql_connect($sqlHost, $sqlUser, $sqlPass) or die("Could not connect to database: " . mysql_error());
$id = $_GET['id'];
$name = $_POST['navn'];
$tittel = $_POST['tittel'];
// osv for alle variablene dine
tittel,navn,nyhet,dato

if ($_GET['Lagre'] == 'Update'){ //sjekker om lagre er satt til Update vil du oppdatere 
 if(!empty($tittel) && !empty($navn) ){ // sjekk at alle variablene er der.++ resten av variable 
$query = "UPDATE $sqlTable SET navn = '$name',epost = '$email',kommentar = '$comment' WHERE id = '$id' LIMIT 1"; 
 $result= mysql_query($query) or die ("Could not execute UPDATE query : $query." . mysql_error());; 
 }else {
  echo 'Du mangler en variabel';
 }else{
// Her kan du da sette in en sql insert statement for nye poster.
}

if (!empty($id)){  // dersom id er satt vil du hente inn verdiene 

$query = mysql_query("SELECT * FROM $dinTabell WHERE id = $id");
$row = mysql_fetch_object($query);
$LagreVal= 'Update';  // Dersom id er satt vil du sette submit value to update
}else{
$lagreVal = 'Save';
}

echo '
<form method="post" action="?action=save_changes&id=' . $id . '">
<p>Name:<br /><input type="text" name="name" maxlength="30" size="30" value="' . $row->navn . '" /></p>
<p>E-mail (optional):<br /><input type="text" name="email" maxlength="30" size="30" value="' . $row->epost . '" /></p>
<p>Your comment:<br /><textarea name="comment" cols="60" rows="8">' . $row->kommentar . '</textarea></p>
<input type="submit" name="Lagre" value="$lagreVal" />
</form>';


?> 

EDIT: Forandret litt på rekkefølgen slik at du unngår en mysql error dersom GET['id'] er tom

 

denne er ikke helt feil sikker da, dersom en bruker setter id i url og deretter fyller inn alle verdiene vil du nok f[ en feilmelding

Kanskje litt krøkket, men tror det skal virke...

Endret av joffar
Lenke til kommentar

får bare feilmeldingen;

Parse error: parse error, unexpected $end in c:\appserv\www\news\rediger.php on line 41

 

hele tiden. :hmm:

 


<link href="style.css" rel="stylesheet" type="text/css">
<?php session_start();?>
<?php 
include ("config.php");
if ($_SESSION['auth'])
{
mysql_connect($mySQLhost, $mySQLuser, $mySQLpass) or die("Could not connect to database: " . mysql_error());

$id = $_GET['id'];
$navn = $_POST['navn'];
$tittel = $_POST['tittel'];
$nyhet = $_POST['nyhet'];
$dato = $_POST['dato'];



if ($_GET['Lagre'] == 'Update'){ //sjekker om lagre er satt til Update vil du oppdatere
if(!empty($tittel) && !empty($navn) ){ // sjekk at alle variablene er der.++ resten av variable
$query = "UPDATE $mySQLtable SET navn = '$navn',tittel = '$tittel',nyhet = '$nyhet' WHERE id = '$id' LIMIT 1";
$result= mysql_query($query) or die ("Could not execute UPDATE query : $query." . mysql_error());;
}else {
 echo 'Du mangler en variabel';
}
if (!empty($id)){  // dersom id er satt vil du hente inn verdiene

$query = mysql_query("SELECT * FROM $mySQLtable WHERE id = $id");
$row = mysql_fetch_object($query);
$LagreVal= 'Update';  // Dersom id er satt vil du sette submit value to update
}else{
$lagreVal = 'Save';
}

echo '
<form method="post" action="?action=save_changes&id=' . $id . '">
<p>Navn<br /><input type="text" name="navn" maxlength="30" size="30" value="' . $row->navn . '" /></p>
<p>Overskrift<br /><input type="text" name="tittel" maxlength="30" size="30" value="' . $row->tittel . '" /></p>
<p>Nyhet<br /><textarea name="nyhet" cols="47" rows="10">' . $row->nyhet . '</textarea></p>
<input type="submit" name="Lagre" value="$lagreVal" />
</form>';

?> 

Lenke til kommentar

Ok, det var en klamme som manglet. Du hadde noe ekstra der også.. her er koden litt renere..

 

Du får teste det ut og se om det virker slik du vil ha det.

 

<link href="style.css" rel="stylesheet" type="text/css">
<?php 
session_start();
include ("config.php");
if ($_SESSION['auth'])
{
mysql_connect($mySQLhost, $mySQLuser, $mySQLpass) or die("Could not connect to database: " . mysql_error());

$id = $_GET['id'];
$navn = $_POST['navn'];
$tittel = $_POST['tittel'];
$nyhet = $_POST['nyhet'];
$dato = $_POST['dato'];



if ($_GET['Lagre'] == 'Update'){ //sjekker om lagre er satt til Update vil du oppdatere
if(!empty($navn) && !empty($tittel) && !empty($nyhet) && !empty($dato) ){ // sjekk at alle variablene er der.++ resten av variable
 $query = "UPDATE $mySQLtable SET navn = '$navn',tittel = '$tittel',nyhet = '$nyhet' WHERE id = '$id' LIMIT 1";
 $result= mysql_query($query) or die ("Could not execute UPDATE query : $query." . mysql_error());;
}else {
 	echo 'Du mangler en variabel';
}
} // End if GET['lagre']
if (!empty($id)){  // dersom id er satt vil du hente inn verdiene
$query = mysql_query("SELECT * FROM $mySQLtable WHERE id = $id");
$row = mysql_fetch_object($query);
$LagreVal= 'Update';  // Dersom id er satt vil du sette submit value to update
}else{
$lagreVal = 'Save';
}// end if myql for update of post

echo '
<form method="post" action="?action=save_changes&id=' . $id . '">
<p>Navn<br /><input type="text" name="navn" maxlength="30" size="30" value="' . $row->navn . '" /></p>
<p>Overskrift<br /><input type="text" name="tittel" maxlength="30" size="30" value="' . $row->tittel . '" /></p>
<p>Nyhet<br /><textarea name="nyhet" cols="47" rows="10">' . $row->nyhet . '</textarea></p>
<input type="submit" name="Lagre" value="$lagreVal" />
</form>';

?>

Endret av joffar
Lenke til kommentar

Ok greide å glemme enda en klamme, du manglet en klamme ved session auth,..

 

<link href="style.css" rel="stylesheet" type="text/css">
<?php 
session_start();
include ("config.php");
if ($_SESSION['auth'])
{
mysql_connect($mySQLhost, $mySQLuser, $mySQLpass) or die("Could not connect to database: " . mysql_error());
}
$id = $_GET['id'];
$navn = $_POST['navn'];
$tittel = $_POST['tittel'];
$nyhet = $_POST['nyhet'];
$dato = $_POST['dato'];



if ($_GET['Lagre'] == 'Update'){ //sjekker om lagre er satt til Update vil du oppdatere
if(!empty($navn) && !empty($tittel) && !empty($nyhet) && !empty($dato) ){ // sjekk at alle variablene er der.++ resten av variable
$query = "UPDATE $mySQLtable SET navn = '$navn',tittel = '$tittel',nyhet = '$nyhet' WHERE id = '$id' LIMIT 1";
$result= mysql_query($query) or die ("Could not execute UPDATE query : $query." . mysql_error());;
}else {
 echo 'Du mangler en variabel';
}
} // End if GET['lagre']
if (!empty($id)){  // dersom id er satt vil du hente inn verdiene
$query = mysql_query("SELECT * FROM $mySQLtable WHERE id = $id");
$row = mysql_fetch_object($query);
$LagreVal= 'Update';  // Dersom id er satt vil du sette submit value to update
}else{
$lagreVal = 'Save';
}// end if myql for update of post

echo '
<form method="post" action="?action=save_changes&id=' . $id . '">
<p>Navn<br /><input type="text" name="navn" maxlength="30" size="30" value="' . $row->navn . '" /></p>
<p>Overskrift<br /><input type="text" name="tittel" maxlength="30" size="30" value="' . $row->tittel . '" /></p>
<p>Nyhet<br /><textarea name="nyhet" cols="47" rows="10">' . $row->nyhet . '</textarea></p>
<input type="submit" name="Lagre" value="$lagreVal" />
</form>';

?>

 

FYI,.. Når jeg får feilmelding unexpecte $end, er det manglende klammer som har v'rt problemet .

Lenke til kommentar
Kommer et steg videre, men sier den plutseli at Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in c:\appserv\www\news\rediger.php on line 27

Hmm tror det som regel betyr at noe er galt med query stringen.

 

blir lettere dersom du legger inn koden her...

fra koden i den forrige posten foresl[r jeg at du legger til:

 

$result= mysql_query($query) or die ("Could not execute UPDATE query : $query." . mysql_error()); // [B]<-  Fjernet en; her[/b]
}else {
echo 'Du mangler en variabel';
}
} // End if GET['lagre']
if (!empty($id)){  // dersom id er satt vil du hente inn verdiene
$query = "SELECT * FROM $mySQLtable WHERE id = $id"; 
$result= mysql_query($query) or die ("Could not execute SELECT query : $query." . mysql_error()); //[B] forandret litt mere p[ queryen her.[/B]
$row = mysql_fetch_object($query);

 

Sjekk over koden din for ekstra ting som kan gj;re at queryen ikke g[r gjennom.. og post den her...

Lenke til kommentar

atter en error:

Could not execute SELECT query : SELECT * FROM nyhet WHERE id = 012.No Database Selected

 

<link href="style.css" rel="stylesheet" type="text/css">
<?php
session_start();
include ("config.php");
if ($_SESSION['auth'])
{
mysql_connect($mySQLhost, $mySQLuser, $mySQLpass) or die("Could not connect to database: " . mysql_error());
}
$id = $_GET['id'];
$navn = $_POST['navn'];
$tittel = $_POST['tittel'];
$nyhet = $_POST['nyhet'];
$dato = $_POST['dato'];

if ($_GET['Lagre'] == 'Update'){ //sjekker om lagre er satt til Update vil du oppdatere
if(!empty($navn) && !empty($tittel) && !empty($nyhet) && !empty($dato) ){ // sjekk at alle variablene er der.++ resten av variable
$query = "UPDATE $mySQLtable SET navn = '$navn',tittel = '$tittel',nyhet = '$nyhet' WHERE id = '$id' LIMIT 1";
$result= mysql_query($query) or die ("Could not execute UPDATE query : $query." . mysql_error());
}else {
echo 'Du mangler en variabel';
}

} // End if GET['lagre']
if (!empty($id)){  // dersom id er satt vil du hente inn verdiene
$query = "SELECT * FROM $mySQLtable WHERE id = $id";
$result= mysql_query($query) or die ("Could not execute SELECT query : $query." . mysql_error()); 
$row = mysql_fetch_object($query);
$LagreVal= 'Update';  // Dersom id er satt vil du sette submit value to update
}else{
$lagreVal = 'Save';
}// end if myql for update of post

echo '
<form method="post" action="?action=save_changes&id=' . $id . '">
<p>Navn<br /><input type="text" name="navn" maxlength="30" size="30" value="' . $row->navn . '" /></p>
<p>Overskrift<br /><input type="text" name="tittel" maxlength="30" size="30" value="' . $row->tittel . '" /></p>
<p>Nyhet<br /><textarea name="nyhet" cols="47" rows="10">' . $row->nyhet . '</textarea></p>
<input type="submit" name="Lagre" value="$lagreVal" />
</form>';
?>

Lenke til kommentar

{
mysql_connect($mySQLhost, $mySQLuser, $mySQLpass) or die("Could not connect to database: " . mysql_error());
}

 

må bli til

 

{
$dbc = mysql_connect($mySQLhost, $mySQLuser, $mySQLpass);
mysql_select_db(DIN DATABASE,$dbc); 
}

Endret av fjartan
Lenke til kommentar

nærmer seg en løsning nå, bare en liten feil igjen sikkert bare noe jeg har oversett.

 

Warning: mysql_query(): Access denied for user: 'ODBC@localhost' (Using password: NO) in c:\appserv\www\news\rediger.php on line 28

 

Warning: mysql_query(): A link to the server could not be established in c:\appserv\www\news\rediger.php on line 28

Could not execute SELECT query : SELECT * FROM nyhet WHERE id = 011.Access denied for user: 'ODBC@localhost' (Using password: NO)

 

<link href="style.css" rel="stylesheet" type="text/css">
<?php
session_start();
include ("config.php");
if ($_SESSION['auth'])
{
$dbc = mysql_connect($mySQLhost, $mySQLuser, $mySQLpass);
mysql_select_db($mySQLdb, $dbc); 
}

$id = $_GET['id'];
$navn = $_POST['navn'];
$tittel = $_POST['tittel'];
$nyhet = $_POST['nyhet'];
$dato = $_POST['dato'];

if ($_GET['Lagre'] == 'Update'){ //sjekker om lagre er satt til Update vil du oppdatere
if(!empty($navn) && !empty($tittel) && !empty($nyhet) && !empty($dato) ){ // sjekk at alle variablene er der.++ resten av variable
$query = "UPDATE $mySQLtable SET navn = '$navn',tittel = '$tittel',nyhet = '$nyhet' WHERE id = '$id' LIMIT 1";
$result= mysql_query($query) or die ("Could not execute UPDATE query : $query." . mysql_error());
}else {
echo 'Du mangler en variabel';
}

} // End if GET['lagre']
if (!empty($id)){  // dersom id er satt vil du hente inn verdiene
$query = "SELECT * FROM $mySQLtable WHERE id = $id"; 
$result= mysql_query($query) or die ("Could not execute SELECT query : $query." . mysql_error()); 
$row = mysql_fetch_object($query);
$LagreVal= 'Update';  // Dersom id er satt vil du sette submit value to update
}else{
$lagreVal = 'Save';
}// end if myql for update of post

echo '
<form method="post" action="?action=save_changes&id=' . $id . '">
<p>Navn<br /><input type="text" name="navn" maxlength="30" size="30" value="' . $row->navn . '" /></p>
<p>Overskrift<br /><input type="text" name="tittel" maxlength="30" size="30" value="' . $row->tittel . '" /></p>
<p>Nyhet<br /><textarea name="nyhet" cols="47" rows="10">' . $row->nyhet . '</textarea></p>
<input type="submit" name="Lagre" value="$lagreVal" />
</form>';

?>

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...