Avatar billede dero Nybegynder
02. januar 2004 - 22:10 Der er 19 kommentarer og
1 løsning

Billede galleri, samt afstemning?

Hej.. Jeg vil godt lave en hjemmeside, hvor det skal være muligt for brugerne at lave en nu database, og så oploade billeder, hvor det så skal være muligt at kunne stemme på billederne.. Det skal laves i MySQL.. Jeg leder bare efter stumper til hvordan det skal laves, så bare skriv svar på alle de ting der nu skal bruges, så får i lidt points..

Mange tak..

Mvh
Anders
Avatar billede ahv Nybegynder
02. januar 2004 - 22:13 #1
Du skal hvertfald bruge en upload funktion:
http://www.webcafe.dk/artikler/php/upload/
Avatar billede bufferzone Praktikant
02. januar 2004 - 22:14 #2
Avatar billede dero Nybegynder
02. januar 2004 - 22:19 #3
Kan man godt opbevare billeder i en MySQL database, eller skal de ligge i biblioteker??

Mvh
Anders
Avatar billede ahv Nybegynder
02. januar 2004 - 22:21 #4
Man kan godt opbevare billeder i MySQL, men det anbefales ikke.
Avatar billede ahv Nybegynder
02. januar 2004 - 22:22 #5
En afstemning kan laves således:
http://www.phpfreaks.com/tutorials/9/0.php
Avatar billede dero Nybegynder
02. januar 2004 - 22:29 #6
ahv ->  Hvorfor anbefales det ikke at opbevare billeder i en MySQL database??

Mvh
Anders
Avatar billede ahv Nybegynder
02. januar 2004 - 22:30 #7
PHP's egen fil-håndtering er meget bedre til sådanne opgaver.
Avatar billede dero Nybegynder
02. januar 2004 - 22:40 #8
ahv -> Hvordan gørres det så??
Avatar billede ahv Nybegynder
02. januar 2004 - 22:46 #9
Du kan læse om fil-håndtering på det link jeg gav dig tidligere:
http://www.webcafe.dk/artikler/php/upload/
Avatar billede dero Nybegynder
02. januar 2004 - 22:55 #10
ahv -> Tak, jeg har læst det, blev temmelig meget klogere! Ved du om det er muligt for folk at oploade alle de filer der ligger i et bibliotek på een gang??

Mvh
Anders
Avatar billede googolplex Novice
02. januar 2004 - 23:54 #11
http://coppermine.sourceforge.net/

Her kan både du og andre uploade billeder og stemme på dem.
Avatar billede ahv Nybegynder
02. januar 2004 - 23:58 #12
dero -> Du kan ikke uploade et helt bibliotek på en gang, men er nødsaget til at vælge en fil ad gangen, et eksempel herpå:

<?php
mysql_pconnect("host","user","pass");
mysql_select_db("db");
if(isset($_GET['id'])) {
    $query = mysql_query("SELECT * FROM gallery WHERE id='$_GET[id]'");
    $row = mysql_fetch_array($query);
    mysql_query("DELETE FROM gallery WHERE id='$_GET[id]'");
    @unlink("mappe/".$row['filename']);
}

if (isset($_POST['up'])) {
    $i = 0;
    while (list($name, $value) = each($_FILES['upfil']['name'])) {
        if ($value) {
            $dist = $_SERVER["DOCUMENT_ROOT"] ."/gallery/";
            $files = $value;
            $temparr = explode(".", $files);
            $temparr[count($temparr)-2] = time();
            $files = implode(".", $temparr);
            $rand = rand(1,100000);
            $files = "$rand$files";
            move_uploaded_file($_FILES['upfil']['tmp_name'][$i], $dist . $files);
            mysql_query("INSERT INTO gallery (time, filename) VALUES (now(), '$files')");
        }
        $i++;
    }
}
?>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" enctype="multipart/form-data">
<?php
for ($s = 0; 10 > $s; $s++) {
?>
Fil til upload
<input type="file" name="upfil[]"><br>
<?php
}
?>
<input type="submit" value="Upload" name="up">
</form>

<?php
$query = mysql_query("SELECT * FROM gallery");
while ($row = mysql_fetch_array($query)) {
    echo "<a href='$_SERVER[PHP_SELF]?id=$row[id]'>Slet $row[filename]</a><br>";
}
?>

