/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
Gøre array tilgængeligt i to forskellige f~
Fra : Peter Anskjær


Dato : 24-05-04 18:04

Hej Ng
Jeg er ved at lave et galleri hvor jeg i to forskellige filer (index.php og
view.php) gerne vil have adgang til et array der indeholder alle filnavne i
en mappe. I index skal jeg bruge alle filnavnene for at vise thumbs, i view
skal jeg vise det store billede og vil gerne have next og previous links.
Galleriet skal være så let som muligt at opdatere, derfor har jeg lavet det
uden database eller fil til at holde styr på hvilke billeder der er.
Mit problem er hvordan jeg smartest muligt gør information om mappeindhold
tilgængeligt i begge filer, jeg kunne gennemløbe mappen hver gang enten
index eller view kaldes, men det er jeg ikke voldsomt vild med da det vel er
ineffektivt.
Jeg har kigget lidt på sessions, men det synes jeg heller ikke er godt til
dette formål, så kan jeg jo ikke linke direkte til de store billeder og der
er en masse besvær med at fremkalde arrayet synes jeg.
Kan man lave noget med en klasse hvor man lader denne holde arrayet, eller
vil man ikke kunne komme i kontakt med en instans af en klasse lavet i den
ene fil fra den anden fil?
Kort og godt, er der noget alternativ til at gennemløbe mappen hver gang et
billede skal vises? Hvis der ikke er, hvor slemt køretidsmæssigt er det så
at gennemløbe mappen for hver billedvisning?

Mvh
Peter



 
 
Kim Emax (24-05-2004)
Kommentar
Fra : Kim Emax


Dato : 24-05-04 18:53

In the news:40b22ae0$0$255$edfadb0f@dread12.news.tele.dk,
Peter Anskjær <peter@_fjern_dette_nskjaer.dk> wrote:

> Jeg har kigget lidt på sessions, men det synes jeg heller ikke er
> godt til dette formål, så kan jeg jo ikke linke direkte til de store
> billeder og der er en masse besvær med at fremkalde arrayet synes jeg.

sessions er vejen frem. Som jeg forstod det den anden dag, så har du alle
thumbnails i en seperart mappe ik? Så kan du bare lave en duplikation af dit
billede array:

$_SESSION[pics] = "1.jpg";
$_SESSION[pics] = "2.jpg";
$_SESSION[pics] = "3.jpg";

$_SESSION[thumbs] = $_SESSION[pics];

så linker du bare på thumbnail billedet med

print "<A HREF=\"stortbillede.php?id=" . $_SESSION[thumb][$show] . "\">";

og på stortbillede.php viser du $_SESSION[pics][$id] // $id = $_REQUEST[id];

> Kan man lave noget med en klasse hvor man lader denne holde arrayet,
> eller vil man ikke kunne komme i kontakt med en instans af en klasse
> lavet i den ene fil fra den anden fil?

klassens data kan kun overføres via database, sessions eller en fil

> Kort og godt, er der noget alternativ til at gennemløbe mappen hver
> gang et billede skal vises? Hvis der ikke er, hvor slemt
> køretidsmæssigt er det så at gennemløbe mappen for hver billedvisning?

kommer an på antal billder

--
Take Care
Kim Emax - master|minds - Vi tænker IT for dig...
http://www.masterminds.dk - http://www.emax.dk



Peter Anskjær (24-05-2004)
Kommentar
Fra : Peter Anskjær


Dato : 24-05-04 19:34

"Kim Emax" <newsgroup@remove-emax.dk> skrev i en meddelelse
news:ZDqsc.2031$Vf.89864@news000.worldonline.dk...
> In the news:40b22ae0$0$255$edfadb0f@dread12.news.tele.dk,
>
> sessions er vejen frem. Som jeg forstod det den anden dag, så har du alle
> thumbnails i en seperart mappe ik? Så kan du bare lave en duplikation af
dit
> billede array:
>
> $_SESSION[pics] = "1.jpg";
> $_SESSION[pics] = "2.jpg";
> $_SESSION[pics] = "3.jpg";
>
> $_SESSION[thumbs] = $_SESSION[pics];
>
> så linker du bare på thumbnail billedet med
>
> print "<A HREF=\"stortbillede.php?id=" . $_SESSION[thumb][$show] . "\">";
>
> og på stortbillede.php viser du $_SESSION[pics][$id] // $id =
$_REQUEST[id];
>
Ja, jeg har thumbs til at ligge i et underkatalog og de hedder det samme som
de originale.
Men med sessions vil det vel resultere i at jeg ikke kan linke direkte til
et billede med galleriinterfacet?

> > Kan man lave noget med en klasse hvor man lader denne holde arrayet,
> > eller vil man ikke kunne komme i kontakt med en instans af en klasse
> > lavet i den ene fil fra den anden fil?
>
> klassens data kan kun overføres via database, sessions eller en fil
>
Det tænkte jeg nok.

> > Kort og godt, er der noget alternativ til at gennemløbe mappen hver
> > gang et billede skal vises? Hvis der ikke er, hvor slemt
> > køretidsmæssigt er det så at gennemløbe mappen for hver billedvisning?
>
> kommer an på antal billder
>
Mjahh, det kan du vel have ret i. Det kommer til at dreje sig om ca. 20
billeder i en folder vil jeg tro, nok ikke flere.
Så enten er løsningen sessions eller også er det at gennemløbe mappen for
hver visning, hvad vil du anbefale og kan jeg komme uden om problemet med at
linke direkte til et billede i galleriet hvis jeg bruger sessions?

Mvh
Peter



Per Thomsen (24-05-2004)
Kommentar
Fra : Per Thomsen


Dato : 24-05-04 19:23

Peter Anskjær wrote:
> Hej Ng
[klip]
> Mit problem er hvordan jeg smartest muligt gør information om mappeindhold
> tilgængeligt i begge filer, jeg kunne gennemløbe mappen hver gang enten
> index eller view kaldes, men det er jeg ikke voldsomt vild med da det vel er
> ineffektivt.
[klip - vil ikke bruge sessions]
> Kan man lave noget med en klasse hvor man lader denne holde arrayet, eller
> vil man ikke kunne komme i kontakt med en instans af en klasse lavet i den
> ene fil fra den anden fil?

Ikke uden sessions (eller serialisering -- se længere nede).

> Kort og godt, er der noget alternativ til at gennemløbe mappen hver gang et
> billede skal vises? Hvis der ikke er, hvor slemt køretidsmæssigt er det så
> at gennemløbe mappen for hver billedvisning?
>

Brug serialize og unserialize og send den serialiserde variable med som
input til view scriptet (og evt. med tilbage til index scriptet).

I index.php:
$serialize = serialize($pictures);
// link eks.
echo '<a href="view.php?no='.$picNo.'&pictures='.$serialized.'">';
echo '<img bla bla bla>';
echo '</a>';

I view.php:
$pictures = unserialize($_REQUEST['pictures']);

Men det kommer til at give nogle grimme url'er.

Du kan også godt (un)serialize et objekt, men du skal sørge for at
klassen som objektet er en instans af er erklæret inden du unserializer
objektet.

http://dk.php.net/serialize
http://dk.php.net/unserialize

MVH Per Thomsen,
http://www.pert.dk/

Peter Anskjær (24-05-2004)
Kommentar
Fra : Peter Anskjær


Dato : 24-05-04 19:54


"Per Thomsen" <pert@pert.dk> skrev i en meddelelse
news:40b23d96$0$441$edfadb0f@dread14.news.tele.dk...
[klip]
>
> Ikke uden sessions (eller serialisering -- se længere nede).
>
øv.

>
> Brug serialize og unserialize og send den serialiserde variable med som
> input til view scriptet (og evt. med tilbage til index scriptet).
>
> I index.php:
> $serialize = serialize($pictures);
> // link eks.
> echo '<a href="view.php?no='.$picNo.'&pictures='.$serialized.'">';
> echo '<img bla bla bla>';
> echo '</a>';
>
> I view.php:
> $pictures = unserialize($_REQUEST['pictures']);
>
> Men det kommer til at give nogle grimme url'er.
>
> Du kan også godt (un)serialize et objekt, men du skal sørge for at
> klassen som objektet er en instans af er erklæret inden du unserializer
> objektet.
>
Tak, jeg kan forestille mig at det giver nogle meget grimme url'er, men det
vil løse problemet. Det er et lidt irreterende at det ikke kan laves
flottere synes jeg, hvordan ville du løse problemet?

Mvh
Peter



Per Thomsen (25-05-2004)
Kommentar
Fra : Per Thomsen


Dato : 25-05-04 08:00

Peter Anskjær wrote:
> "Per Thomsen" <pert@pert.dk> skrev i en meddelelse
> news:40b23d96$0$441$edfadb0f@dread14.news.tele.dk...
> [klip]
[klip]
>>
>>I index.php:
>>$serialize = serialize($pictures);
>>// link eks.
>>echo '<a href="view.php?no='.$picNo.'&pictures='.$serialized.'">';
>>echo '<img bla bla bla>';
>>echo '</a>';
>>
>>I view.php:
>>$pictures = unserialize($_REQUEST['pictures']);
>>
>>Men det kommer til at give nogle grimme url'er.
>>
[klip]
>
> Tak, jeg kan forestille mig at det giver nogle meget grimme url'er, men det
> vil løse problemet. Det er et lidt irreterende at det ikke kan laves
> flottere synes jeg, hvordan ville du løse problemet?
>
Jeg tror jeg ville vælge at bruge sessions.
Men ikke helt på den måde, som Kim Emax foreslog.

Jeg vil holde fast i $pictures array'et, og så putte det i en session
variabel.

Både i index.php og view.php vil jeg så starte med at se om denne
variable er sat, og hvis den ikke er det, så genererer og sætte den.


Både i index.php og view.php:
session_start();
if( !isset($_SESSION['pictures']) ) {
   //Generer array med variable
   $pictures = array();
   if( ($dh=opendir('.')) ) {
      while( $file = readdir($dh) ) {
         if( !is_dir($file) ) {
            array_push($pictures,$file);
         }
      }
   }
   // Eller hvordan du nu har lyst til at gøre det.

   $_SESSION['pictures'] = $pictures;   
} else {
   $pictures = $_SESSION['pictures'];
}
//Resten af koden

På den måde kan du stadig linke direkte til view.php?pic=something eller
index.php. Findes pictures array'et ikke i sessionen, vil det det blive
lavet, men når du kommer tilbage til siden (i samme session), vil det
være tilgængeligt.

Hvis du vil holde fast i ikke at bruge sessions, har jeg et andet
forslag til at fjerne de grimme url'er: Brug POST.

Lav det serializede $pictures ($serialized = serialize($pictures);
Lav en form, der omslutter hele siden, i toppen af denne form:
echo '<input type="hidden" name="pictures" value="'.$serialized.'">';

Jeg går ud fra at du på nuværende tidspunkt viser thumbs i <A*></A>
tags, men gør det i stedet med
echo '<input type="image" style="width: 32px; height: 32px;"
alt="'.$thumb.'" name="picture" value="'.$thumb.'">';

Tjek så i toppen af siden om $_POST['pictures'] er sat.

Her er en grov og utestet skitse:

Ny fil function.generatePicturesArr.php:
<?php
function generatePicturesArr() {
   //Generer array med variable
   $pictures = array();
   if( ($dh=opendir('.')) ) {
      while( $file = readdir($dh) ) {
         if( !is_dir($file) ) {
            array_push($pictures,$file);
         }
      }
   }
   // Eller hvordan du nu har lyst til at gøre det.
   return $pictures;
}
?>

index.php:
<?php
if( strcasecmp($_SERVER['REQUEST_METHOD'],'POST')!==0 ) {
   include_once('function.generatePictures.php');
   $pictures = generatePictures();
   $serialized = serialize($pictures);
} else {
   if( isset($_POST['serialized']) ) {
      $serialized = $_POST['serialized'];
      $pictures = unserialize($serialized);
   } else {
      include_once('function.generatePictures.php');
      $pictures = generatePictures();
      $serialized = serialize($pictures);
   }
}
echo '<form action="view.php" method="post">';
echo '<input type="hidden" name="serialized" value="'.$serialized.'">';
foreach($pictures as $picture) {
   echo '<input type="image" style="width: 32px; height:32px;
value="'.$picture.'" src="thumbs/'.$picture.'">';
}
echo '</form>';
?>

view.php:
<?php
if( strcasecmp($_SERVER['REQUEST_METHOD'],'POST')!==0 ) {
   include_once('function.generatePictures.php');
   $pictures = generatePictures();
   $serialized = serialize($pictures);

   // Så du også kan linke direkte til et billede
   if( isset($_GET['picture']) ) {
      $picture = $_GET['picture'];
   } else {
      $picture = $pictures[0];
      // eller smid en fejl eller hvad nu du har lyst til.
   }
} else {
   if( isset($_POST['serialized']) ) {
      $serialized = $_POST['serialized'];
      $pictures = unserialize($serialized);
   } else {
      include_once('function.generatePictures.php');
      $pictures = generatePictures();
      $serialized = serialize($pictures);
   }
   if( isset($_POST['picture']) ) {
      $picture = $_POST['$picture'];
   } else {
      $picture = $pictures[0];
      // eller smid en fejl eller hvad nu du har lyst til.
   }
}

$currentKey = array_search($picture);
if( $currentKey>0 ) {
   $prevKey = $currentKey-1;
   $prevForm = '<form action="view.php" method="post">';
   $prevForm.= '<input type="hidden" name="serialized"
value="'.$serialized.'">';
   $prevForm.= '<input type="hidden" name="picture"
value="'.$pictures[$prevKey].'">';
   $prevForm.= '<input type="submit" value="Tilbage">';
   $prevForm.= '</form>';
} else {
   $prevForm = '';
}
if( $currentKey<(count($pictures)-1) ) {
   $nextKey = $currentKey+1;
   $nextForm = '<form action="view.php" method="post">';
   $nextForm.= '<input type="hidden" name="serialized"
value="'.$serialized.'">';
   $nextForm.= '<input type="hidden" name="picture"
value="'.$pictures[$nextKey].'">';
   $nextForm.= '<input type="submit" value="Frem">';
   $nextForm.= '</form>';
} else {
   $nextForm = '';
}

$upForm = '<form action="index.php" method="post">';
$upForm.= '<input type="hidden" name="serialized" value="'.$serialized.'">';
$upForm.= '<input type="submit" value="Op">';
$upForm.= '</form>';

list($width,$height,$type,$attr) = getimagesize($picture);
echo '<img src="'.$picture.'" '.$attr.' alt="'.$picture.'"><br/>';

echo $prevForm.$upForm.$nextForm;
?>

Så har du ingen vildt grimme url'er, ingen session og du kan stadig
linke direkte til et billede i view.php

Håber du forstår ideen.

MVH Per Thomsen,
http://www.pert.dk/


Peter Anskjær (25-05-2004)
Kommentar
Fra : Peter Anskjær


Dato : 25-05-04 19:32

"Per Thomsen" <pert@pert.dk> skrev i en meddelelse
news:40b2eef9$0$437$edfadb0f@dread14.news.tele.dk...
> Peter Anskjær wrote:
> Jeg tror jeg ville vælge at bruge sessions.
> Men ikke helt på den måde, som Kim Emax foreslog.
>
> Jeg vil holde fast i $pictures array'et, og så putte det i en session
> variabel.
>
> Både i index.php og view.php vil jeg så starte med at se om denne
> variable er sat, og hvis den ikke er det, så genererer og sætte den.
>
<snip en masse kode>

Tak for alt koden, jeg vil kigge grundigt i den hvis jeg får problemer. Jeg
vil gerne lære php lidt bedre at kende, derfor vil jeg helst selv skrive
koden til galleriet. Men jeg synes din løsning er god, har tænkt mig at
kalde view med index-nr og mappe-navn, der er nemlig flere mapperi galleriet
(en mappe for hvert emne), view vil jeg bare kalde med mappenavn. Jeg vil så
lige finde ud af om jeg behøver kalde filerne med session-id, det synes jeg
har set er nødvendigt på nogle installationer.
Det har på et tidspunkt slået mig at jeg synes det var mærkeligt at de
fleste avancerede gallerier brugte database, nu ved jeg hvorfor

Mange tak for hjælpen.

Mvh
Peter



Martin Geisler (25-05-2004)
Kommentar
Fra : Martin Geisler


Dato : 25-05-04 14:51

Per Thomsen <pert@pert.dk> writes:

> Hvis du vil holde fast i ikke at bruge sessions, har jeg et andet
> forslag til at fjerne de grimme url'er: Brug POST.

Det forslag kan jeg ikke lide --- dit andet forslag med at tjekke
efter om der allerede er lavet et array med billederne i den nuværende
session er meget bedre.

Med POST vil folk ikke umiddelbart kunne lave et bookmark til et
bestemt billed da URL'en ikke ændrer sig og desuden tror jeg ikke, at
søgemaskiner vil følge disse POST-billed-links.

Idéen med POST og GET er vist nok, at POST bruges til requests der har
en effekt på serveren, og disse vil derfor ikke bliver cachet og skal
heller ikke gentages uden brugeren accept. Omvendt bruges GET til
forespørgsler der er state-less, såsom et søgeresultat i Google eller
visning at billed nr. 42.

--
Martin Geisler My GnuPG Key: 0xF7F6B57B

PHP EXIF Library | PhpWeather | PhpShell
http://pel.sf.net/ | http://phpweather.net/ | http://gimpster.com/
Read/write EXIF data | Show current weather | A shell in a browser

Per Thomsen (26-05-2004)
Kommentar
Fra : Per Thomsen


Dato : 26-05-04 07:30

Martin Geisler wrote:
> Per Thomsen <pert@pert.dk> writes:
>
>
>>Hvis du vil holde fast i ikke at bruge sessions, har jeg et andet
>>forslag til at fjerne de grimme url'er: Brug POST.
>
>
> Det forslag kan jeg ikke lide --- dit andet forslag med at tjekke
> efter om der allerede er lavet et array med billederne i den nuværende
> session er meget bedre.
>
> Med POST vil folk ikke umiddelbart kunne lave et bookmark til et
> bestemt billed da URL'en ikke ændrer sig og desuden tror jeg ikke, at
> søgemaskiner vil følge disse POST-billed-links.
>
> Idéen med POST og GET er vist nok, at POST bruges til requests der har
> en effekt på serveren, og disse vil derfor ikke bliver cachet og skal
> heller ikke gentages uden brugeren accept. Omvendt bruges GET til
> forespørgsler der er state-less, såsom et søgeresultat i Google eller
> visning at billed nr. 42.
>

Bare for en god ordens skyld vil jeg lige sige, at jeg er fuldstændig
enig i dine kommentarer :).
POST-forslaget var også kun ment til hvis Peter partout ikke vil bruge
sessions.

MVH Per Thomsen,
http://www.pert.dk/

Peter Anskjær (26-05-2004)
Kommentar
Fra : Peter Anskjær


Dato : 26-05-04 08:04

"Per Thomsen" <pert@pert.dk> skrev i en meddelelse
news:40b43970$0$475$edfadb0f@dread14.news.tele.dk...
> Martin Geisler wrote:
> > Per Thomsen <pert@pert.dk> writes:
> >
> >
> >>Hvis du vil holde fast i ikke at bruge sessions, har jeg et andet
> >>forslag til at fjerne de grimme url'er: Brug POST.
> >
> >
> > Det forslag kan jeg ikke lide --- dit andet forslag med at tjekke
> > efter om der allerede er lavet et array med billederne i den nuværende
> > session er meget bedre.
> >
> > Med POST vil folk ikke umiddelbart kunne lave et bookmark til et
> > bestemt billed da URL'en ikke ændrer sig og desuden tror jeg ikke, at
> > søgemaskiner vil følge disse POST-billed-links.
> >
> > Idéen med POST og GET er vist nok, at POST bruges til requests der har
> > en effekt på serveren, og disse vil derfor ikke bliver cachet og skal
> > heller ikke gentages uden brugeren accept. Omvendt bruges GET til
> > forespørgsler der er state-less, såsom et søgeresultat i Google eller
> > visning at billed nr. 42.
> >
>
> Bare for en god ordens skyld vil jeg lige sige, at jeg er fuldstændig
> enig i dine kommentarer :).
> POST-forslaget var også kun ment til hvis Peter partout ikke vil bruge
> sessions.
>
Så vil jeg da også skrive her, jeg vil have koden pænest muligt uden at gå
på kompromis, jeg brød mig heller ikke om post-metoden.
Jeg vender tilbage hvis jeg får problemer eller når galleriet er færdigt og
klart til invielse

Mvh
Peter



Martin Geisler (24-05-2004)
Kommentar
Fra : Martin Geisler


Dato : 24-05-04 20:57

"Peter Anskjær" <peter@_fjern_dette_nskjaer.dk> writes:

> Mit problem er hvordan jeg smartest muligt gør information om
> mappeindhold tilgængeligt i begge filer, jeg kunne gennemløbe mappen
> hver gang enten index eller view kaldes, men det er jeg ikke
> voldsomt vild med da det vel er ineffektivt.

Så længe det ikke drejer sig om flere tusinde filer, så burde det ikke
være noget problem --- operativsystemet skulle meget gerne sørge for
at holde de berørte diskblokke i sin diskcache.

En lille uvidenskabelig test på min egen maskine giver omkring 8
millisekunder for at udføre følgende test:

<?php
$start = microtime();

$entries = array();
$d = dir('/dev');

while (($entry = $d->read()) !== false) {
$entries[] = $entry;
}

$d->close();

printf("/dev: %d files.\n", count($entries));

$end = microtime();

$start = explode(' ', $start);
$end = explode(' ', $end);

printf("Time taken: %.2f milliseconds.\n",
($end[0]+$end[1]-$start[0]-$start[1])*1000);
?>

Her bliver /dev løbet igennem, og derved bliver der fundet over 1600
filer.

--
Martin Geisler My GnuPG Key: 0xF7F6B57B

PHP EXIF Library | PhpWeather | PhpShell
http://pel.sf.net/ | http://phpweather.net/ | http://gimpster.com/
Read/write EXIF data | Show current weather | A shell in a browser

Martin Geisler (24-05-2004)
Kommentar
Fra : Martin Geisler


Dato : 24-05-04 21:04

"Peter Anskjær" <peter@_fjern_dette_nskjaer.dk> writes:

> Jeg er ved at lave et galleri hvor jeg i to forskellige filer
> (index.php og view.php) gerne vil have adgang til et array der
> indeholder alle filnavne i en mappe. I index skal jeg bruge alle
> filnavnene for at vise thumbs, i view skal jeg vise det store
> billede og vil gerne have next og previous links.

Lige endnu en idé... Som et alternativ til at løbe mappen igennem, så
kunne du jo også navngive dine billeder sekvensielt som 1.jpg, 2.jpg,
...., n.jpg. Så burde det være nemt at linke til nummer 42 og også
nemt for dig at lave links til det næste og forrige billede --- bare
tjek med file_exists() om du er nået til det sidste billede. Her vil
resultatet af file_exists() blive cached at PHP så det bliver ikke
meget hurtigere.

Men med det system får du selvfølgelig et større eller mindre bøvl
hvis du har tænkt dig at ændre rækkefølgen af dine billeder --- folk
der følger gamle links kan risikere at se et andet billede end de
forventer hvis numrene har ændret sig.

--
Martin Geisler My GnuPG Key: 0xF7F6B57B

PHP EXIF Library | PhpWeather | PhpShell
http://pel.sf.net/ | http://phpweather.net/ | http://gimpster.com/
Read/write EXIF data | Show current weather | A shell in a browser

Peter Anskjær (24-05-2004)
Kommentar
Fra : Peter Anskjær


Dato : 24-05-04 21:23

"Martin Geisler" <gimpster@gimpster.com> skrev i en meddelelse
news:87smdppp73.fsf@gimpster.sg.bnaa.dk...
> "Peter Anskjær" <peter@_fjern_dette_nskjaer.dk> writes:
>
> Lige endnu en idé... Som et alternativ til at løbe mappen igennem, så
> kunne du jo også navngive dine billeder sekvensielt som 1.jpg, 2.jpg,
> ..., n.jpg. Så burde det være nemt at linke til nummer 42 og også
> nemt for dig at lave links til det næste og forrige billede --- bare
> tjek med file_exists() om du er nået til det sidste billede. Her vil
> resultatet af file_exists() blive cached at PHP så det bliver ikke
> meget hurtigere.
>
> Men med det system får du selvfølgelig et større eller mindre bøvl
> hvis du har tænkt dig at ændre rækkefølgen af dine billeder --- folk
> der følger gamle links kan risikere at se et andet billede end de
> forventer hvis numrene har ændret sig.
>
Jeg har haft overvejet noget lign., men jeg vil helst at billederne kan
tages direkte fra kamereaet og op på serveren mere eller mindre, altså at de
ikke behøver at blive omdøbt men blot skal smides i de rigtige mapper.
Men det lyder jo til at det går ganske hurtigt med at gennemløbe en mappe
med ca. 20 filer, jeg tror jeg vælger det så, men vil lige vente og høre om
der kommer andre gode forslag.

