[PHP] bestanden tellen?

Problemen met PHP, ASP, CGI, MySQL? Post ze hier!

[PHP] bestanden tellen?

Berichtdoor FSX » ma apr 02, 2007 15:03

Ik ben bezig met een addon voor een mod voor PunBB. Maar ik heb wat hulp nodig.

Er is een tijdje geleden een mod gepost voor het PunBB forum. Met die mod kun je plaatjes uploaden en word er ook een thumbnail van dat plaatje gemaakt en het ID nummer van de gebruiker word in de naam van het plaatje gezet (voorbeeld: 2_naamplaatje.png).

Nou kreeg ik een idee. Als je plaatje per ID kunt laten zien dan kun je er voor zorgen dat elke gebruiker op het forum een eigen gallerij krijgt.

Deze addon voor die 'plaatje upload mod' is al bij versie 1.1.
Hier is de link: http://www.punres.org/viewtopic.php?id=3161

Ik wou er graag nog een soort van upload limiet op zetten, maar ik zou niet weten hoe ik dat voorelkaar kan krijgen. Ik heb wel scripts gezien die alle bestanden ik een map kunnen tellen, maar ik heb iets nodig dat de bestanden telt met een bepaalde ID.

Zou iemand mij hierbij kunnen helpen?
Alvast bedankt :D.
FSX
 
Berichten: 14
Geregistreerd: do nov 16, 2006 19:43

Berichtdoor deWit » ma apr 02, 2007 15:41

Dus, als ik je goed begrijp;

Je wil kijken hoeveel bestanden er in een map zitten, en die qua naam voldoen aan een bepaalde manier van nummeren?

If so; even uit EPS gekopieerd::

[php]
// Try to open the url.

// $sRootDir is de map waar je in wil gaan werken

$DirHandle = dir($sRootDir);
if ($DirHandle === false || $sDir == '../')
{
echo 'Kapot'; exit;
}

//Do for every item in this dir.
while(false !== ($Item = $DirHandle->read()) )
{
//Check if a item should be skipped
$aSkip = array('.', '..', 'index.php');
if(!in_array($Item, $aSkip))
{
// if the item is a dir, add it to the dirs array
if(is_dir($sRootDir.$Item))
{
$Dirs[] = $Item;
}

// if the item is a file, add it to the files array
if(is_file($sRootDir.$Item))
{
$Files[] = $Item;
}
}
}
// close the dir.
$DirHandle->close();
[/php]

Je krijgt dan twee array's, waarin de namen van de mappen in die directory zitten, en de namen van de files. Vervolgens kan je de files doorlopen met:

[php]
// Check if there are any file's in this dir.
if (isset($Files) && is_array($Files))
{



foreach($Files as $key => $sFile)
{
// doe iets

}
}
else
{
echo 'Geen bestanden in de desbetreffende map';
}

[/php]
Strik je veter, en breek de tent af!
deWit
TWnet Crew
 
Berichten: 236
Geregistreerd: za aug 12, 2006 17:24
Woonplaats: Enschede

Berichtdoor FSX » ma apr 02, 2007 15:51

Ik gebruikt nu dit om het mapje uit te lezen:

[php]<table cellpadding="0" width="100%">
<tr><th style="text-align: right;" colspan="<?php echo ("$rows"); ?>"><a href="uploadimg.php">Upload images to gallery&nbsp;</a></th></tr>
<tr>
<?php
$url = (isset($_GET['id'])) ? $_GET['id'] : '';
$id = "".$url."_";
$d=opendir("uploads/");
while ($bestanden=readdir($d) )
{
$bnaam="uploads/".$bestanden;
if (is_file($bnaam) and eregi($id,$bnaam) )
{
if($row == $rows)
{
echo"</tr>";
echo ("<td style=\"text-align: center;border: 0px;\"><a href=\"uploads/".$bestanden."\" onclick=\"window.open('uploads/".$bestanden."','".$imgname."','width=800,height=600,scrollbars=yes,toolbar=false,location=false,left='+(screen.availWidth/2-400)+',top='+(screen.availHeight/2-300)+''); return false\" target=\"_blank\"><img style=\"border: 1px solid #000;\" src=\"uploads/thumbs/".$bestanden."\" alt=\"$bestanden\" /></a><br /><input style=\"width: 80%;padding: 0px 2px 0px 2px;\" type=\"text\" value=\"[thumb]".$bestanden."[/thumb]\" /></td>");
$row="1";
}
else
{
echo ("<td style=\"text-align: center;border: 0px;\"><a href=\"uploads/".$bestanden."\" onclick=\"window.open('uploads/".$bestanden."','".$imgname."','width=800,height=600,scrollbars=yes,toolbar=false,location=false,left='+(screen.availWidth/2-400)+',top='+(screen.availHeight/2-300)+''); return false\" target=\"_blank\"><img style=\"border: 1px solid #000;\" src=\"uploads/thumbs/".$bestanden."\" alt=\"$bestanden\" /></a><br /><input style=\"width: 80%;padding: 0px 2px 0px 2px;\" type=\"text\" value=\"[thumb]".$bestanden."[/thumb]\" /></td>");
$row++;
}
}
}
closedir($d);
?>
</tr></table>[/php]

Met eregi() zoek ik naar de ID die uit de url word gevist met $url = (isset($_GET['id'])) ? $_GET['id'] : '';.

Als er dan bijvoorbeeld 5 bestanden met het ID 2 zijn gevonden en dat het upload limiet is dat dan het upload linkje niet meer te zien is. Hoe kan ik zoiets vorelkaar krijgen?

Bedank voor dat scriptje :D, dat ga ik even uitproberen.

[opmerking - 2-4-2007 20:57 - deWit - code tags omgezet in phptags]
FSX
 
Berichten: 14
Geregistreerd: do nov 16, 2006 19:43

Berichtdoor R0berto[] » di apr 03, 2007 22:25

het klopt niet wat je met je $row en $rows doet.
ten eerste is $rows niet geinitieerd (gedefineerd), en ten tweede maak je van $row een string, terwijl het een integer is...
Avatar gebruiker
R0berto[]
TWnet Crew
 
Berichten: 280
Geregistreerd: vr aug 11, 2006 22:08

Berichtdoor FSX » wo apr 04, 2007 12:37

Ik heb 't ergens gevonden op internet...en 't werkt ook.
FSX
 
Berichten: 14
Geregistreerd: do nov 16, 2006 19:43


Keer terug naar Server Side Scripting

Wie is er online

Gebruikers op dit forum: Geen geregistreerde gebruikers en 1 gast

cron