Gå til innhold

Oppdatere mysql innlegg


Anbefalte innlegg

Hei,

Eg har dei siste dagene slitt med å lage eit redigeringsscript for å redigere tidligere innlegg i sql databasa mi.

Å legge til, å fjerne går veldig grett. Men redigere får eg ikkje til..

Først kjem redigeringssida (som fungerer utmerka):

 

<?php 
header("Content-Type: text/html;charset=UTF-8");

// Koble til database
$tilkobling = mysql_connect("lokalserver:1234","brukarnamn","kodeord");
if (!$tilkobling)
 {
 die('Det har oppstått en kritisk feil med databasen. <a href="#">Send melding.</a>');
 }
mysql_query("SET NAMES 'utf8' COLLATE 'utf8_general_ci'"); // ÆØÅ fiks
mysql_select_db("databasedøme", $tilkobling);
$sidenavn = $_GET['innlegg'];
$result = mysql_query("SELECT * FROM portefolje WHERE prosjektnavn = '$sidenavn'");
while($row = mysql_fetch_array($result))
 {
$kategori = $row['kategori'];
$type = $row['type'];
$kunde = $row['kunde'];
$prosjektnavn = $row['prosjektnavn'];
$beskrivelse = $row['beskrivelse'];
$bildenavn = $row['bildenavn'];
$ident = $row['PORT_ID'];
 }
?>
<!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>
<title>Admin</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<script type="text/javascript">
function advarsel() {
var answer = confirm ("Dersom du avslutter nå vil eventuelle data gå tapt.");
if (!answer)
window.location="http://www.google.no";
}
</script>
<script language="JavaScript" type="text/javascript">
<!--
function checkform ( form )
{

 if (form.prosjektnavn.value == "") {
alert( "Du må skrive et prosjektnavn!" );
form.prosjektnavn.focus();
return false;
 }

 if (form.kategori.value == "tom") {
alert( "Du må velge en kategori fra listen!" );
form.kategori.focus();
return false;
 }

 if (form.prosjekttype.value == "") {
alert( "Du må skrive inn prosjekttype!" );
form.prosjekttype.focus();
return false;
 }

 if (form.kunde.value == "") {
alert( "Du må skrive inn navn på kunde!" );
form.kunde.focus();
return false;
 }

 if (form.beskrivelse.value == "") {
alert( "Du må skrive inn en beskrivelse av prosjektet!" );
form.beskrivelse.focus();
return false;
 }
 return true;
}
//-->
</script>

<script>
function change(that, fgcolor, bgcolor){
that.style.color = fgcolor;
that.style.backgroundColor = bgcolor;
}

</script>
</head>
<body>



<br/><br/>
<div style="margin-left:135px; position:absolute;" id="form">
<form enctype="multipart/form-data" action="lagre_endringer.php" method="POST">
<input style="color:#666666;" name="prosjektnavn" id="prosjektnavn" type="text" value="
<?php
echo $prosjektnavn;
?>"><br/><br/>
<select name="kategori" id="kategori" selected="Webdesign/programmering">
	<option value="tom">-- VELG KATEGORI --</option>


	<option 
	<?php
	if ($kategori == Web) {
		echo "SELECTED";
	}
	?>
	value="Web">Webdesign/programmering</option>


	<option 
	<?php
	if ($kategori == Design) {
		echo "SELECTED";
	}
	?>
	value="Design">Grafisk design</option>


	<option 
	<?php
	if ($kategori == Video) {
		echo "SELECTED";
	}
	?>
	value="Video">Video og film</option>


	<option value="Skole">Skolerelatert arbeid</option>
</select><br/><br/>


<input style="color:#666666;" name="prosjekttype" type="text" onfocus="change(this,'#000000');" onblur="change(this,'#666666');" value="
<?php
echo $type;
?>
"><br/><br/>

<input style="color:#666666;" name="kunde" type="text" onfocus="change(this,'#000000');" onblur="change(this,'#666666');" value="
<?php
echo $kunde;
?>
"> <br/><br/>

<input type="hidden" name="MAX_FILE_SIZE" value="100000" />
<input type="hidden" name="referanse" value="<?php echo $ident?>" />
<input name="uploadedfile" type="file" /><br />


<br /><br/>
<textarea style="color:#666666; padding:0px; margin:-0px; text-align:left; font-family:arial; font-size:12px" name="beskrivelse" type="text" cols="33" rows="13" value="TEST" onfocus="change(this,'#000000');" onblur="change(this,'#666666');">
<?php
echo $beskrivelse;
?>
</textarea>
<br/><br/>





<input type="hidden" name="process" value="1" />
<input type="submit" value="Lagre og last opp">
</form>

</div>

<ul style="list-style:none; padding:0; margin-left:25px; font-size:12px; text-transform:uppercase;">
<li style="padding-bottom:20px; text-align:right; width:100px;">Prosjektnavn:</li>
<li style="padding-bottom:20px; text-align:right; width:100px;">Kategori:</li>
<li style="padding-bottom:20px; text-align:right; width:100px;">Type:</li>
<li style="padding-bottom:20px; text-align:right; width:100px;">Kunde:</li>
<li style="padding-bottom:20px; text-align:right; width:100px;">Thumbnail:</li>
<li style="padding-bottom:20px; text-align:right; width:100px;">Beskrivelse:</li>
</ul>
</body>
</html>

 

Og her kjem sida det vart posta til:

 

<?php
$ref = $_REQUEST['referanse'];

// Where the file is going to be placed 
$target_path = "uploads/";
$target_path = $target_path . basename( $_FILES['uploadedfile']['name']); 

$target_path = "uploads/";

$target_path = $target_path . basename( $_FILES['uploadedfile']['name']);

$filnavn = basename( $_FILES['uploadedfile']['name']); 

if(move_uploaded_file($_FILES['uploadedfile']['tmp_name'], $target_path)) {
echo "The file ".  basename( $_FILES['uploadedfile']['name']). 
" has been uploaded.";
} else{
echo "There was an error uploading the file, please try again!";
}
include('dblogin.php');

if(isset($_POST['process']) and $_POST['process']==1)
{
$prosjektnavn = trim($_POST['prosjektnavn']);
$kategori = trim($_POST['kategori']);
$type = trim($_POST['prosjekttype']);
$kunde = trim($_POST['kunde']);
$beskrivelse = trim($_POST['beskrivelse']);

$query = 'UPDATE portefolje WHERE PORT_ID = '$ref'
		 prosjektnavn = "'.$prosjektnavn.'",
		 kategori = "'.$kategori.'",
		 type = "'.$type.'",
		 kunde = "'.$kunde.'",
		 bildenavn = "'.$filnavn.'",
		 beskrivelse = "'.$beskrivelse.'",
		 publisert = NOW()';


	if(mysql_query($query))
	{
		echo 'Innlegget er lagret.';
	}
	else
	{
		echo 'En feil har oppstått.';
	}
}
?>

 

Kva gjer eg galt?

Det fungerer ikkje, eg får berre opp at ei feil allereie har oppstått.

Kan det vere at eg har same variabelnamn i den forrige sida som poste til den nye?

Takker for alle svar!

Endret av steffenz
Lenke til kommentar
Videoannonse
Annonse

UPDATE portefolje WHERE PORT_ID = '$ref'
            prosjektnavn = "'.$prosjektnavn.'",
            kategori = "'.$kategori.'",
            type = "'.$type.'",
            kunde = "'.$kunde.'",
            bildenavn = "'.$filnavn.'",
            beskrivelse = "'.$beskrivelse.'",
            publisert = NOW()

Du setter ikke noen nye verdier noen plass

WHERE er bare hvilken rad det skal være, ikke hva som skal endres.

Blir vell

UPDATE portefolje SET prosjektnavn = "'.$prosjektnavn.'", kategori = "'.$kategori.'", type = "'.$type.'", kunde = "'.$kunde.'", bildenavn = "'.$filnavn.'", beskrivelse = "'.$beskrivelse.'", publisert = NOW() WHERE PORT_ID = '$ref'

Endret av AlecTBM
Lenke til kommentar

Takk for svar!

No fungerer det utmerka, bortsett frå automatisk ID.

Her kjem koda modifisert slik at den fungerte:

 

	$query = 'UPDATE portefolje SET