Mvh
Peter



Martin Geisler (24-05-2004)
Kommentar
Fra : Martin Geisler


Dato : 24-05-04 23:47

"Peter Anskjær" <peter@_fjern_dette_nskjaer.dk> writes:

> Jeg har haft overvejet noget lign., men jeg vil helst at billederne
> kan tages direkte fra kamereaet og op på serveren mere eller mindre,
> altså at de ikke behøver at blive omdøbt men blot skal smides i de
> rigtige mapper.

Hvis du kan udføre Zsh shell scripts, så kan dette script hjælpe dig.
Det vil omdøbe alle filer i den nuværende mappe som matcher på
'*xxx.jpg' hvor xxx er et tal sådan at alle filer til sidst er
fortløbende numereret.

Så når jeg henter nye billeder ind i min mappe, så kører jeg bare
scriptet bagefter, og så bliver de nye billeder lagt ind i
rækkefølgen. Hvis jeg senere slettet et billede bliver senere
billeder omnumereret sådan at der ikke er nogen huller.

#!/bin/zsh

for ext in ${1:-jpg}; do
i=0
for file in *<->.$ext(n); do
i=$((i+1));
if [[ $file != $i.$ext && ! -e $i.$ext ]]; then
echo "Renaming $file to $i.$ext"
mv $file $i.$ext
chmod -x $i.$ext
fi
done
done


--
Martin Geisler My GnuPG Key: 0xF7F6B57B

PHP EXIF Library | PhpWeather | PhpShell
http://pel.sf.net/ | http://phpweather.net/ | http://gimpster.com/
Read/write EXIF data | Show current weather | A shell in a browser

Peter Anskjær (25-05-2004)
Kommentar
Fra : Peter Anskjær


Dato : 25-05-04 19:38


"Martin Geisler" <gimpster@gimpster.com> skrev i en meddelelse
news:87ekp9moij.fsf@gimpster.sg.bnaa.dk...
> "Peter Anskjær" <peter@_fjern_dette_nskjaer.dk> writes:
>
> > Jeg har haft overvejet noget lign., men jeg vil helst at billederne
> > kan tages direkte fra kamereaet og op på serveren mere eller mindre,
> > altså at de ikke behøver at blive omdøbt men blot skal smides i de
> > rigtige mapper.
>
> Hvis du kan udføre Zsh shell scripts, så kan dette script hjælpe dig.
> Det vil omdøbe alle filer i den nuværende mappe som matcher på
> '*xxx.jpg' hvor xxx er et tal sådan at alle filer til sidst er
> fortløbende numereret.
>
Har webhotel ude i byen, så tvivler på jeg kan noget så eksotisk.

> Så når jeg henter nye billeder ind i min mappe, så kører jeg bare
> scriptet bagefter, og så bliver de nye billeder lagt ind i
> rækkefølgen. Hvis jeg senere slettet et billede bliver senere
> billeder omnumereret sådan at der ikke er nogen huller.
>

Jeg har valgt at lave det med sessions i stedet, den løsning foreslået af
Per Thomsen som du selv har kommenteret. Jeg har tænkt mig at bruge index,
så jeg risikerer at links lavet før opdatering ikke er korrekte efter
opdatering, men for de fleste mappers vedkommende vil indholdet ikke blive
ændret andet end ved oprettelse. Det er selvføligeligt meget smart at man
kan omdøbe alle filerne, men er man nødt til at køre scriptet. Det er
selvfølgeligt noget krævende, men jeg vil meget gerne at man ikke skal gøre
andet end at uploade billederne. Ham der skal have hjemmesiden er ikke god
til at få opdateret, derfor skal det være så smertefrit som muligt.
Men ellers tak for forslaget, det kan være jeg selv kan bruge det på et
tidspunkt.

Mvh
Peter



Søg
Reklame
Statistik
Spørgsmål : 177501
Tips : 31968
Nyheder : 719565
Indlæg : 6408527
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste