Avatar billede klaske_ko Nybegynder
08. september 2005 - 18:10 Der er 14 kommentarer og
1 løsning

Upload til mysql

Jeg kunne godt tænke mig sådan jeg kan uploade billeder og skrive dem ind i sql på samme tid (lavet i php). gerne flere ad gangen (evt add muligheder som på http://up.peecee.dk/ )

Jeg vil samtidig gerne have en side (ved siden af) hvor jeg kan slette billedet både fra sql og mappe på server på samme tid.

Er det noget som kan laves? :) Og nogle der VIL lave det?

Vil godt dele opgaven op så der kan gives flere point :)
Avatar billede klaske_ko Nybegynder
08. september 2005 - 23:46 #1
Mangler kun en slet funktion nu :)
Har lavet et upload, mangler slet :)

  $fil_antal = 5;
  $file_dir  = "upload/";
  if ($_POST) {
    for ($i=0;$i<$fil_antal;$i++) {
      if (trim($_FILES['filer']['name'][$i])!="") {
        $ny_fil = $file_dir.$_FILES['filer']['name'][$i];
        move_uploaded_file($_FILES['filer']['tmp_name'][$i], $ny_fil);
        mysql_query("INSERT INTO uploads (dato, link) VALUES (now(), '$ny_fil')")or die(mysql_error());
        $j++;
      }
    }
  }
  if (isset($j)&&$j>0) print "Din(e) fil(er) blev uploadet.<br>";
  print "<form method='post' enctype='multipart/form-data'>";
  for($i=0;$i<$fil_antal;$i++) {
    print "<input type='file' name='filer[]' size='30'><br>";
  }
  print "<input type='submit' name='action' value='Upload'>";
  print "</form>";
Avatar billede coderdk Praktikant
09. september 2005 - 01:10 #2
1. Først hent "link" med en SELECT link FROM uploads WHERE fileid = $en_id (eller hvordan den ser ud hos dig)
2. unlink( $row['link'] );
3. DELETE FROM uploads WHERE fileid = $en_id (eller hvordan det var den så ud hos dig ;-) )
Avatar billede klaske_ko Nybegynder
09. september 2005 - 11:20 #3
Jamen sletter det filen på ftp serveren også ?
Avatar billede coderdk Praktikant
09. september 2005 - 11:23 #4
unlink( $row['link'] );