prosjektnavn = "'.$prosjektnavn.'",
	kategori = "'.$kategori.'",
	type = "'.$type.'",
	kunde = "'.$kunde.'",
	bildenavn = "'.$filnavn.'",
	beskrivelse = "'.$beskrivelse.'",
	publisert = NOW()
WHERE PORT_ID = "$ref"';

 

Men eg får dessverre ikkje WHERE PORT_ID = "$ref"'; til å fungere. Uansett korleis eg snur å vender på det fungerer den ikkje.

Prøvde å konvertere den til INTEGER, men det verka heller ikkje. Sjå kode:

 

$ref =  $_REQUEST['referanse'];
$fullref = (integer) $ref;
echo $fullref;

 

Endra då koden førstekode til WHERE PORT_ID = "$fullref"'; utan noko resultat av den grunn...

Lenke til kommentar
Må du ikke skrive: '.$ref.''; og ikke "$ref"'; ?

 

Hva får du ved å skrive echo $query; under spørringen?

Det er visst akkurat det eg må.

Har du noko forklaring på kvifor eg må ha alle desse punktuma, anførselstekna og fnuttane om ein anna?

Eg forstår så mykje at eg må ha "" eller '' når eg skriv ut ein streng (avhengig av om skal ha varabler eller ei - noko som fekk meg til å velje "" her), men kvifor må eg ha "'.$variabel.'", på kvar som skal skrivest ut?

Og ein anna ting med det same - om nokon av dykk vett:

Databasen min kjører UTF-8, men korleis kan eg forsikre meg om at HTML formen sender ut med dette?

ÆØÅ fungerer nemleg ikkje, enn dei vises når eg skriv inn i phpMyAdmin. Tips?..

Har prøvd å skrive accept-charset="UTF-8" på formen, utan hell..

 

Redigert: Tusen takk for hjelp så langt :)

Endret av steffenz
Lenke til kommentar
Må du ikke skrive: '.$ref.''; og ikke "$ref"'; ?

 

Hva får du ved å skrive echo $query; under spørringen?

Det er visst akkurat det eg må.

Har du noko forklaring på kvifor eg må ha alle desse punktuma, anførselstekna og fnuttane om ein anna?

Eg forstår så mykje at eg må ha "" eller '' når eg skriv ut ein streng (avhengig av om skal ha varabler eller ei - noko som fekk meg til å velje "" her), men kvifor må eg ha "'.$variabel.'", på kvar som skal skrivest ut?

Og ein anna ting med det same - om nokon av dykk vett:

Databasen min kjører UTF-8, men korleis kan eg forsikre meg om at HTML formen sender ut med dette?

ÆØÅ fungerer nemleg ikkje, enn dei vises når eg skriv inn i phpMyAdmin. Tips?..

Har prøvd å skrive accept-charset="UTF-8" på formen, utan hell..

 

Redigert: Tusen takk for hjelp så langt :)

 

Det er slik at med dobble fnutter "" trenger man ikke ha fnutter rundt variabler. En annen ting som er viktig å huske på er at i alle SQL spørringen må du har fnutter rundt alle "strings/tekst". Eksempel:

SELECT * FROM table WHERE username = 'Warz'

Når du skal ha dette i en spørring må det derfor bli dobbelt opp... og du må bruke riktig fnutt for å bryte ut av spørringen.

   $var = "Warz";
  eks 1: $sql = "SELECT * FROM table WHERE username = 'Warz'";
  eks 2: $sql = "SELECT * FROM table WHERE username = '".$var."'";

I eks 2 starter vi med en dobbel fnutt, men vi må ha fnutt rundt brukernavnet siden dette er en string. Vi setter derfor en fnutt først, så en dobbelfnutt for å gå ut, punktum brukes for å skjøte. en ny dobbelfnutt for å gå inn ingen og en enkel fnutt som skal være rundt brukernavnet før vi avslutter med en dobbel.

 

eks 2 kan forøvrig skrives slik også:

 eks 2: $sql = "SELECT * FROM table WHERE username = '$var'";
eks 2: $sql = 'SELECT * FROM table WHERE username = "'.$var.'"';

 

Håper ikke det ble alt for rotete forklart :p

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