Gå til innhold

Får ikke oppdatert bilde på nettside (filbane lagret i mysql-database)


Anbefalte innlegg

Har laget et script i php for å kunne oppdatere flere felt i en database. Siden opplastning av bilde og alt dette funker bra, så må det nesten være noe med sql eller evt. annet rundt dette. Får ingen feilmeldinger, men den vil ikke oppdatere.

 

Her er koden:

$con=mysqli_connect("XXX.com","XXX","XXX","XXX");
$sql = "UPDATE oppskrifter SET navn='" . $_POST['navn'] . "', intro='" . $_POST['intro'] . "', kategori='" . $_POST['kategori'] . "', ";
if (!(empty($_FILES['filbane']['name']))) {
	$temp_fil = $_FILES['filbane']['tmp_name'];
	if (!($filref = fopen("bildeteller.txt", "r"))) {
		die ("En feil oppstod med å åpne bildetelleren");
		}
	$bildeid = (int) fgets($filref);
	fclose($filref);
	$bildeid++;
	$filnavn = "bilder/" . $bildeid . $_FILES['filbane']['name'];
	if (strlen($filnavn) > 50) {
		$filendelse = explode(".",$_FILES['filbane']['name']);
		$filnavn = "bilder/" . $bildeid . "." . $filendelse[1];
	}
	$filref = fopen("bildeteller.txt","w");
	fwrite($filref,$bildeid);
	move_uploaded_file($temp_fil, $filnavn);
	echo "Bilde:<br><img src='" . $filnavn . "'>";
	$sql = $sql . "bilde='" . $filnavn . "' ";
}
$sql = $sql . "porsjoner='" . $_POST['porsjoner'] . "', ingredienser='" . $_POST['ingredienser'] . "', fremgangsmaate='" . $_POST['fremgangsmaate'] . "', oaBruker='" . $_SESSION['bruker'] . "' WHERE id='" . $_POST['id'] . "'";
	$result = mysqli_query($con,$sql);

Problemet kommer når bildet skal oppdateres, da vil ikke innholdet i "cellen" endres. Resten av "cellene" oppdateres, og bildet blir lastet opp, men selve databasens bilde-celle vil ikke oppdateres.

 

Linjen som "ikke virker" er linje 41.

Lenke til kommentar
Videoannonse
Annonse

FY FY FY!

$sql = "UPDATE oppskrifter SET navn='" . $_POST['navn'] . "', intro='" . $_POST['intro'] . "', kategori='" . $_POST['kategori'] . "', ";
Dette er helt åpent for sql injections. ALDRI bruk bruker input direkte i en sql. Les det opp på sql injection, validering og sanitering av input, og sql prepared statements.

 

Du mangler ett komma på linje 41

$sql = $sql . "bilde='" . $filnavn . "' "; 
// endres til 
$sql = $sql . "bilde='" . $filnavn . "', ";

Ett tips er å skrive ut sql'en i sin helhet og kontrollere den for feil, evt. kjøre den i phpmyadmin eller andre mysql applikasjoner for å se at den faktisk fungerer.

Endret av Crowly
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å
×
×
  • Opprett ny...