unlink sletter, $row['link'] skal så være 'link' feltet i databasen, som ser ud til at være placeringen af filen, på serveren - Så ja :)
Avatar billede klaske_ko Nybegynder
09. september 2005 - 15:12 #5
Vil du ikke lave det, er sgu ikke så skrap mere til det.. :(

CREATE TABLE `uploads` (
  `id` mediumint(9) NOT NULL auto_increment,
  `link` varchar(255) NOT NULL default '',
  `dato` varchar(255) NOT NULL default '',
  PRIMARY KEY  (`id`)
) TYPE=MyISAM AUTO_INCREMENT=1 ;
Avatar billede coderdk Praktikant
09. september 2005 - 15:16 #6
Tjah:

  $sql = sprintf( "
    SELECT
        id
        ,link
    FROM
        uploads
    WHERE
        id = '%s'
        "
        ,mysql_escape_string( $_GET['id'] )
        );
    $qh = mysql_query( $sql );
    if ( $row = mysql_fetch_assoc( $qh ) )
    {
        unlink( $row['link'] );
        $sql = "DELETE FROM uploads WHERE id = $row[id]";
        mysql_query( $sql );
    }

Filen kaldes med slet_script.php?id=123
Avatar billede klaske_ko Nybegynder
10. september 2005 - 20:23 #7
hmm.. www.domæne.dk/slet_script.php - det vil den ikke..
men nok mig som er en skovl..


<?
require_once('top.php');
require_once('sql.php');

$sql = sprintf( "SELECT id,link FROM uploads WHERE id = '%s'",mysql_escape_string( $_GET['id'] ));
    $qh = mysql_query( $sql );
    if ( $row = mysql_fetch_assoc( $qh ) )
    {
        unlink( $row['link'] );
        $sql = "DELETE FROM uploads WHERE id = $row[id]";
        mysql_query( $sql );
    }
require_once('bund.php'); ?>
Avatar billede coderdk Praktikant
10. september 2005 - 20:32 #8
Du husker at kalde den sådan: http://www.xn--domne-ura.dk/slet_script.php?id=12345
Prøv lige:

<?
require_once('top.php');
require_once('sql.php');

$sql = sprintf( "SELECT id,link FROM uploads WHERE id = '%s'",mysql_escape_string( $_GET['id'] ));
    $qh = mysql_query( $sql ) or die(mysql_error());
    if ( $row = mysql_fetch_assoc( $qh ) )
    {
        unlink( $row['link'] );
        $sql = "DELETE FROM uploads WHERE id = $row[id]";
        mysql_query( $sql ) or die(mysql_error());
    }
require_once('bund.php'); ?>
Avatar billede klaske_ko Nybegynder
10. september 2005 - 20:38 #9
Det skal gøres sådan her.. :
http://www.xgryde.dk/wap/upload/temp/test.html
Avatar billede klaske_ko Nybegynder
10. september 2005 - 20:40 #10
Hov, det var det forkerte spørgsmål :P sorry ;D Men.. tjekker lige på koden..
Avatar billede klaske_ko Nybegynder
10. september 2005 - 20:46 #11
Kan man ikke lave en liste over filerne ? Altså så man ikke selv skal skrive det id der.. ?

noget lign
if (isset($_GET['delete'])) {
  mysql_query("DELETE FROM uploads WHERE id = '$_GET[delete]'") or die (mysql_error());
}
$get_uploads = mysql_query("SELECT * FROM uploads") OR DIE(mysql_error());
while($row_uploads = mysql_fetch_array($get_uploads)) {
echo "
  <tr>
    <td><a href=\"?delete=".$row_menu[id]."\" onclick=\"if (confirm('Vil du slette dette billede ?')) { return true; } else { return false; }\"><img src=\"gfx/slet.gif\" border=\"0\"></a>";}


Den der sletter så kun fra sql, men det er sådan jeg ønsker den.. Bare hvor den også sletter fra mappe..

Liste over filer, med min slet knap der.. ;D
Avatar billede coderdk Praktikant
10. september 2005 - 20:48 #12
Erh, i det loop hvor du viser filerne kan du jo bare lave en:

echo '<a href="#" onclick="if(confirm(\'Slet?\'))window.location.href=\'slet_script.php?id=' . $row['id'] . '">Slet</a>';

Så skal man bare trykke på sletlinket...
Avatar billede coderdk Praktikant
10. september 2005 - 20:49 #13
Men for at rette din:

if (isset($_GET['delete'])) {
$sql = sprintf( "SELECT id,link FROM uploads WHERE id = '%s'",mysql_escape_string( $_GET['delete'] ));
    $qh = mysql_query( $sql ) or die(mysql_error());
    if ( $row = mysql_fetch_assoc( $qh ) )
    {
        unlink( $row['link'] );
        $sql = "DELETE FROM uploads WHERE id = $row[id]";
        mysql_query( $sql ) or die(mysql_error());
    }
}
$get_uploads = mysql_query("SELECT * FROM uploads") OR DIE(mysql_error());
while($row_uploads = mysql_fetch_array($get_uploads)) {
echo "
  <tr>
    <td><a href=\"?delete=".$row_menu[id]."\" onclick=\"if (confirm('Vil du slette dette billede ?')) { return true; } else { return false; }\"><img src=\"gfx/slet.gif\" border=\"0\"></a>";}
Avatar billede klaske_ko Nybegynder
10. september 2005 - 21:30 #14
takker :D det virker ;)
Avatar billede coderdk Praktikant
10. september 2005 - 21:33 #15
Cool :) Takker
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