Hoe verder na $image=false;
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)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
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;
}
}
?>
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)
1
2
3
4
5
6
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="" />';
?>
$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...
2) Gebruik gewoon een andere variabele voor $image = false;?
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.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
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);
}
?>
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)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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;
}
}
?>
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)
1
2
3
4
5
6
7
8
9
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="" />';
?>
//$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)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
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;
}?>
$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;?
Code (php)
1
2
3
4
5
6
7
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> ';
}
}
?>
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)
1
<img src="uploads/thumbs/', $image['album'], '/', $image['id'], '.', $image['ext'], '" title="" />
Dus logisch dat het er 3 zijn.
Ik heb ook geprobeerd om de albums en images foreachloops apart te behandelen zolas dit;
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
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> ';
} ?>
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)
1
2
3
4
5
6
7
8
9
10
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>';
}
} ?>
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>';
}
} ?>
Mijn code ziet er nu zo uit.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
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> ';
}
}
}
?>
$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?
$image['album'] en $album['alb_id'] het zelfde?
Verwijst $image['album'] naar $album['alb_id']?
Indien ja:
Code (php)
1
2
3
4
5
6
7
8
9
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> ';
}
}
}
?>
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> ';
}
}
}
?>
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...