Hoe verder na $image=false;

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Senior, Medior and Junior SAP HANA Developer

Vacature details Vakgebied: Software/IT Opleiding: Medior Werklocatie: Veldhoven Vacature ID: 12696 Introductie Our client is the world's leading provider of lithography systems for the semiconductor industry, manufacturing complex machines that are critical to the production of integrated circuits or chips. Our purpose is “unlocking the potential of people and society by pushing technology to new limits”. We do this guided by the principles “Challenge”, “Collaborate” and “Care”. Wat verwachten we van jou? SAP Certified Application Associate - SAP HANA Cloud Modeling (training and/or certification) Bachelor degree or higher Excellent understanding of SAP HANA (2.0 / Cloud), Data Modelling and writing

Bekijk vacature »

Rob Cnossen

Rob Cnossen

25/01/2013 17:10:08
Quote Anchor link
Hallo,
ik ben aan het proberen om een foto gallerie te maken waarbij de thumbnails en de grote foto op dezelfde te zien zijn.

In mijn code heb ik $image = false; moeten opnemen omdat ik anders van een foto drie thumbnails te zien kreeg, met $image = false; is er gewoon een thumbnail van een foto. Het probleem van $image = false; is dat ik de variabele $image daarna niet meer kan gebruiken maar ik heb deze variabele nog wel nodig, in ieder geval de waarde van deze variabele.
De code is;
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?phpif (empty($images)) {
        echo 'Er zijn geen foto\'s in dit album';
} else {
        foreach ($albums as $album) {
                $image = true;
        foreach ($images as $image) {          
                echo'<a href="view_album.php?album_id=', $album['alb_id'],'&image_id=uploads/', $image['album'], '/', $image['id'], '.', $image['ext'], '"><img src="uploads/thumbs/', $image['album'], '/', $image['id'], '.', $image['ext'], '" title="" /></a><a href="delete_image.php?image_id=', $image['id'],'">x</a> ';
                //$image =& $img;
                $image = false;
        }
        if(!$image) break;    
        }
}
?>

</div>
<div id="imagecontainer">
<div id="image">
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php

    $full_image
=(isset($_GET['image_id'])) ? $_GET['image_id'] : (int)$images[0];
    var_dump($images);
echo'<a href="?image_id=uploads/', $image['album'], '/', $image['id'], '.', $image['ext'], '"><img src="',htmlentities($full_image), '" title="" />';
 ?>

Ik heb gegoogled maar er is niet zoveel te vinden over dit probleem (of ik heb niet de goede zoekwoorden gebruikt?).

Ik denk dat ik $image = false; kan omzeilen door de variabele naam te veranderen met behoud van de waardes zoals met dit: $image =& $img; maar ik weet niet zeker of dit de goede manier is om dit probleem op te lossen, het werkte tot nu toe niet. Ik gebruik het verkeerd of het is gewoon niet de goede manier.

Hoe kan ik de $image variabelen na $image = false; weer aan het werk krijgen?
Alvast bedankt voor het willen helpen...
 
PHP hulp

PHP hulp

23/12/2024 18:32:25
 
Wouter J

Wouter J

25/01/2013 17:22:13
Quote Anchor link
1) Je zal je eerder moeten af vragen waarom je 3x hetzelfde item in een array hebt
2) Gebruik gewoon een andere variabele voor $image = false;?
 
Kris Peeters

Kris Peeters

25/01/2013 17:28:55
Quote Anchor link
Leg eens wat beter uit wat $albums precies is.
Waar worden die gegevens gevonden?
Is $images een array met alle thumbnails van alle $albums?

---

Zie ik het algemene plaatje goed?
Je hebt verschillende albums. Elke album wordt geacht images te bevatten.

Hoe wordt de link gemaakt tussen de image en zijn bijbehorende album?
... het antwoord daarop zal moeten vertaald worden in die dubbele foreach.
 
Rob Cnossen

Rob Cnossen

25/01/2013 17:57:15
Quote Anchor link
Ik denk dat ik 3x hetzelfde item in een array heb omdat ik twee foreach loops in elkaar heb, maar ik heb die twee foreach loops nodig. In de albums foreach loop zitten de albums en daarin zitten de foto's die ik kan laten zien met images foreach loop. De complete code is;
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php include 'core/init.php';

if (isset($_GET['album_id'])) {
    $album_id = $_GET['album_id'];
$album_data = album_data($album_id, 'name', 'description');

echo '<h3>', $album_data['name'], '</h3><p>', $album_data['description'], '</p>';
 
$albums = get_albums();
$images = get_images($album_id);
//$result = array_merge($images, $album);
//print_r($result);

}
?>

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php

if (empty($images)) {
        echo 'Er zijn geen foto\'s in dit album';
}
else {
        foreach ($albums as $album) {
                $image = true;
        foreach ($images as $image) {          
                echo'<a href="view_album.php?album_id=', $album['alb_id'],'&image_id=uploads/', $image['album'], '/', $image['id'], '.', $image['ext'], '"><img src="uploads/thumbs/', $image['album'], '/', $image['id'], '.', $image['ext'], '" title="" /></a><a href="delete_image.php?image_id=', $image['id'],'">x</a> ';
                $image =& $img;
                $image = false;
        }

        if(!$image) break;    
        }
}

?>


Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php
//$img = get_images($album_id);
//if(isset($images)){
    
    //$image = (int)$image;

    $full_image=(isset($_GET['image_id'])) ? $_GET['image_id'] : (int)$images[0];
    var_dump($images);
echo'<a href="?image_id=uploads/', $img['album'], '/', $img['id'], '.', $img['ext'], '"><img src="',htmlentities($full_image), '" title="" />';
?>

Via $albums = get_albums(); kom ik bij de albums en deze get_albums functie ziet er zo uit;
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php function get_albums() {
    $albums = array();
    
    $albums_query = mysql_query("SELECT `albums`. `album_id`, `albums`.`timestamp`, `albums`.`name`, LEFT(`albums`.`description`, 50) as `description`, COUNT(`images`. `image_id`) as `image_count`
    FROM `albums`
    LEFT JOIN `images`
    ON `albums`.`album_id` = `images`.`album_id`    
    GROUP BY `albums`.`album_id`
    "
);
    
    while ($albums_row = mysql_fetch_assoc($albums_query)) {
        $albums[] = array(
            'alb_id' => $albums_row['album_id'],
            'timestamp' => $albums_row['timestamp'],
            'name' => $albums_row['name'],
            'description' => $albums_row['description'],
            'count' => $albums_row['image_count']
            );
    }


return $albums;
}
?>

Kan ik het probleem van de drie thumbnails in plaats van een thumbnail anders oplossen dan met $image = false;?
 
- SanThe -

- SanThe -

25/01/2013 18:12:11
Quote Anchor link
Dit komt op hetzelfde neer.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
foreach ($albums as $album) {
    foreach ($images as $image) {
        echo'<a href="view_album.php?album_id=', $album['alb_id'],'&image_id=uploads/', $image['album'], '/', $image['id'], '.', $image['ext'], '"><img src="uploads/thumbs/', $image['album'], '/', $image['id'], '.', $image['ext'], '" title="" /></a><a href="delete_image.php?image_id=', $image['id'],'">x</a> ';
    }
}

?>


Als in $albums 3 albums zitten ga je 3 keer door de volgende foreach() heen.
Daar doe je een echo die dan steeds hetzelfde plaatje zal geven.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<img src="uploads/thumbs/', $image['album'], '/', $image['id'], '.', $image['ext'], '" title="" />

Dus logisch dat het er 3 zijn.
 
Rob Cnossen

Rob Cnossen

25/01/2013 21:46:38
Quote Anchor link
Ik had mij niet gerealiseerd dat de hoeveelheid thumbnails werd bepaald door de hoeveelheid albums, maar zoals je het uitlegt ziet het er logisch uit.
Ik heb ook geprobeerd om de albums en images foreachloops apart te behandelen zolas dit;
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
<?php
if (empty($images)) {
echo 'Er zijn geen foto\'s in dit album';
}
else{
     foreach($albums as $album)
}

        echo'<a href="view_album.php?album_id=', $album["alb_id"], '"></a>';
     }
    
    foreach($images as $image)        
        {
            
        echo'<a href="?image_id=uploads/', $image["album"], '/', $image["id"], '.', $image["ext"], '"><img src="uploads/thumbs/', $image["album"], '/', $image["id"], '.', $image["ext"], '" title="" /></a><a href="delete_image.php?image_id=', $image["id"],'">x</a> ';
}
         ?>