Der kan uploades ti på en gang ved manuelt at gå ind og vælge dem en for en.
Avatar billede dero Nybegynder
03. januar 2004 - 00:12 #13
ahv -> Tak.. Kan jeg ikke få dig til at forklare hvad scriptet gør, åsdan lidt linje for linje??

Mange tak..

Mvh
Anders
Avatar billede ahv Nybegynder
03. januar 2004 - 00:20 #14
Jeg kan forklare det lidt i grove træk:

<?php
mysql_pconnect("host","user","pass");
mysql_select_db("db");
if(isset($_GET['id'])) {
    $query = mysql_query("SELECT * FROM gallery WHERE id='$_GET[id]'");
    $row = mysql_fetch_array($query);
    mysql_query("DELETE FROM gallery WHERE id='$_GET[id]'");
    @unlink("mappe/".$row['filename']);
}

Connecter til databasen.
det næste er en delete funktion som gør som følger:
Udtrækker et filnavn og et id fra gallery, når dette er trukket ud sletter den posten i databasen, efterfølgende sletter den filen i mappen.

if (isset($_POST['up'])) {
    $i = 0;
    while (list($name, $value) = each($_FILES['upfil']['name'])) {
        if ($value) {
            $dist = $_SERVER["DOCUMENT_ROOT"] ."/gallery/";
            $files = $value;
            $temparr = explode(".", $files);
            $temparr[count($temparr)-2] = time();
            $files = implode(".", $temparr);
            $rand = rand(1,100000);
            $files = "$rand$files";
            move_uploaded_file($_FILES['upfil']['tmp_name'][$i], $dist . $files);
            mysql_query("INSERT INTO gallery (time, filename) VALUES (now(), '$files')");
        }
        $i++;
    }
}

Her uploader den billederne/filerne, til mappen galllery, den sørger for at give filen et unikt navn, tiden i sekunder siden 1970 hvor der foran er et random nummer mellem 1 og 100.000, så uploader den filen og gemmer nødvendige oplysninger i databasen.

<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" enctype="multipart/form-data">
<?php
for ($s = 0; 10 > $s; $s++) {
?>
Fil til upload
<input type="file" name="upfil[]"><br>
<?php
}
?>
<input type="submit" value="Upload" name="up">
</form>

Laver simpelt ti upload felter via en for-løkke.

<?php
$query = mysql_query("SELECT * FROM gallery");
while ($row = mysql_fetch_array($query)) {
    echo "<a href='$_SERVER[PHP_SELF]?id=$row[id]'>Slet $row[filename]</a><br>";
}
?>

Udskriver et link til billeder i databasen sammen med et deletelink til den førstnævnte funktion.
Avatar billede dero Nybegynder
03. januar 2004 - 00:26 #15
ahv -> tak.. Jeg tænkte på, hvordan opretter jeg den database, jeg har lige prøvet, men det gik ikke så godt!?

Tak..

Mvh
Anders
Avatar billede ahv Nybegynder
03. januar 2004 - 00:29 #16
Tabellen skal hedde gallery, i denne skal du have et felt der hedder:
id, time, filename

Hvis du ønsker alt det med afstemning osv så skal den udvides en del, men forstod du kun skulle bruge kodestumperne og ikke en færdig løsnnig.
Avatar billede dero Nybegynder
03. januar 2004 - 02:04 #17
ahv -> tak..  Nu har jeg fået det meste til at virke. Ud over at den ikke ligger filerne op! Den laver alt det der i databasen, men hvis jeg går ind i biblioteket, så ligger filerne der ikke??

Mvh
Anders
Avatar billede ahv Nybegynder
03. januar 2004 - 15:30 #18
Har du givet mappen gallery nogen rettigheder?
Avatar billede dero Nybegynder
03. januar 2004 - 21:15 #19
ja, jeg den har fået 777..
Avatar billede dero Nybegynder
07. januar 2004 - 16:18 #20
yes sir.. Jeg har fundet fejlen.. Det var linjen med:

$dist = $_SERVER["DOCUMENT_ROOT"] ."/gallery/";

den hold ikke helt.. Den skal ændres til:

$dist = "/sigen/til/dit/system/location/gallery/";
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