TulorkMedlem sedan aug. 2004903 inlägg //Mappen med filerna
$upload_dir = 'download';
//Hämtar och Visar de tillgängliga filerna
$dir_handle = opendir($upload_dir) or die("Unable to open $upload_dir");
if ($dir_handle){
while ($file = readdir($dir_handle)) {
if($file == $col_value) {
//$filesize = filesize($upload_dir.$file);
echo "<a href=\"$upload_dir/$file\">$file</a><br>";
}
}
closedir($dir_handle);
}
Har lite problem att ersätta if satsen som matchar filerna mot filnamnen i databasen, vill ju gärna kunna visa alla filer som tillhör användaren.
emissionMedlem sedan dec. 19996 721 inlägg Berätta gärna lite mer. Om filnamnen finns lagrade i databasen finns det ju ingen anledning att låta filsystemet lista upp dem.
TulorkMedlem sedan aug. 2004903 inlägg filnamnet finns i databasen..men jaha, hur skulle jag annars göra? I övrigt, kan inte du/någon visa hur jag loopar ut dem ändå?
TulorkMedlem sedan aug. 2004903 inlägg Så här ser hela scriptet ut, tanken är att jag bara ska länka filer åt de användarna jag valt i för väg när jag uploadade
<?php
ob_start();
session_start();
// Kolla om inloggad = sessionen satt
if (!isset($_SESSION['sess_user'])){
header("Location: index.php");
exit;
}
if (isset($_GET['logout'])){
session_unset();
session_destroy();
header("Location: index.php");
exit;
}
?>
<html>
<head>
<link rel=StyleSheet href="setts/style.css" TYPE="text/css">
</head>
<body class="back">
<?php
include "conn.php"; // Databasanslutningen
// Performing SQL query sh
$query = "SELECT user FROM $mem_table WHERE id = ".$_SESSION['sess_id']."";
$result = mysql_query($query) or die('Query failed: ' . mysql_error());
// Printing results in HTML
echo "<p><strong>Välkommen</strong><p>";
//echo "$_SESSION['sess_userlevel'];";
while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) {
echo "\t<tr>\n";
foreach ($line as $col_value) {
echo "\t\t<td>$col_value</td>\n<br><br>";
}
echo "\t</tr>\n";
//echo "test $sess_userlevel";
}
echo "</table>\n";
// $query = mysql_query("SELECT id FROM UserFiles WHERE refID = ".$_SESSION['sess_id']."");
//while ($pic = mysql_fetch_array($query)){
// echo "<a href=\"bild.php?Id=".$pic['id']."\">mmmm</a>";
//}
// Free resultset
//mysql_free_result($result);
//---------------------------------------------------------------------------------------------------------
?>
<?
echo "<p><strong>Dina filer</strong><p>";
//#####################################################
//Hämtar filnamnet som valdes vid inläggning av filen##
//#####################################################
$query2 = "SELECT filename FROM UserFiles WHERE RefID = ".$_SESSION['sess_id']."";
$result2 = mysql_query($query2) or die('Query failed: ' . mysql_error());
//echo "<br>";
while ($line2 = mysql_fetch_array($result2, MYSQL_ASSOC)) {
// echo "\t<tr>\n";
foreach ($line2 as $col_value) {
// echo "\t\t<td>$col_value</td>\n";
}
// echo "\t</tr>\n";
}
//echo "</table>\n";
//echo "<br>";
//echo "<br>";
//Mappen med filerna
$upload_dir = 'download';
//Hämtar och Visar de tillgängliga filerna
$dir_handle = opendir($upload_dir) or die("Unable to open $upload_dir");
if ($dir_handle){
while ($file = readdir($dir_handle)) {
if($file == $col_value) {
//$filesize = filesize($upload_dir.$file);
echo "<a href=\"$upload_dir/$file\">$file</a><br>";
}
}
}closedir($dir_handle);
ob_end_flush();
?>
<?php
echo "<br><a href=\"index.php?logout=\">Logga ut</a>\n<br><br>";
?>
<a href="admin.php">Tillbaka </a><br><br>
</body>
</html>
DufferMedlem sedan mars 2003429 inlägg Som ovan talare sagt så är det väl dumt att gå igenom mappen med filer eftersom de redan finns i databasen där du hämtar filnamnen till en/flera specifik/a användare.
din if-sats: if($file == $col_value) kan endast bli true en gång (om äns det?) eftersom den sätts i en loop innan som spinner igenom utan att du gör något, det är ju inte direkt så att $col_value är en array()...
Om du vill använda din ganska otaktiska teknik som ovan är det bättre du sparar alla filnamnen i en array och kollar mot den om den filen du vill visa (if($file == $col_value)) är med i den.
Mitt förslag är att du bara helt enkelt hämtar filnamnen ur databasen till den eller de användare du vill ha
sen kör du:
while($resultRow = mysql_fetch_array($dinSqlSats) {
// För lite extra säkerhet så kollar vi att filen finns i verkligheten också
if(file_exists($resultRow['fileName'])
echo "<a href='$upload_dir/".$resultRow['fileName']."'>".$resultRow['fileName']."</a>";
}
Det där grejjar du fint ;-) komihåg att min kod ovan inte är plug n play utan du får ändra variablerna så det passar din databas.
Mvh
TulorkMedlem sedan aug. 2004903 inlägg ska jag vara ärlig så har jag inte den blekaste hur jag loopar ut alla rätta filnamn med samma RefID och sparar dem i en array...PHP är inte mitt "native" kodnings språk..skiljer sig inte så mkt va, men vissa saker är ??? för mig.. men det du/ni säger låter väldigt vettigt och så var väl tanken från början..
DufferMedlem sedan mars 2003429 inlägg Men skit i att stoppa det i en ny array, kör på mitt sista förslag, är dumt att lagra något i en till array när det redan finns i ett mysql resultat ;-)
Jag menar har du hyfsad kontroll vid upladdning av filer så sparar du ju ingen fil i databasen som verkligen inte finns på servern, och alltså blir mitt sista förslag kanon ;-)
mvh
TulorkMedlem sedan aug. 2004903 inlägg hehe, det funkade perfa..men inte if satsen file_exists, den böka till det...
tack ska du ha!!
DufferMedlem sedan mars 2003429 inlägg Oj sorry, glömde ju tamed hela söksträngen till filen, man måste ju ha med så man kommer till rätt mapp, det var mitt fel där!
if(file_exists($uploadFolder."/".$resultRow['fileName']))
Alltid bra att göra en extra koll ;-)