Avatar billede t-hviid Nybegynder
28. april 2005 - 21:30 Der er 13 kommentarer og
1 løsning

Kan ikke få unlink script til at virke

Efter at have kigge lidt rundt her, har jeg forsøgt at slette billed filer på min webserver med unlik men kan ikke få det til at virke. Koden ser sådanne ud:
if ((isset($_POST['slet_felt'])) && ($_POST['slet_felt'] != "")) {
  $deleteSQL = sprintf("DELETE FROM produkter WHERE Id=%s",
                      GetSQLValueString($_POST['slet_felt'], "int"));
                        unlink($row['billed']);

  mysql_select_db($database_test, $test);
  $Result1 = mysql_query($deleteSQL, $test) or die(mysql_error());

  $deleteGoTo = "/doks/slettet.php";
  if (isset($_SERVER['QUERY_STRING'])) {
    $deleteGoTo .= (strpos($deleteGoTo, '?')) ? "&" : "?";
    $deleteGoTo .= $_SERVER['QUERY_STRING'];
  }
  header(sprintf("Location: %s", $deleteGoTo));
}

$colname_produkter = "-1";
if (isset($_GET['ID'])) {
  $colname_produkter = (get_magic_quotes_gpc()) ? $_GET['ID'] : addslashes($_GET['ID']);
}
mysql_select_db($database_test, $test);
$query_produkter = sprintf("SELECT * FROM produkter WHERE Id = %s", $colname_produkter);
$produkter = mysql_query($query_produkter, $test) or die(mysql_error());
$row_produkter = mysql_fetch_assoc($produkter);
$totalRows_produkter = mysql_num_rows($produkter);
?>
Avatar billede t-hviid Nybegynder
28. april 2005 - 22:03 #1
Den fejlmeddelse jeg får er følgende: Warning: unlink(): No such file or directory in /home/vhost/props/doks/bekraeft_slet.php on line 29
Avatar billede erikjacobsen Ekspert
29. april 2005 - 12:04 #2
Du skal lave en select ud fra dit id, så du kan få dit filnavn. Og derefter lave unlink og delete.
Avatar billede t-hviid Nybegynder
29. april 2005 - 13:33 #3
slet_felt indeholder id fra tabellen produkter.
Avatar billede t-hviid Nybegynder
29. april 2005 - 14:16 #4
Jeg poster lige hele koden frem til head hvis det kan hjælpe med at finde rundt i det.
<?php require_once('../Connections/test.php'); ?>
<?php
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "")
{
  $theValue = (!get_magic_quotes_gpc()) ? addslashes($theValue) : $theValue;

  switch ($theType) {
    case "text":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;   
    case "long":
    case "int":
      $theValue = ($theValue != "") ? intval($theValue) : "NULL";
      break;
    case "double":
      $theValue = ($theValue != "") ? "'" . doubleval($theValue) . "'" : "NULL";
      break;
    case "date":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;
    case "defined":
      $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
      break;
  }
  return $theValue;
}

if ((isset($_POST['slet_felt'])) && ($_POST['slet_felt'] != "")) {
    unlink($row['billed']);
  $deleteSQL = sprintf("DELETE FROM produkter WHERE Id=%s",
                      GetSQLValueString($_POST['slet_felt'], "int"));
                       

  mysql_select_db($database_test, $test);
  $Result1 = mysql_query($deleteSQL, $test) or die(mysql_error());

  $deleteGoTo = "/doks/slettet.php";
  if (isset($_SERVER['QUERY_STRING'])) {
    $deleteGoTo .= (strpos($deleteGoTo, '?')) ? "&" : "?";
    $deleteGoTo .= $_SERVER['QUERY_STRING'];
  }
  header(sprintf("Location: %s", $deleteGoTo));
}

$colname_produkter = "-1";
if (isset($_GET['ID'])) {
  $colname_produkter = (get_magic_quotes_gpc()) ? $_GET['ID'] : addslashes($_GET['ID']);
}
mysql_select_db($database_test, $test);
$query_produkter = sprintf("SELECT * FROM produkter WHERE Id = %s", $colname_produkter);
$produkter = mysql_query($query_produkter, $test) or die(mysql_error());
$row_produkter = mysql_fetch_assoc($produkter);
$totalRows_produkter = mysql_num_rows($produkter);
?>
Avatar billede t-hviid Nybegynder
30. april 2005 - 21:00 #5
Er det lukketid - eller er der nogle der kan hjælpe?
Avatar billede erikjacobsen Ekspert
30. april 2005 - 21:25 #6
Det har du fået: 29/04-2005 12:04:44
Avatar billede t-hviid Nybegynder
02. maj 2005 - 13:51 #7
Det er ok! Jeg har måske bevæget mig ud på dybt vand her, som nybegynder. Jeg har roddet med det de sidste mange dage, men kan ikke finde ud af hvordan jeg skal få id'et. Jeg troede at det kom fra slet_felt som får produkttabellens id fra en query. Det jeg har fået lavet her, der sletter posten i databasen er lavet gennem Dreamweavers eksempel i deres hjælp. Er der nogle mulighed for at du kan hjælpe mig på vej - der er naturligvis flere point på, da jeg kan fornemme at det er mere omfattende end jeg troede.
Avatar billede erikjacobsen Ekspert
02. maj 2005 - 14:16 #8
Jeg ved ingenting om dreamwaever (og samler slet ikke på point), men du skal i hvert
fald med en SELECT-sætning hente indholdet inden du sletter det med DELETE, og så finde filnavnet ud fra resultatet af din SELECT og lave din unlink.
Avatar billede t-hviid Nybegynder
02. maj 2005 - 14:19 #9
Ja, det er jeg med på, jeg troede bare at SELECT * tog alt fra tabellen.
Avatar billede erikjacobsen Ekspert
02. maj 2005 - 14:24 #10
Det gør en  SELECT billed FROM produkter WHERE ID=....etellerandet...  ikke ;)
Avatar billede t-hviid Nybegynder
02. maj 2005 - 14:34 #11
Jeg har nu lavet den om til $query_produkter = sprintf("SELECT Id, billed FROM produkter WHERE Id = %s", $colname_produkter); Er det rigtigt?
Avatar billede t-hviid Nybegynder
02. maj 2005 - 14:52 #12
Nu fik jeg forløsning. Jeg så et ? hvor du havde svaret med dette forslag $_POST[navn]. Den brugte jeg og lavede et hiddenfield hvor jeg hentede stien en fra min query. :-) Endelig lykkedes det !!!!

Du skal have tak for hjælpen her, og for dit svar i andet spørgsmål ;-) Lægger du et svar?
Avatar billede erikjacobsen Ekspert
02. maj 2005 - 15:41 #13
Fint nok ;)  Men nej tak, jeg samler slet ikke på point.
Avatar billede t-hviid Nybegynder
02. maj 2005 - 15:44 #14
Så siger jeg endnu engang tak for din hjælp og tålmodighed med en nybegynder ;-)
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester