Hallo,
ik ben bezig met een fotogalerie waarbij ik de grote foto op dezelfde pagina wil hebben als de kleine foto's en wanneer de pagina wordt geopend er een foto te zien is. Voorbeeld is http://www.robcnossen.nl/view_album.php?album_id=7.

Het is tot nu toe gedeeltelijk gelukt, wanneer de pagina wordt geopend is de laatst geüploade foto te zien en in de bron bij de img src is dan te zien dat het bijvoorbeeld om foto3.jpg uit de map uploads en album nummer 7 gaat, maar wanneer ik op een kleine foto klik om die te bekijken komt die niet tevoorschijn. In de paginabron bij img src is te zien dat foto3.jpg niet weg is gegaan en dat een andere foto erbij is gekomen, er ontstaat dan bijvoorbeeld zoiets als <img src="uploads/7/foto3.jpguploads/7/foto2.jpg" title="" />. Dus foto2.jpg komt op de juiste plaats aan maar foto3.jpg gaat niet weg. Er wordt dus geen enkele foto getoond.
Mijn code is;


<?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);

}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<title>Untitled Document</title>
</head>

<body>
<div id="wrap">
<div id="sidebarleft">
<?php
//Een album met de kleine foto's 
if (empty($images)) {
        echo 'Er zijn geen foto\'s in dit album';
} else {
        foreach ($albums as $album) {      
        foreach ($images as $image) { 
		if ($image['album'] === $album['id'])         
                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> ';                
        }            
    }
}

?>
</div>
<div id="imagecontainer">
  <div id="image">
<?php
//Hier wordt de grote foto getoond
    if (isset($_GET['image_id'])){
        $full_image = $_GET['image_id'];
    }else{
        $full_image = (isset($images['id']));
    }
     
    echo'<img src="uploads/' ,$image['album'], '/' ,$image['id'],  '.' ,$image['ext'],htmlentities($full_image), '" title="" />';

//$img = get_image($album_id);
//echo '<img src="uploads/', $img['album'], '/',$img['image_id'], '" title="" />';

?>
Ik dacht dat ik het zou kunnen oplossen met een if else statement;
<?php 
$full_image=(isset($_GET['image_id'])) ? $_GET['image_id'] : (isset($images['id']));
if(isset($_GET['image_id'])){
//echo werkt wel als ik het buiten de haakjes zet
echo'<img src="uploads/' ,$image['album'], '/' ,$image['id'],  '.'
,$image['ext'],htmlentities($full_image),  '" title="" />';
}else{
$full_image=(isset($_GET['image_id'])) ? $_GET['image_id'] : (isset($images['id'])); 
echo'<img src="',htmlentities($full_image), '" title="" />';
}
 ?>


Dit werkt niet, er komt geen foto tevoorschijn.

Mijn vraag is, wat moet er gedaan worden om de (soort) standaardwaarde te laten vervangen door een andere foto?
Ik kan op het internet hierover niets vinden wat mij tot een oplossing zou kunnen brengen.

Bij voorbaat dank,

Rob


<?php
 if(isset($_GET['image_id'])){
       echo $_GET['image_id'].'image id';
    }else{
        echo $images['id'].'album id';
    }
?>


Wat krijg je te zien als je dit neerzet?
if($standaardwaarde = (isset($_GET['image_id'])));

Dit werkt niet.
- Daar dient isset niet voor. isset geeft true of false terug; op basis van 'bestaat de variabele?'; niet de waarde van een variabele.
- klassieke fout: de lijn van if() afsluiten door een puntkomma. Daardoor doet die if niets.


Ik wil niet lastig doen, maar zou je niet gewoon mijn ternary gebruiken?
In plaats van:

<?php
if(isset($_GET['image_id'])){
$klikfoto = $_GET['image_id'];
}else{
$klikfoto = (isset($images['id']));
}
?>

Moet je dit doen:
<?php
if(isset($_GET['image_id'])){
$klikfoto = $_GET['image_id'];
}else{
$klikfoto = 12345; // of welk id dan ook
}
?>

Is exact hetzelfde als Kris zijn 'ternary':
<?php
$klikfoto = isset($_GET['image_id']) ? $_GET['image_id'] : 12345;
?>
Tim, als ik;
<?php
if(isset($_GET['image_id'])){
echo $_GET['image_id'].'image id';
}else{
echo $images['id'].'album id';
}
?>
doe, dan krijg ik; Notice: Undefined index: id in /mappen/robcnossen.nl/map/view_album.php on line 108
album id, te zien.

Kris en Eddy, ik heb nu jullie 'ternary'(ik kende het niet, nu wel, dank je) gebruikt;
<?php
$standaardwaarde=isset($_GET['image_id']) ? $_GET['image_id'] : isset($images['id']);
echo'<img src="uploads/' ,$image['album'], '/' ,$image['id'], '.' ,$image['ext'],htmlentities($standaardwaarde), '" title="" />';

//echo'<img src="',htmlentities($klikfoto), '" title="" />';
?>
maar hoe kan ik het op de juiste manier gebruiken om beide echo's te gebruiken? Aannemende dat ik echt beide echo's nodig heb.

