19. september 2006 - 15:45Der er
42 kommentarer og 1 løsning
Slette billede fra database og mappe på server
Hvordan sletter jeg et billede fra server og i databasen.
Når jeg uploader et billede så laver den 2 stk et originalt og et thumb. derefter smider den det i databasen som indeholder id, navn, billede, thumb, stibillede, sti thumb,
dette vil jeg slette ved at trykke på "delete" den skal altså slettet på id'et og slette de 2 filer.
Jeg ved jeg skal bruge en unlink() funktion men hvordan?
Min kode ser sålede ud "dette er udtræks delen":
<?php session_start(); if($_SESSION['tjek'] != 1){ header("location: ../../login.php"); } include("../../connection.php"); // samme som på alle andre sider ?> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <title>Untitled Document</title>
Prøv denne her, den virker for mig: <?php mysql_select_db($database, $conn);
//find billednavnet i databasen
id, navn, billede, thumb, stibillede, sti thumb,
$query_rs_del_doc = sprintf("SELECT * FROM billedtabel WHERE id = %s", $_GET['id']); $rs_del_doc = mysql_query($query_rs_del_doc, $conn) or die(mysql_error()); $row_rs_del_doc = mysql_fetch_assoc($rs_del_doc); $totalRows_rs_del_doc = mysql_num_rows($rs_del_doc);
// slet filen, hvis den eksisterer if (file_exists($row_rs_del_doc['stibillede']."/".$row_rs_del_doc['billede'])) { unlink ($row_rs_del_doc['stibillede']."/".$row_rs_del_doc['billede']); unlink ($row_rs_del_doc['sti thumb']."/".$row_rs_del_doc['thumb']); }
// slet fra DB if ((isset($_GET['ID'])) && ($_GET['ID'] != "")) { $deleteSQL = sprintf("DELETE FROM billedtabel WHERE id=%s", $_GET['ID']);
mysql_select_db($database, $conn); $Result1 = mysql_query($deleteSQL, $conn) or die(mysql_error());
Hov... Fjern lige denne her linje: id, navn, billede, thumb, stibillede, sti thumb, (brugte den til at modificerer scriptet, og glemte at slette den.... hehe)
$query_rs_del_doc = sprintf("SELECT * FROM gallery WHERE id = %s", $_GET['id']); $rs_del_doc = mysql_query($query_rs_del_doc) or die(mysql_error()); $row_rs_del_doc = mysql_fetch_assoc($rs_del_doc); $totalRows_rs_del_doc = mysql_num_rows($rs_del_doc);
// slet filen, hvis den eksisterer if (file_exists($row_rs_del_doc['stibillede']."/".$row_rs_del_doc['billede'])) { unlink ($row_rs_del_doc['stibillede']."/".$row_rs_del_doc['billede']); unlink ($row_rs_del_doc['stithumb']."/".$row_rs_del_doc['thumb']); }
// slet fra DB if ((isset($_GET['ID'])) && ($_GET['ID'] != "")) { $deleteSQL = sprintf("DELETE FROM gallery WHERE id=%s", $_GET['ID']);
mysql_select_db($database, $conn); $Result1 = mysql_query($deleteSQL, $conn) or die(mysql_error()); ?> Welcome to your gallery </p></td> </tr> <tr bgcolor="#891d27" class="tekst"> <td width="73" align="left" valign="top" class="overskrift"><a href="gallery_ret.php?id=<?php echo $row['id']; // her bliver du sendt vidre til ret delen?>">Edit</a></td> <td width="315" align="left" valign="top" class="overskrift"><a href="gallery.php?delete=<?php echo $row['id'];// trykkes der her bliver nyheden slettet ?>"> Delete </a></td> <td align="right" class="menutekst"> </td> </tr> <tr bgcolor="#891d27" class="tekst"> <td align="left" valign="top" class="menutekst" ><div align="center"><strong>Name: <?php echo $row['name']; ?></strong> </div></td> <td align="right" class="menutekst"><div align="left"><a href="../../pictures/<?php echo $row['billede']; ?>" target="_blank"><img src="../../pictures/thumb/<?php echo $row['thumb']; ?>" border="0"></a> </div> <div align="right"></div></td> <td width="202" align="left" valign="top" ><strong>File: </strong><?php echo $row['stibillede']; ?></td> </tr> <tr bgcolor="#891d27" class="tekst"> <td colspan="3" align="left" valign="top" ><br> <?php } ?></td> </tr> <tr bgcolor="#891d27" class="tekst"> <td colspan="3"> </td> </tr> </table> </body> </html>
Warning: mysql_query() [function.mysql-query]: Access denied for user 'ODBC'@'localhost' (using password: NO) in C:\wamp\www\rouge\delpict.php on line 4
Warning: mysql_query() [function.mysql-query]: A link to the server could not be established in C:\wamp\www\rouge\delpict.php on line 4 Access denied for user 'ODBC'@'localhost' (using password: NO)
AHA!!!! Fejl fundet (tror jeg) Disse linjer: if (file_exists($row_rs_del_doc['stibillede']."/".$row_rs_del_doc['billede'])) { unlink ($row_rs_del_doc['stibillede']."/".$row_rs_del_doc['billede']); unlink ($row_rs_del_doc['stithumb']."/".$row_rs_del_doc['thumb']);
Ændres til: if (file_exists($row_rs_del_doc['stibillede']."/".$row_rs_del_doc['billede'])) { unlink ($row_rs_del_doc['stibillede']); unlink ($row_rs_del_doc['stithumb']);
//indsætter Name + navn på lille og stort billede samt stien i databasen $navn=$_POST['name'][$key]; //echo $navn; include("../../connections/connection.php"); mysql_query("INSERT INTO gallery (name, thumb,stithumb,billede,stibillede) VALUES('$navn','$thumbname','$mappe2.$thumbname','$billedenavn','$mappe.$billedenavn')")or die(mysql_error());
problemet ligger i values : '$mappe.$billedenavn' det punktum der er i mellem ødelægger det $mappe2.$thumbname'
Hvis jeg var dig, ville jeg prøve at lægge $mappe.$billedenavn i en ny variabel, der så kaldes i sql'en (det samme for thumb, sæføli), alternativt fjerne '' omkring $mappe.$billedenavn i sql. Jeg kan ikke se hvor fejlen opstår... Også må kan må gætte lidt ;-)
Og du er sikker på der ikke indsættes et . i mappevariablerne - ved et uheld....?
Et andet spørgsmål.. det script du har lavet til upload. Det er lige det jeg søger, nemlig at der samtidig laves en thumbnail til en mappe. Er det sådan så jeg kan få lov at "låne" det script lidt så jeg kan mixe det med mit eget? :)
I orden.. jeg har allerede et multi-upload script der både uploader billede til en mappe samt til db + tilhørende info. Skal bare lige bruge copy/thumbnail delen. :-D
//indsæt i databasen $navn=$_POST['name'][$key]; echo $navn; include('../../connections/connection.php'); mysql_query("INSERT INTO gallery (name, thumb,stithumb,billede,stibillede) VALUES('$navn','$thumbname','$mappe2.$thumbname','$billedenavn','$mappe.$billedenavn')")or die(mysql_error());
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.