Dan zijn er niet teveel thumbnails maar als ik dan op een thumbnail klik komt de foto netjes tevoorschijn maar ik wordt dan ook uit het album gezet. Misschien dat een voorbeeld het duidelijker maakt;<url>http://www.robcnossen.nl/view_album.php?album_id=7</url>
Is dit beter op te lossen dan het veranderen van de variabele naam?

Kris, de albums worden op deze manier gemaakt;
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?php if (empty($albums)) {
    echo '<p>Je hebt nog geen album</p>';
}
else {
    foreach ($albums as $album) {
        echo '<p><a href="view_album.php?album_id=', $album['alb_id'], '">', $album['name'], '</a> (', $album['count'], ' foto\'s)<br />
'
, $album['description'], '...<br />
<a href="edit_album.php?album_id='
, $album['alb_id'], '">bewerken</a> / <a href="delete_album.php?album_id=', $album['alb_id'], '">Verwijderen</a>        
        </p>'
;
    }
}
?>
 
Rob Cnossen

Rob Cnossen

28/01/2013 11:52:25
Quote Anchor link
Het ligt dus niet aan de foto's maar aan de albums, als ik vier albums heb wordt er dus van elke foto vier thumbnails gemaakt. Ik probeer nu met break ervoor te zorgen dat er meerdere albums door de foreach loop gaat.
Mijn code ziet er nu zo uit.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
$count
=1;
if (empty($images)) {
        echo 'Er zijn geen foto\'s in dit album';
}
else {
        foreach ($albums as $album) {
          if($count++ > 1)
          break;      
        foreach ($images as $image) {          
                echo'<a href="view_album.php?album_id=', $album['id'],'&image_id=uploads/', $image['album'], '/', $image['id'], '.', $image['ext'], '"><img src="uploads/thumbs/', $image['album'], '/', $image['id'], '.', $image['ext'], '" title="" /></a><a href="delete_image.php?image_id=', $image['id'],'">x</a> ';                
        }            
    }
}

?>

Het werkt, in zoverre, er is maar een thumbnail van elke foto te zien en het script gaat gewoon verder. Het probleem is wanneer ik op een thumbnail klik dat ik daarna naar een andere album wordt gestuurd, dus wanneer ik in fotoalbum nummer tien zit en ik klik op een thumbnail dan komt de foto van de thumbnail wel tevoorschijn maar ik wordt uit album nummer tien gegooid.

Wanneer ik $count++; doe in plaats van $count=1; werkt alles wel goed maar dan krijg een "Notice: Undefined variable: count in bla/bla/bla/" melding.

Hoe kan ik het zo krijgen dat wanneer ik in een album zit en ik klik op een thumbnail ik gewoon in hetzelfde album blijf?
 
Kris Peeters

Kris Peeters

28/01/2013 12:25:14
Quote Anchor link
Zeg, is
$image['album'] en $album['alb_id'] het zelfde?

Verwijst $image['album'] naar $album['alb_id']?

Indien ja:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php
foreach ($albums as $album) {
    foreach ($images as $image) {
      if ($image['album'] === $album['alb_id']) {
        echo'<a href="view_album.php?album_id=', $album['alb_id'],'&image_id=uploads/', $image['album'], '/', $image['id'], '.', $image['ext'], '"><img src="uploads/thumbs/', $image['album'], '/', $image['id'], '.', $image['ext'], '" title="" /></a><a href="delete_image.php?image_id=', $image['id'],'">x</a> ';
      }
    }
}

?>
 
Rob Cnossen

Rob Cnossen

28/01/2013 13:04:34
Quote Anchor link
Dank je Kris, helemaal raak. En ik al weken moeilijk doen met van alles en nog wat, jij komt met een regel code en klaar. Ik moet nog veel leren...
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.