De pagina ziet er nu zo uit;http://www.robcnossen.nl/view_album.php?album_id=7 en wanneer er op een kleine foto wordt geklikt ziet het er zo uit;<img src="uploads/7/130.jpguploads/7/123.jpg" title="" />
Volgens mij is nu de lol dat je maar 1 echo nodig heb, waarom wil je nog een echo?

Wat werkt er nog niet?
Probeer dit eens:

<?php

// TOON DE AFBEELDING
// hiervoor zijn nodig:
// $image['album']
// $image['id']
// $image['ext']
// $waarde
// -> $images['id']
// -> $_GET['image_id']

// verkrijg de waarde
$image['id'] = isset($_GET['image_id']) ? intval($_GET['image_id']) : $images['id'];

// kijk of alles wat we nodig hebben aanwezig is
if(isset($image['album'], $image['id'], $image['ext']))
{
echo '<img src="uploads/' . $image['album'] . '/' . $image['id'] . '.', $image['ext'] . '" alt="Afbeelding #' . $image['id'] . '">';
}
else
{
echo '<b>Fout</b><br>
Eén van de benodigde waardes missen!<br>
Wat ik wel heb:<br>
<hr>
' . print_r($image, true) . '
<hr>';
}
?>

Let op dat ik $image['id'] overschrijf ipv $standaardwaarde.
Die htmlentities() is niet nodig.

Met het Javascript (het klik-gedeelte) moet je eerst de href leeghalen, en dan weer met de nieuwe waarde vullen. Niet erbij zetten.
Zie http://www.hervormdegemeentebovenhardinxveld.nl/foto/42/Jeugdinfo-bladen/ voor een voorbeeld (met jQuery)
Eigenlijk werkt alles goed.

Dit zorgt ervoor dat de "standaardfoto " zichtbaar is wanneer je de pagina opent;
<?php
$standaardwaarde=isset($_GET['image_id']) ? $_GET['image_id'] : isset($images['id']);
echo'<img src="uploads/' ,$image['album'], '/' ,$image['id'], '.' ,$image['ext'],htmlentities($standaardwaarde), '" title="" />';
?>
De kleine foto's zijn ook klikbaar maar worden niet zichtbaar omdat om de een of andere reden de "standaardfoto" zich niet laat vervangen.

Dit zorgt ervoor dat de "standaardfoto" niet te zien is, maar de kleine foto's worden wel zichtbaar wanneer er op geklikt wordt.
<?php
$standaardwaarde=isset($_GET['image_id']) ? $_GET['image_id'] : isset($images['id']);
echo'<img src="' ,htmlentities($standaardwaarde), '" title="" />';
?>
Wanneer er van deze twee echo's één echo kan worden gemaakt lijkt mij de oplossing dichtbij, maar ik zie niet hoe dit gedaan kan worden...

[size=xsmall]Toevoeging op 20/02/2013 11:17:59:[/size]

Eddy,
als ik jou voorbeeld volg wordt dit zichtbaar;
Notice: Undefined index: id in /allerlei mappen/robcnossen.nl/public_html/view_album.php on line 105
Fout
Eén van de benodigde waardes missen!
Wat ik wel heb:
Array ( [id] => [img_name] => PICT0059.JPG [album] => 7 [timestamp] => 1359552936 [ext] => jpg )

De [id] lijkt niet te pakken wanneer het gebruikt wordt met $images maar alleen met $image. Wanneer ik <?php isset($images['id']; ?> doe is de foutmelding weg maar de id is dan nog niet zichtbaar; <img src="uploads/7/.jpg" alt="Afbeelding #">.
Wanneer ik op een kleine foto klik komt de id ook niet tevoorschijn maar komt in de broncode dit zichtbaar;
<img src="uploads/7/0.jpg" alt="Afbeelding #0">.
Het lijkt er wel op dat de standaardfoto zich laat vervangen, maar ik weet het niet zeker.
$image['id'] is dus inderdaad leeg.

In de functie get_images($album_id) wordt als goed is $image['id'] aangemaakt.
Geef eens een print_r() op $images in die functie. Is de ['id'] dan wel gevuld?
Als ik print_r($images['id']); doe krijg;Notice: Undefined index: id in.
Wanneer ik print_r($images[0]); doe krijg ik wat ik wil zien; Array ( [id] => 122 [img_name] => KONICA MINOLTA DIGITAL CAMERA_1043.jpg [album] => 7 [timestamp] => 1355299786 [ext] => jpg ).

Maar doe ik dan
<?php $image['id'] = isset($_GET['image_id']) ? intval($_GET['image_id']) : $images[0]; ?>
krijg ik de volgende boodschap; Notice: Array to string conversion in /allerlei mappen/robcnossen.nl/public_html/view_album.php on line 110
Rob Cnossen op 20/02/2013 12:52:28

Als ik print_r($images['id']); doe krijg;Notice: Undefined index: id in.


Als je nu gewoon alles wilt zien doe je print_r($images);

Reageren