/ 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
foreach() problem...
Fra : Dennis Munding


Dato : 01-10-08 12:29

Hej NG!

Jeg har en lille foreach-nød, som jeg håber, at I kan hjælpe med at
knække...

Det drejer sig om udskrivning af thumbs og link til større billeder...

Jeg har forsøgt flg.:

// VIRKER NÆSTEN!!
$billede = glob('img/Badartikler/*.jpg');

foreach($billede as $value) {
echo "<div class='billede'>";
echo "<a href='/".$value."' onclick='return openThumbnail(this);'
title=''><img class='foto' src='/".$value."' alt='".$strTitle."' title=''
/></a>";
echo "</div>\n";
}

Problemet her er, af $value er samme billede - logisk nok.
Det skulle jeg gerne have delt op, så det er et stort og et lille billede.
Så har jeg forsøgt mig med:

// FORSØG 1
$thumb1 = glob('img/Badartikler/*-1.jpg'); // Eks. på billede-navn:
Badartikler01-1 (-1 angiver at det en thumb)
$image1 = glob('img/Badartikler/*-2.jpg'); // Eks. på billede-navn:
Badartikler01-2 (-2 angiver at det et stort billede)

foreach($thumb1 as $valuet1) && foreach($image1 as $valuei1) { // HER ER
PROBLEMET...
echo "<div class='billede'>";
echo "<a href='/".$valuei1."' onclick='return openThumbnail(this);'
title=''><img class='foto' src='/".$valuet1."' alt='".$strTitle."' title=''
/></a>";
echo "</div>\n";
}


// FORSØG 2
$thumb2 = glob('img/Badartikler/thumbs/*.jpg');
$image2 = glob('img/Badartikler/images/*.jpg');

foreach($thumb2 as $valuet2) && foreach($image1 as $valuei2) { // PROBLEM
echo "<div class='billede'>";
echo "<a href='/".$valuei2."' onclick='return openThumbnail(this);'
title=''><img class='foto' src='/".$valuet2."' alt='".$strTitle."' title=''
/></a>";
echo "</div>\n";
}

Jeg har også forsøgt med:

foreach(($thumb1 as $valuet1) && ($image1 as $valuei1)) {
....

Det hele giver fejl!?


Hvordan skal jeg lave det foreach-kald for at det bliver korrekt?
Og kan det lade sig gøre med foreach()?

Håber I kan hjælpe...

På forhånd mange tak for hjælpen!


Med venlig hilsen
--
Dennis Munding
http://as-transport.dk/ -Sikker møbeltransport til tiden!
http://pe-vagtservice.dk/ -Når du vil passe på dine værdier!
http://munding-webdesign.dk/ -Vi ses! Ganske enkelt...


 
 
Bertel Lund Hansen (01-10-2008)
Kommentar
Fra : Bertel Lund Hansen


Dato : 01-10-08 12:50

Dennis Munding skrev:

> Jeg har en lille foreach-nød, som jeg håber, at I kan hjælpe med at
> knække...

Inden jeg går i detaljer, vil jeg gerne vide hvad du vil opnå.
Skal der ikke vises en side med frimærker som man så kan klikke
på for at se de store billeder enkeltvis?

--
Bertel
http://bertel.lundhansen.dk/      FIDUSO: http://fiduso.dk/

Dennis Munding (01-10-2008)
Kommentar
Fra : Dennis Munding


Dato : 01-10-08 12:55

Hej Bertel!
"Bertel Lund Hansen" skrev:
>> Jeg har en lille foreach-nød, som jeg håber, at I kan hjælpe med at
>> knække...
>
> Inden jeg går i detaljer, vil jeg gerne vide hvad du vil opnå.
> Skal der ikke vises en side med frimærker som man så kan klikke
> på for at se de store billeder enkeltvis?

Ja, det var da nok en idé at oplyse det, selv om jeg synes det fremgik en
smule af html-delen... :-

Men jo - det skulle gerne resultere i frimærker med link til store
billeder - du kan se et eksempel her:
http://munding-interieur.dk/?side=Badartikler

Her er det hele bare lavet med ren html - men man er vel lidt doven, så jeg
håber på at det kan automatiseres lidt...

Tak for hurtigt svar!


Med venlig hilsen
--
Dennis Munding
http://as-transport.dk/ -Sikker møbeltransport til tiden!
http://pe-vagtservice.dk/ -Når du vil passe på dine værdier!
http://munding-webdesign.dk/ -Vi ses! Ganske enkelt...


Dan Storm (01-10-2008)
Kommentar
Fra : Dan Storm


Dato : 01-10-08 12:58

Dennis Munding skrev:
> // VIRKER NÆSTEN!!
> $billede = glob('img/Badartikler/*.jpg');
>
> foreach($billede as $value) {
> echo "<div class='billede'>";
> echo "<a href='/".$value."' onclick='return openThumbnail(this);'
> title=''><img class='foto' src='/".$value."' alt='".$strTitle."'
> title='' /></a>";
> echo "</div>\n";
> }
>
> Problemet her er, af $value er samme billede - logisk nok.

Du burde have dine thumbnails i et underbibliotek til img/Badeartikler
f.eks. img/Badeartikler/thumbnails. Så kunne billederne hedde det samme
og du skulle kun tænke på stien...

Anyways:

// Et løsningsforslag (utestet)
$billede = glob('img/Badartikler/*.jpg');

foreach($billede as $value)
{
   $stort = substr($value, 0, -5)."2.jpg";
   $lille = substr($value, 0, -5)."1.jpg";
   
   echo "<div class=\"billede\">";
   echo "<a href=\"/".$stort."\" onclick=\"return openThumbnail(this);\"
title=\"\"><img class=\"foto\" src=\"/".$lille."\" alt=\"".$strTitle."\"
title=\"\" /></a>";
   echo "</div>\n";
}




--
Dan Storm - storm at err0r dot dk / http://err0r.dk

Tro ikke brugerne vil gøre noget for at undgå dit killfilter
- Så vigtig er du heller ikke!

Dan Storm (01-10-2008)
Kommentar
Fra : Dan Storm


Dato : 01-10-08 13:05

Jeg burde måske også lige pointere at følgende er noget sludder:
> foreach($thumb2 as $valuet2) && foreach($image1 as $valuei2) {

Hvis du vil opnå en sådan form for looping, skal du gøre noget ala

reset($arrayTwo);
foreach($arrayOne as $key = $value)
{
   next($arrayTwo);
   //kode
}


--
Dan Storm - storm at err0r dot dk / http://err0r.dk

Tro ikke brugerne vil gøre noget for at undgå dit killfilter
- Så vigtig er du heller ikke!

Dennis Munding (01-10-2008)
Kommentar
Fra : Dennis Munding


Dato : 01-10-08 15:10

Hej Dan!
"Dan Storm" skrev:
> Du burde have dine thumbnails i et underbibliotek til img/Badeartikler
> f.eks. img/Badeartikler/thumbnails. Så kunne billederne hedde det samme og
> du skulle kun tænke på stien...

Det har jeg skam tænkt på, men kom til den konklusion, at det måtte være
mere besværligt...?
Men det kan da godt være, at det bliver enden på det...

> Anyways:
>
> // Et løsningsforslag (utestet)
> $billede = glob('img/Badartikler/*.jpg');
>
> foreach($billede as $value)
> {
> $stort = substr($value, 0, -5)."2.jpg";
> $lille = substr($value, 0, -5)."1.jpg";
>
> echo "<div class=\"billede\">";
> echo "<a href=\"/".$stort."\" onclick=\"return openThumbnail(this);\"
> title=\"\"><img class=\"foto\" src=\"/".$lille."\" alt=\"".$strTitle."\"
> title=\"\" /></a>";
> echo "</div>\n";
> }

Det giver så dobbelt-poster:
http://munding-interieur.dk/?side=Test

Hvilket jeg ikke kan se nogen logisk forklaring på...?

Også tak til dig for hurtigt svar!

Beklager at jeg først får svaret nu - jeg havde lige nogle ærinder, som
skulle ordnes...


Med venlig hilsen
--
Dennis Munding
http://as-transport.dk/ -Sikker møbeltransport til tiden!
http://pe-vagtservice.dk/ -Når du vil passe på dine værdier!
http://munding-webdesign.dk/ -Vi ses! Ganske enkelt...


Bertel Lund Hansen (01-10-2008)
Kommentar
Fra : Bertel Lund Hansen


Dato : 01-10-08 15:36

Dennis Munding skrev:

> Det giver så dobbelt-poster:

Det er fordi alle billederne findes frem, og for hvert dannes frimærkenavnet -
altså både når det lille og det store billede er fundet.

Du kan bruge dette i stedet:


foreach ($billede as $picture) {
   if ($picture[-5]==1) {
      $lille=$picture;
      $stort=$lille;
      $stort[-5]='2';
      echo "<div class=\"billede\">";
      echo "<a href=\"/".$stort."\" onclick=\"return openThumbnail(this);\"
      title=\"\"><img class=\"foto\" src=\"/".$lille."\" alt=\"".$strTitle."\"
      title=\"\" /></a>";
      echo "</div>\n";
   }
}

Jeg ville skrive det lidt anderledes, men her sparede jeg at ændre
i den gamle kode.

--
Bertel
http://bertel.lundhansen.dk/      FIDUSO: http://fiduso.dk/

Dennis Munding (01-10-2008)
Kommentar
Fra : Dennis Munding


Dato : 01-10-08 19:02

Hej Bertel!
"Bertel Lund Hansen" skrev:
>> Det giver så dobbelt-poster:
>
> Det er fordi alle billederne findes frem, og for hvert dannes
> frimærkenavnet -
> altså både når det lille og det store billede er fundet.
>
> Du kan bruge dette i stedet:
>
> foreach ($billede as $picture) {
> if ($picture[-5]==1) {
> $lille=$picture;
> $stort=$lille;
> $stort[-5]='2';
> echo "<div class=\"billede\">";
> echo "<a href=\"/".$stort."\" onclick=\"return openThumbnail(this);\"
> title=\"\"><img class=\"foto\" src=\"/".$lille."\" alt=\"".$strTitle."\"
> title=\"\" /></a>";
> echo "</div>\n";
> }
> }

Det udskriver intet...?!?

Men hvis jeg ændrer linjen...
if ($picture[-5]==1) {

....til...
if ($picture[-5]=1) {

....får jeg dette resultat:
http://munding-interieur.dk/?side=Test

Her udskrives både det lille og det store billede....??
A fatter aller en ski'!!

> Jeg ville skrive det lidt anderledes, men her sparede jeg at ændre
> i den gamle kode.

Måske du var for nærig...? ;-p

Nej, jeg ved det ikke - havde lige håbet, at det var let nok...
"Huggede" noget af koden fra en anden side, jeg har lavet.
Her er koden dog brugt i et slideshow, hvor der kun hentes en
billedestørrelse.

Irriterende!!

For ærlig snak (ikke for at få medynk - blot give indsigt), så går jeg
sygemeldt med en depression, og det gør, at jeg ikke har den fornødne energi
til at rode for meget med det...
Men mange tak for indsatsen - måske jeg bare må gøre det på den besværlige
måde...


Med venlig hilsen
--
Dennis Munding
http://as-transport.dk/ -Sikker møbeltransport til tiden!
http://pe-vagtservice.dk/ -Når du vil passe på dine værdier!
http://munding-webdesign.dk/ -Vi ses! Ganske enkelt...


Bertel Lund Hansen (01-10-2008)
Kommentar
Fra : Bertel Lund Hansen


Dato : 01-10-08 19:16

Dennis Munding skrev:

> > foreach ($billede as $picture) {
> > if ($picture[-5]==1) {

> Det udskriver intet...?!?

Måske er -5 ikke den rigtige værdi. Kontroller med en udskrift af
$picture[-5]. Det kan også være det skal være '1' i stedet for 1.

> Men hvis jeg ændrer linjen...
> if ($picture[-5]==1) {
> ...til...
> if ($picture[-5]=1) {

> ...får jeg dette resultat:

Du kan lige så godt skrive:

   if (true) ...

Ét lighedstegn er tildeling. To lighedstegn er test ef 'enshed'.

   $picture[-5]=1;

tildeler værdien 1 til $picture[-5] og returnerer 1. 1 læses som
true, og testen bliver altid positiv. Derfor får du samme
resultat som uden test.

> Nej, jeg ved det ikke - havde lige håbet, at det var let nok...
> "Huggede" noget af koden fra en anden side, jeg har lavet.

Du kan evt. kikke på den billedfremvisning jeg har lavet her:

   http://bertel.lundhansen.dk/webdesign/diasshow.php

Du kan også bare se på koden og snuppe det du kan bruge.

--
Bertel
http://bertel.lundhansen.dk/      FIDUSO: http://fiduso.dk/

Dan Storm (01-10-2008)
Kommentar
Fra : Dan Storm


Dato : 01-10-08 21:41

Dennis Munding skrev:
> Det giver så dobbelt-poster:
> http://munding-interieur.dk/?side=Test

Fordi jeg er en klovn...
Jeg glemte at rette din glob til...
$billede = glob('img/Badartikler/*-2.jpg');

Så skulle det være slut med dine dobbeltposts...
Fordi ellers tager den også dem der hedder -1 og billederne er der jo så
to gange...


Dennis Munding (01-10-2008)
Kommentar
Fra : Dennis Munding


Dato : 01-10-08 22:37

Hej Dan!
"Dan Storm" skrev:
> Dennis Munding skrev:
>> Det giver så dobbelt-poster:
>> http://munding-interieur.dk/?side=Test
>
> Fordi jeg er en klovn...
> Jeg glemte at rette din glob til...

Jeg kalder det "at være menneskelig"...

> $billede = glob('img/Badartikler/*-2.jpg');

Se det var jo lige det, der skulle til...

> Så skulle det være slut med dine dobbeltposts...
> Fordi ellers tager den også dem der hedder -1 og billederne er der jo så
> to gange...

Selvfølgelig!
Så simpelt, at man skulle tro, det var løgn...
Jeg har nok en tendens til at gøre tingene mere indviklede, end de er -
derfor bliver de ret hurtigt uoverskuelige...

Endnu en gang tusind tak for hjælpen!


Med venlig hilsen
--
Dennis Munding
http://as-transport.dk/ -Sikker møbeltransport til tiden!
http://pe-vagtservice.dk/ -Når du vil passe på dine værdier!
http://munding-webdesign.dk/ -Vi ses! Ganske enkelt...


Martin (01-10-2008)
Kommentar
Fra : Martin


Dato : 01-10-08 19:51

Dennis Munding wrote:
> // FORSØG 2
> $thumb2 = glob('img/Badartikler/thumbs/*.jpg');
> $image2 = glob('img/Badartikler/images/*.jpg');

$images = array('thumb' => $thumb2, 'normal' => $image2);
foreach($images AS $image) {
echo 'Thumb: ' . $image['thumb'];
echo 'Normal: ' . $image['normal'];
}

Arrays er noget af det bedste der er opfundet :D

Bertel Lund Hansen (01-10-2008)
Kommentar
Fra : Bertel Lund Hansen


Dato : 01-10-08 20:16

Martin skrev:

> $images = array('thumb' => $thumb2, 'normal' => $image2);
> foreach($images AS $image) {
> echo 'Thumb: ' . $image['thumb'];
> echo 'Normal: ' . $image['normal'];
> }

> Arrays er noget af det bedste der er opfundet :D

Måske nok. Kan man stole på at billederne står i den rigtige
rækkefølge i folderen?

--
Bertel
http://bertel.lundhansen.dk/      FIDUSO: http://fiduso.dk/

Martin (01-10-2008)
Kommentar
Fra : Martin


Dato : 01-10-08 20:57

Bertel Lund Hansen wrote:
> Martin skrev:
>
>> $images = array('thumb' => $thumb2, 'normal' => $image2);
>> foreach($images AS $image) {
>> echo 'Thumb: ' . $image['thumb'];
>> echo 'Normal: ' . $image['normal'];
>> }
>
>> Arrays er noget af det bedste der er opfundet :D
>
> Måske nok. Kan man stole på at billederne står i den rigtige
> rækkefølge i folderen?

Hvis billederne hedder det samme, og der er præcis det samme antal i de
2 biblioteker, så ja.
Men ellers så kan man jo starte med at sorterer 2 $thumb2 og $image2,
også kan man lave et check i foreach'en

if($image['normal'] == $image['thumb']) {
//billederne har samme navn
}

Aller helst, så ville jeg nu have en database (eller en tekstfil) så det
er fuldstændig ligegyldigt hvad navnene er på billederne.
Desuden så kan man jo også have lidt tekst om billedet, det er så
kedeligt at se på billeder uden tekst :)

Dennis Munding (01-10-2008)
Kommentar
Fra : Dennis Munding


Dato : 01-10-08 22:44

Hej Martin!
"Martin" skrev:
>> // FORSØG 2
>> $thumb2 = glob('img/Badartikler/thumbs/*.jpg');
>> $image2 = glob('img/Badartikler/images/*.jpg');
>
> $images = array('thumb' => $thumb2, 'normal' => $image2);
> foreach($images AS $image) {
> echo 'Thumb: ' . $image['thumb'];
> echo 'Normal: ' . $image['normal'];
> }
>
> Arrays er noget af det bedste der er opfundet :D

Mange tak for dit input - jeg vil prøve det af senere.
Men lige nu har jeg valgt at bruge Dan Storms løsning, da den giver mig
mindst arbejde p.t.

Men dit arbejde er ikke spildt!!
Jeg gemmer denne tråd, så jeg har noget at vende tilbage til - det samme gør
sig gældende for Bertel L. Hansens løsning.
Det er rart at have forskellige modeller - p.t. orker jeg desværre bare ikke
de for mange udfordringer (se tidl. svar til Bertel), så jeg vælger at
springe over, hvor gærdet er lavest...


Med venlig hilsen
--
Dennis Munding
http://as-transport.dk/ -Sikker møbeltransport til tiden!
http://pe-vagtservice.dk/ -Når du vil passe på dine værdier!
http://munding-webdesign.dk/ -Vi ses! Ganske enkelt...


Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408918
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste