webForumDet fria alternativet

Behöver lite hjälp med ett bildgalleri

PHPur PHP

8 svar · 756 visningar · startad av Mycodez

Medlem sedan feb. 2010445 inlägg
Frågan#1

Tjena!
Jag kollat på en guide där man visar hur man lagrar bilder i detta fall i en databas "mySql-databas". men nu e det så att jag vill vissa all bilder 2 stycken i detta fall på en rad sen så går det ner tills man har nåt slut bilden.

i min databas vid namn databaseimage har jag en tabell som heter store där bilderna lagras.
tabell store ser ut så här:

id int primary_key och a_i
name varchar(50)
image blob

scriptet nedan e det jag har gjort men det jag får inte fram något resultat i det tyvärr.

<?php header("Content-type: image/jpeg"); ?>
<!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>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>

<body>
<?php

//connect
mysql_connect("localhost","root","") or die(mysql_error());
mysql_select_db("databaseimage") or die(mysql_error());

$sqlCommand = "SELECT * FROM store"; 
$query = mysql_query($sqlCommand); 

$column = 2;
$x = 0;

while ($row = mysql_fetch_assoc($query)){
	$image = $row['image'];
    if($file !="." && $file != ".."){
    	echo "<table style='display:inline;'><tr><td align='center'><img src='$image' height='100' width='100' style='border:0;'></td></tr></table>";
     	$x++;

     	if($x==$column){
   			echo "<br/><br/>";
      		$x = 0;
     	}
    }
}
?>
</body>
</html>

Min fråga nu e då vad e det som e felet? det kanske går att göra på något enklare sätt? iså fall hur?

Tack på för hand
Robin K.

Medlem sedan juni 20019 519 inlägg
#2

Var kommer din variabel $file ifrån?

Vad bli det för "fel"?

Hur ser den genererade HTML koden när du kör ditt skript?

Sen för övrigt så kör inte tabeller för att rendera ut bilder, du har minst 3 element i onödan när du väl kommer rendera ut bilderna.

Sen är ju:

<?php header("Content-type: image/jpeg"); ?>

felaktigt då det inte alls är en content-typeimage/jpeg, det är ju ett HTML dokument du försöker rendera ut.

Medlem sedan feb. 2010445 inlägg
#3

Den där $file ska inte finnas där så

<?php header("Content-type: image/jpeg"); ?> om detta e fel vad e det rätt alltså vad ska stå annars då?
För har jag inte den php raden så visar alla bitar som en bild e uppbygg av.

men nu så ser scriptet ut så här:

<!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>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>

<body>
<?php

//connect
mysql_connect("localhost","root","") or die(mysql_error());
mysql_select_db("databaseimage") or die(mysql_error());

$sqlCommand = "SELECT * FROM store"; 
$query = mysql_query($sqlCommand); 

$column = 2;
$x = 0;

while ($row = mysql_fetch_assoc($query)){
	$image = $row['image'];
   
    	echo "<img src='$image' height='100' width='100' style='border:0;'>"		;
     	$x++;

     	if($x==$column){
   			echo "<br/><br/>";
      		$x = 0;
     	}
  
}
?>
</body>
</html>

Hur göra jag för att visa mina bilder 2 bilder per rad?

/Robin K.

Medlem sedan juni 20019 519 inlägg
#4

<?php header("Content-type: image/jpeg"); ?> Använder du när du skall streamar data, om $image är en ström så kommer din kod aldrig att fungera då du måste strömar innehållet. Du få ha en PHP fil som strömar datan och en som loopar igenom alla dina bilder.

Medlem sedan feb. 2010445 inlägg
#5

okej hur gör jag det??

Medlem sedan feb. 2010445 inlägg
#6

jag har löst nu så jag kan se bilderna men dock inte hela bilderna och även nu när jag laddar upp bilder som e stora i säg så visas inte hela bilderna går inte inte in databasen (tror jag för inte hela bilden visas)

men jag tror jag löste det för jag kör med filen som jag använder när jag laddar upp bilderna till databasen. för på den sidan där man laddar upp bilder, har allt gott som det ska så visar man den bilden som har laddat upp.

index.php (där man laddar upp bilder till databasen)

<!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>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>

<body>

<form action="index.php" method="post" enctype="multipart/form-data">
File:
<input type="file" name="image" /><input type="submit" value="Upload" />
</form>

<?php
	
//connect
mysql_connect("localhost","root","") or die(mysql_error());
mysql_select_db("databaseimage") or die(mysql_error());

//File properties
$file = $_FILES['image']['tmp_name'];

if(!isset($file))
	echo "Please select an images";
else {
	$image = addslashes(file_get_contents($_FILES['image']['tmp_name']));
	$image_name = addslashes($_FILES['image']['name']);
	$image_size = getimagesize($_FILES['image']['tmp_name']);
	
	if($image_size == FALSE)
		echo "That's not an image.";
	else {
		if(!$insert = mysql_query("INSERT INTO store VALUES ('','$image_name','$image')"))
			echo "Problem uploading image.";
	 	else {
			$lastid = mysql_insert_id();
			echo "Image uploaded.<p />Your images:<p /><img src=get.php?id=$lastid>
			";
		}
	}
	
}
?>

</body>
</html>

get.php (filen som hjälper till att visa bilderna)

<?php

//connect
mysql_connect("localhost","root","") or die(mysql_error());
mysql_select_db("databaseimage") or die(mysql_error());

$id = addslashes($_REQUEST['id']);

$image = mysql_query("SELECT * FROM store WHERE id=$id");
$image = mysql_fetch_assoc($image);
$image = $image['image'];

header("Content-type: image/jpeg");

echo $image;

?>

view.php (där alla bilder ska visas som finns lagrade i databasen)

<!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>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>

<body>
<?php

//connect
mysql_connect("localhost","root","") or die(mysql_error());
mysql_select_db("databaseimage") or die(mysql_error());

$sqlCommand = "SELECT * FROM store"; 
$query = mysql_query($sqlCommand); 

$column = 2;
$x = 0;

while ($row = mysql_fetch_assoc($query)){
	$image = $row['image'];
	$id = $row['id'];
   
    	echo "<img src=get.php?id=$id  width='100' style='border:0;'>"		;
     	$x++;

     	if($x==$column){
   			echo "<br/><br/>";
      		$x = 0;
     	}
  
}
?>
</body>
</html>

Hur bilderna ser ut när dom e listade så ser det ut då här:
http://www.galleri.mycodez.se/hjalp/bild.html

där hoppas jag att ni förstår vad mitt problem är.

//Robin K.

Medlem sedan juni 200443 inlägg
#7

fattar nog inte vad som inte funkar..posta genererad html annars

ett tips, använd modulus, när man ska göra något var x:e gång..

if( ($x % 2) == 0 ) echo "<br/><br/>";

Medlem sedan feb. 2010445 inlägg
#8

hur postar man genererad html kod?
Och modulus hur funkar det?

Medlem sedan juni 20019 519 inlägg
#9

Visa källkod på din genererade php sida, där ser du vad din PHP kod har genererat.

Men jag tror mer att det ligger i att mySQL datan inte har lagrat all binärkod för bilden.

Modulo: http://en.wikipedia.org/wiki/Modulo_operator

132 ms totalt · 3 externa anrop · v20260731065814-full.25f56b17
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
130 ms — hämta tråd, inlägg och bilagor (db)