Ik kan standaardwaarde niet vervangen
In de functie get_images geeft je ook andere namen dan de oorspronkelijke benaming van de kolom, 'id' => $images_row['image_id']. Misschien heeft dat er wat mee te maken...
Array ( [0] => Array ( [id] => 122 [img_name] => KONICA MINOLTA DIGITAL CAMERA_1043.jpg [album] => 7 [timestamp] => 1355299786 [ext] => jpg ) [1] => Array ( [id] => 123 [img_name] => KONICA MINOLTA DIGITAL CAMERA_454.jpg [album] => 7 [timestamp] => 1356040162 [ext] => jpg ) [2] => Array ( [id] => 124 [img_name] => [album] => 7 [timestamp] => 1357907892 [ext] => ) [3] => Array ( [id] => 125 [img_name] => PICT0181.JPG [album] => 7 [timestamp] => 1358331529 [ext] => jpg ) [4] => Array ( [id] => 130 [img_name] => PICT0059.JPG [album] => 7 [timestamp] => 1359552936 [ext] => jpg ) )
Ik krijg twee Notice: Array to string conversion in. Het heeft te maken met de beide $image['id'] in dit gedeelte;
Code (php)
1
2
3
4
5
6
2
3
4
5
6
<?php
echo '<img src="uploads/' . $image['album'] .
'/' . $image['id'] .
'.', $image['ext'] .
'" alt="Afbeelding #' . $image['id'] . '">';
?>
echo '<img src="uploads/' . $image['album'] .
'/' . $image['id'] .
'.', $image['ext'] .
'" alt="Afbeelding #' . $image['id'] . '">';
?>
var_dump($image['id']); laat dit zien;
array(5) { ["id"]=> string(3) "122" ["img_name"]=> string(38) "KONICA MINOLTA DIGITAL CAMERA_1043.jpg" ["album"]=> string(1) "7" ["timestamp"]=> string(10) "1355299786" ["ext"]=> string(3) "jpg" }
Wat kan er dan niet kloppen met $image['id']?
Ik heb op dit moment even geen beeld van de huidige code, misschien kan het totaal even plaatsen. Wat ik me wel afvraag is waarom je doet print_r($images) terwijl je $image['id'] wilt verkrijgen. Waarschijnlijk gebruik je hier foreach, ik zou even doen print_r($image).
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
<?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);
}
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> ';
}
}
}
$image['id'] = isset($_GET['image_id']) ? intval($_GET['image_id']) : $images[0];
print_r($images);
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>';
}
?>
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);
}
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> ';
}
}
}
$image['id'] = isset($_GET['image_id']) ? intval($_GET['image_id']) : $images[0];
print_r($images);
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>';
}
?>
De gedachte was dat $images misschien niet de 'id' door zou geven, daarom print_r($images). Ook print_r($image) staat er nu bij.
Wanneer ik $images[0]; doe dan krijg ik de twee Notice: Array to string conversion in/allerlei mappen/ en dergelijke/ on line 112 en 114. Dat is in dit gedeelte;
Code (php)
1
2
3
4
5
6
2
3
4
5
6
<?php
echo '<img src="uploads/' . $image['album'] .
'/' . $image['id'] .
'.', $image['ext'] .
'" alt="Afbeelding #' . $image['id'] . '">';
?>
echo '<img src="uploads/' . $image['album'] .
'/' . $image['id'] .
'.', $image['ext'] .
'" alt="Afbeelding #' . $image['id'] . '">';
?>
Daar waar er $image['id']; staat.
Wanneer ik $images['id']; doe dan krijg ik de melding Notice: Undefined index: id in/ op regel 105.
Zou het probleem inderdaad dan misschien in de functie get_images liggen?
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php
function get_images($album_id) {
$album_id = (int)$album_id;
$images = array();
$image_query = mysql_query("SELECT `image_id`, `image_name`, `album_id`, `timestamp`, `ext` FROM `images` WHERE `album_id`=$album_id");
while ($images_row = mysql_fetch_assoc($image_query)) {
$images[] = array(
'id' => $images_row['image_id'],
'img_name' => $images_row['image_name'],
'album' => $images_row['album_id'],
'timestamp' => $images_row['timestamp'],
'ext' => $images_row['ext']
);
}
return $images;
}
[url]http://www.robcnossen.nl/view_album.php?album_id=7[/url]
?>
function get_images($album_id) {
$album_id = (int)$album_id;
$images = array();
$image_query = mysql_query("SELECT `image_id`, `image_name`, `album_id`, `timestamp`, `ext` FROM `images` WHERE `album_id`=$album_id");
while ($images_row = mysql_fetch_assoc($image_query)) {
$images[] = array(
'id' => $images_row['image_id'],
'img_name' => $images_row['image_name'],
'album' => $images_row['album_id'],
'timestamp' => $images_row['timestamp'],
'ext' => $images_row['ext']
);
}
return $images;
}
[url]http://www.robcnossen.nl/view_album.php?album_id=7[/url]
?>
Wat zie je als je in de while lus in de functie doet echo $images_row['image_id'];. Ik zou er zelf voor kiezen om de kolom namen van de tabel aan te houden maar dat is een persoonlijke keuze.
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
$image['id'] = isset($_GET['image_id']) ? intval($_GET['image_id']) : $images['img_name'];
//print_r($images);
// kijk of alles wat we nodig hebben aanwezig is
if(isset($image['album'], $images_row['image_id'], $image['ext']))
{
echo '<img src="uploads/' . $image['album'] .
'/' . $images_row['image_id'] .
'.', $image['ext'] .
'" alt="Afbeelding #' . $image['id'] . '">';
}
?>
$image['id'] = isset($_GET['image_id']) ? intval($_GET['image_id']) : $images['img_name'];
//print_r($images);
// kijk of alles wat we nodig hebben aanwezig is
if(isset($image['album'], $images_row['image_id'], $image['ext']))
{
echo '<img src="uploads/' . $image['album'] .
'/' . $images_row['image_id'] .
'.', $image['ext'] .
'" alt="Afbeelding #' . $image['id'] . '">';
}
?>
Er veranderd helaas niets. Ik heb ook;
Code (php)
geprobeerd, maar er is geen verschil, ook niet in de print_r($images) of print_r($image)informatie.
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_images($album_id) {
$album_id = (int)$album_id;
$images = array();
$image_query = mysql_query("SELECT `image_id`, `image_name`, `album_id`, `timestamp`, `ext` FROM `images` WHERE `album_id`=$album_id");
while ($images_row = mysql_fetch_assoc($image_query)) {
echo $images_row['image_id'];
$images[] = array(
'id' => $images_row['image_id'],
'img_name' => $images_row['image_name'],
'album' => $images_row['album_id'],
'timestamp' => $images_row['timestamp'],
'ext' => $images_row['ext']
);
}
return $images;
}
?>
function get_images($album_id) {
$album_id = (int)$album_id;
$images = array();
$image_query = mysql_query("SELECT `image_id`, `image_name`, `album_id`, `timestamp`, `ext` FROM `images` WHERE `album_id`=$album_id");
while ($images_row = mysql_fetch_assoc($image_query)) {
echo $images_row['image_id'];
$images[] = array(
'id' => $images_row['image_id'],
'img_name' => $images_row['image_name'],
'album' => $images_row['album_id'],
'timestamp' => $images_row['timestamp'],
'ext' => $images_row['ext']
);
}
return $images;
}
?>
Wat het teruggeeft is 122123124125130. De id's van de foto's zonder spaties.
Toevoeging op 22/02/2013 14:30:35:
Waarschijnlijk bevat $images['id'] een array, zoals
$array = array('id' => array(1,2));
Ik moet helaas naar mijn werk. Morgenavond ben ik weer thuis.
Denk je dat ik de get_images function echt nodig heb om de foto's te laten zien?
Voor de grote foto hoeft dit volgens mij niet, maar het probleem is dat je $images['id'] wilt weergeven terwijl dit waarschijnlijk een array is. probeer maar print_r($images['id']). Als je wat te zien krijgt is het een array.
Array ( [id] => 0 [img_name] => PICT0059.JPG [album] => 7 [timestamp] => 1359552936 [ext] => jpg )
Maar als ik op een kleine foto klik komt er nog geen foto in beeld en de array laat dit zien;
Array ( [id] => 0 [img_name] => PICT0059.JPG [album] => 7 [timestamp] => 1359552936 [ext] => jpg )
Dus alleen de id is veranderd, de rest blijft allemaal hetzelfde. In de url komt wel netjes de goede image_id te staan. Ik hoop dat het een stapje de goede richting op is. Ik denk dat ik nu op zoek moet naar $_GET['image_id'], maar is dat ook zo en hoe moet ik dat doen?
De code is nu;
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php
$image['id'] = isset($_GET['image_id']) ? intval($_GET['image_id']) : $image['id'];
print_r($image['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'] . '">';
print_r($image);
}
else
{
echo '<br><b>Fout</b><br>
Eén van de benodigde waardes missen!<br>
Wat ik wel heb:<br>
<hr>
' . print_r($image, true) . '
<hr>';
}
[url]http://www.robcnossen.nl/view_album.php?album_id=7&image_id=uploads/7/123.jpg[/url]
?>
$image['id'] = isset($_GET['image_id']) ? intval($_GET['image_id']) : $image['id'];
print_r($image['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'] . '">';
print_r($image);
}
else
{
echo '<br><b>Fout</b><br>
Eén van de benodigde waardes missen!<br>
Wat ik wel heb:<br>
<hr>
' . print_r($image, true) . '
<hr>';
}
[url]http://www.robcnossen.nl/view_album.php?album_id=7&image_id=uploads/7/123.jpg[/url]
?>
Krijg je je eigen fout melding te zien: "Fout Eén van de bonodigde......"?
Staat in de broncode van je website wel de img tag en eventueel andere waarde hierin?
Probeer een gewoon wat te echoën, bijvoorbeeld echo $image['album'], kijk zo wat er wel en niet goed gaat.
ik had die notice ook 2 dagen terug en ik had voor de grap een [0] er achter gezet dus $image['id'][0]. Het werkte wel en de error was weg.
Alleen is dit niet de netste oplossing, ik zou nog maar eens goed kijken naar de array.
De code ziet er nu zo uit;
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
<?php
if(isset($image['album'], $image['id'], $image['ext']));
$foto = '<img src="uploads/' . $image['album'] . '/' . $image['id'] . '.' . $image['ext'] . '" alt="Afbeelding #' . $image['id'] . '">';
$standaardwaarde=isset($_GET['image_id']) ? $_GET['image_id'] :$foto;
//print_r($foto);
echo'<img src="' ,$standaardwaarde, '" title="" />';
?>
if(isset($image['album'], $image['id'], $image['ext']));
$foto = '<img src="uploads/' . $image['album'] . '/' . $image['id'] . '.' . $image['ext'] . '" alt="Afbeelding #' . $image['id'] . '">';
$standaardwaarde=isset($_GET['image_id']) ? $_GET['image_id'] :$foto;
//print_r($foto);
echo'<img src="' ,$standaardwaarde, '" title="" />';
?>
Als ik op een kleine foto klik komt de grote foto keurig in beeld. Alleen wanneer ik de pagina open komt de grote foto niet in beeld maar in de broncode staat de foto wel vermeld maar ziet het er een beetje vreemd uit, namelijk;
<img src="<img src="uploads/7/130.jpg" alt="Afbeelding #130">" title="" />
Er zitten nu twee img src's in elkaar en ik weet niet hoe ik het los van elkaar moet krijgen.
http://www.robcnossen.nl/view_album.php?album_id=7
Ik hoop dat je zelf ook ziet dat dat komt omdate je ook 2keer de img tag aanmaakt. Haal deze gewoon weg bij $foto en dan moet het wel werken.
Ah, dat had ik mij niet gerealiseerd, dank je voor je hulp, het werkt nu prima.