Automatisering foto's in map weergeven

Status
Niet open voor verdere reacties.

Stinuz

Terugkerende gebruiker
Lid geworden
14 jun 2003
Berichten
1.245
Hoihoi, ik werk op het moment aan een fotogalerij met gebruik van PHP en mysql.
Ik geef met PHP aan waar de foto's zich bevinden
PHP:
$imgdir = "http://[I]verborgensite.nl[/I]/fotos/
En vervolgens haal ik de namen van de foto's uit de database als volgt:
PHP:
echo "<td><a href=\n";
echo "javascript:popImage(\"$imgdir$link\");\n";
echo "><img src=$imgdir/thumbs/$link border=0></a></td>";
Zoals je ziet wordt de thumbnail van de foto weergeven, die zich bevind in /thumbs, en vervolgens wordt met een javacriptje de foto zelf geopend, waarvan de bestandsnaam wordt aangegeven met $link.

Dit werkt dus allemaal prima en wordt netjes in een tabel weergegeven maar ik heb zojuist 427 nieuwe foto's in de map geplaatst en als ik die allemaal handmatig toe moet voegen aan de database gaat dat nogal lang duren...

Wat ik dus graag zou willen weten is of er een alternatief is waarbij PHP gewoon alle foto's in de map detecteert en deze in de tabel zet, of nog liever een soort van automatiseringsproces waarbij alle unieke bestandsnamen in de map, worden toegevoegd in de database.

Er zijn maar 2 velden in de database; "ID' en "link". "ID" loopt automatisch op dus ik heb eigenlijk alleen een php scriptje nodig dat in het veld "link" de bestandsnaam opgeeft van alle nog niet bestaande bestandsnamen in de map. :thumb:
 
Laatst bewerkt:
Waarom allemaal in de database zetten, en niet direct vanuit de map weergeven?
 
Ik gebruik op het moment een script dat automatisch meerdere pagina's maakt. Voor elke 32 foto's wordt een nieuwe pagina gemaakt. Hiervoor gebruik ik mysql, het script telt dan het totale aantal items in de database en maakt het juiste aantal links etc.
 
Naja, ik heb het idee dat het wel makkelijker kan, maargoed:

PHP:
<?php

  // maak zelf even je database connectie enzo..

  $fileDir = "images/";

  $dirHandle = opendir($fileDir);

  while ( false !== ( $file = readdir ( $dirHandle ) ) ) {

    $sql = "INSERT INTO tabel (filename) VALUES ('" . mysql_real_escape_string ( $file ) . "')";
    mysql_query ( $sql );

  }

?>

Zo even uit het hoofd, dus er kunnen wat foutjes inzitten. Overigens zou ik een UNIQUE constraint op je tabel zetten, zodat je als je nieuwe foto's in je map zet, je het script opnieuw kunt runnen, en bestaande foto's automatisch geweigerd worden.
 
Na het hernoemen van wat bestanden met dingen als ( er in werkt het perfect, maar is het misschien mogelijk om bestandsnamen te negeren bij dit proces? Hij voegt op het moment namelijk ook de mapnaam 'thumbs' en het bestand 'thmbs.db' toe. :thumb:
 
PHP:
<?php
 
  // maak zelf even je database connectie enzo..
 
  $fileDir = "images/";
 
  $dirHandle = opendir($fileDir);
 
  while ( false !== ( $file = readdir ( $dirHandle ) ) ) {
 
    if ( stripos ( $file, '.jpg' ) > -1 || stripos( $file, '.png' ) > -1 || stripos( $file, '.gif' ) > -1 || stripos( $file, '.bmp' ) > -1 ) {
      $sql = "INSERT INTO tabel (filename) VALUES ('" . mysql_real_escape_string ( $file ) . "')";
      mysql_query ( $sql );
    }
 
  }
 
?>
 
Hmm als ik die code gebruik doet het script helemaal niks meer, krijg geen foutmelding ofzo maar er wordt niets toegevoegd.
 
Heb je error_reporting en display_errors wel aan staan?

Zo niet, zet dit eens boven de pagina:

PHP:
<?php

  error_reporting ( E_ALL );
  ini_set ( 'display_errors' , 1 );

?>
 
Wat is de filename van je bestanden? Want hij voegt alleen die 4 plaatjes formats toe; als je wat anders gebruikt (zoals jpeg ipv jpg bijv, of .tif files) dan worden die niet gepakt.

Ow trouwens, let er ook op dat je standaard in een map '.' en '..' als files hebt staan ,die moet je altijd negeren.
 
Ooh ja, ik vroeg me al af of ik niet een extensie vergeten was... ;)
 
Het zijn allemaal .jpg bestandjes en ook met dat foutmelding scriptje erboven doet het script nog altijd niets :(
 
Heb je het ook in de database gecontroleerd? Want er is ook geen output van het script, met andere woorden, er verschijnt als het goed is niets op het scherm.
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan