Just nu i M3-nätverket
Jump to content

Problem med imgupload visningssida


Mr.Scott

Recommended Posts

Hej

Jag har skapat en imgupload sida och några fristående visningssidor som ska hämta bilderna från olika arkiv men i samma databas det funkar så långt att men får se en bild men så fort jag har tvåbilder upplagda så visar den dubbla bilder av den senaste och inte den första osv.

koden för visning är

 

$sql = "SELECT * FROM images WHERE archive='0'";

$result = mysql_query($sql);

while ($row = mysql_fetch_array($result)) {

 

echo "<a href=\"img_view01.php?id={$row['id']}\"><img border=0 width=103 height=76 src=\"img_view01.php?id={$row['id']}\"> </a>";//\n;

}

 

jag hoppas att någon kan hjälpa mig och se mitt misstag

 

tack på förhand/ Tony Scott

 

Link to comment
Share on other sites

Hur ser den genererade html-koden ut? Hur ser $row ut i varje iteration? Varför kör du SELECT * om du bara använder id?

 

Link to comment
Share on other sites

Jag är glad att se någon som svarat men jag kan inte säga att jag riktigt förstår vad du menar men jag ska försöka förklara hela scriptet för dig så kanske du kan hjälpa mig.

 

1. Databasen MySQL ser ut på följande sett

 

CREATE TABLE images (

id int(11) NOT NULL auto_increment,

imgtext varchar(255) NOT NULL default '',

bin_data blob NOT NULL,

filename varchar(50) NOT NULL default '',

filesize int(11) NOT NULL default '0',

filetype varchar(50) NOT NULL default '',

archive INT,

PRIMARY KEY (id)

) TYPE=MyISAM;

 

2. addimg.php filen som man använder för att ladda upp bilder tilldatabasen se ut på följande sett

 

<?php

 

 

$link = @mysql_connect("localhost","name","password") or die ("Kunde inte ansluta mot databasen!");

mysql_select_db ("database");

 

if (isset($_POST['submit'])) {

 

$data =

addslashes(fread(fopen($_FILES['form_data']['tmp_name'], "rb"),

$_FILES['form_data']['size']));

 

$sql = "INSERT INTO images(imgtext, bin_data, filename,

filesize, filetype, archive) VALUES ('{$_POST['imgtext']}', '$data',

'{$_FILES['form_data']['name']}',

'{$_FILES['form_data']['size']}',

'{$_FILES['form_data']['type']}', '$archive')";

 

$result=mysql_query($sql);

 

header("Location: ".$_SERVER['PHP_SELF']);

exit;

}

 

?>

 

<html>

<head></head>

<body>

<form method="post" action="<?=$_SERVER['PHP_SELF'] ?>" enctype="multipart/form-data">

<TABLE width="300" height="400" cellspacing=3 cellpadding=5>

<!--<P>Text till bilden:<br>-->

<input type="hidden" name="MAX_FILE_SIZE" value="240000000" >

<!--<input type="text" name="imgtext" size="40">--><br>

Bild som ska laddas upp i databasen:<br>

<input type="file" name="form_data" size="40"></P>

 

<select name="archive">

<option></option>

<option value="0" selected>galleri 1</option>

<option value="1">galleri 2</option>

<option value="2">galleri 3</option>

<option value="3">galleri 4</option>

<option value="4">galleri 5</option>

</select>

<br>

<br>

<p><input type="submit" name="submit" value="submit"></p>

<br>

</TD>

</TR>

</TABLE>

</form>

</body>

</html>

 

3. showimg.php filen som ska visa bilderna i miniatyr och så att man ska kunna klicka på dem för att se dem i stort format ser ut på följande sett.

 

<html>

<title></title>

<body>

<?php

$link = @mysql_connect("localhost","name","password") or die ("Kunde inte ansluta mot databasen!");

mysql_select_db ("database");

 

 

$sql = "SELECT * FROM images WHERE archive='0'";

$result = mysql_query($sql);

while ($row = mysql_fetch_array($result)) {

 

echo "<a href=\"img_view01.php?id={$row['id']}\"><img border=0 width=103 height=76 src=\"img_view01.php?id={$row['id']}\"> </a>\n";

 

}

 

?>

</body>

</html>

 

4. Och till sist filen som ska visa bilden i stort format ser ut på följande sett:

 

<?php

 

$link = mysql_connect("localhost","name","password");

mysql_select_db (database);

 

$sql = "SELECT * FROM images";

$result = mysql_query($sql);

$row = mysql_fetch_array($result);

 

header("Content-type: ".$row['filetype']);

 

$file = $row['bin_data'];

echo $file;

?> <?

echo $imgtext;

?> <BR> <?

?>

 

 

 

 

 

Hoppas att du får någon klarhet i problemet och kan hjälpa mig. Tack på förhand / Tony Scott

 

Link to comment
Share on other sites

Det ser ut att vara i 4an du har problem.

Jag antar att det är den som är img_view01.php

Du väljer inte vilken bild du vill ha från databasen utan hämtar bara den första.

 

du borde ändra raden

$sql = "SELECT * FROM images"; 

till

$sql = "SELECT * FROM images WHERE id = '" . mysql_[color="#0000ff"]real[/color]_escape_[color="#0000ff"]string[/color]([color="#0000ff"]$[/color]_GET['id']) . "'";

Då kommer du att hämta rätt bild från databasen.

 

Förutsatt att du kör php >= 4.3.0 annars får du använda mysql_escape_string istället

 

Edit: information ang. version

[inlägget ändrat 2005-06-15 21:48:36 av Helgon]

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.



×
×
  • Create New...