Var_dump werkt bij deze niet

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Theon Ebbers

Theon Ebbers

12/04/2014 08:26:47
Quote Anchor link
Heb een scriptje, welke van een opgegeven artiest en track, de albumafbeelding moet zoeken.
Als die niet niet wordt gevonden, zoekt ie een afbeelding van de artiest.
Nu krijg ik het scriptje album zoeken in een aparte php WEL aan het werk, maar in het hele script niet.
Ineens returned een var_dump dan niets meer.
Kan iemand me vertellen, wat ik hier over het hoofd zie?

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
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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
<?php
 $artist
='metallica';
 $track = 'one';
//get artist photo
function getArtistPhoto($artist, $size) {
 
                $artist = urlencode($artist);
                $xml    = "http://ws.audioscrobbler.com/2.0/?method=artist.getinfo&artist={$artist}&api_key=8014f5ecde02dd13d154625f46da612a";
                $xml    = @file_get_contents($xml);
                
                if(!$xml) {
                        return;  // Artist lookup failed.
                }
                
                $xml = new SimpleXMLElement($xml);
                $xml = $xml->artist;
                $xml = $xml->image[$size];
                
                $return = convert($xml);            
 
                return $return;
}
                              
 
 
 //get album cover
function getAlbum($artist, $album, $size) {
 
                
        // Var_dump(xml); geeft nu niets terug, maar wanneer je dit stuk in een aparte php zet wel!!
                //$artist= urlencode($artist);
               // $track = urlencode($track);

                $xml   = "http://ws.audioscrobbler.com/2.0/?method=track.getinfo&artist=metallica&track=one&api_key=8014f5ecde02dd13d154625f46da612a";
                $xml   = @file_get_contents($xml);
                var_dump($xml);
        //-------------------------------------------------------------------------------------------                    
                
                if(!$xml) {
                        return;  // Artist lookup failed.
                }
                $xml = new SimpleXMLElement($xml);
                $xml= $xml->track;            
                foreach ($xml->album as $album) {
                        $album_img =  $album->image[$size];
                        $album_image = convert($album_img);
                        $album_name =  $album->title;
                //echo instead of returning
                        return $album_name."<br>".$album_image."<br><br>";
                }
 
}  

function
convert($file){
 
        $parts=pathinfo($file);
        //dont convert if its a jpg
        if($parts['extension'] == "jpg"){
                return '<img src="' . $file . '" />';
        }
else {
 
        $image = imagecreatefrompng($file);
        $bg = imagecreatetruecolor(imagesx($image), imagesy($image));
        imagefill($bg, 0, 0, imagecolorallocate($bg, 255, 255, 255));
        imagealphablending($bg, TRUE);
        imagecopy($bg, $image, 0, 0, 0, 0, imagesx($image), imagesy($image));
 
        ob_start ();
        imagejpeg($bg, NULL, 80);
        $image_data = ob_get_contents ();
        ob_end_clean ();
        $imageData = base64_encode ($image_data);
 
        imagedestroy($image);
        ImageDestroy($bg);
 
        return '<img src="data:image/jpg;base64,'.$imageData.'" />';
 
        }
 
}

 

//$size_map = array("small" => 0, "medium" => 1, "large" => 2, "extralarge" => 3, "mega" => 4);
 
if($album && $artist){
 
        //get album cover
        echo "<h2>".$artist."</h2><br><h3>".$album."</h3>";
        $album_image = getAlbum($artist,$album,3);
        if($album_image) {
                echo $album_image."<br>";
        }
 
}
else if($artist){
 
        //get artist photo
        echo "<h2>".$artist."</h2><br>";
        $artist_image = getArtistPhoto($artist,3);
        if($artist_image) {
                echo $artist_image."<br>";
        }
        
 
}
else {
        echo 'geen afbeelding gevonden';
}

 
 
?>
Gewijzigd op 12/04/2014 16:24:28 door Theon Ebbers
 
PHP hulp

PHP hulp

15/07/2024 00:32:27
 
Erwin H

Erwin H

12/04/2014 09:54:06
Quote Anchor link
Als dit je hele script is dan is $album helemaal nergens geinitieerd en zal je if statement op regel 84 dus false opleveren. Je getAlbum functie zal dus gewoon nooit worden aangeroepen...
Gewijzigd op 12/04/2014 09:54:24 door Erwin H
 
- Ariën  -
Beheerder

- Ariën -

12/04/2014 10:27:16
Quote Anchor link
Ondanks je het even niet meer snapt met je script, zou je even de topictitel willen aanpassen naar iets wat je vraag of probleemstelling aangeeft?
Alvast bedankt!
 
Frank Nietbelangrijk

Frank Nietbelangrijk

12/04/2014 10:28:52
Quote Anchor link
Theon Ebbers op 12/04/2014 08:26:47:
Heb een scriptje, welke van een opgegeven artiest en track, de albumafbeelding moet zoeken.
Als die niet niet wordt gevonden, zoekt ie een afbeelding van de artiest.


De omschrijving die je geeft klopt ook niet. Je zegt dat het script op zoek gaat als naar een afbeelding van een artiest als er geen afbeelding van een album gevonden kan worden maar het enigste dat je script doet in de if else if vanaf regel 84 is kijken of er een waarde in de variabele $album aanwezig is en daarop wordt al dan niet in de if gesprongen. Er is op dat moment nog helemaal niet geprobeerd een afbeelding in te lezen.

Begin gewoon bij het begin, vanaf de if else dus. zet daar gewoon een echo 'hij doet het!'; tussen zodat je kunt uitvinden of je script wel de lus inspringt.
Gewijzigd op 12/04/2014 10:29:15 door Frank Nietbelangrijk
 
Theon Ebbers

Theon Ebbers

12/04/2014 16:37:04
Quote Anchor link
Nu ik mezelf terug lees, snap ik dat ik niet helemaal duidelijk ben geweest.
Ik wilde in regel 32,33 en 34 kijken wat ik terug kreeg dmv var-dump ($xml).
Zoals ie hier staat is het resultaat NULL.
Wanneer ik diezelfde 3 regels kopieer naar een nieuw php bestandje en die uitvoer,
is het resultaat de inhoud van de xml. (waaronder de albumtitel voor $album).
Waar zit 'm dat verschil in, dat de var_dump in het script NULL returned en stand-alone
in een verder lege php wel de xml dumpt.
Misschien overbodig, maar ik script nog niet zo lang en wil eigenlijk gewoon weten waarom iets niet werkt zoals ik gedacht had, om zo de zaak beter te gaan begrijpen.
 
Frank Nietbelangrijk

Frank Nietbelangrijk

12/04/2014 17:01:55
Quote Anchor link
en als je dit doet, krijg je dan de melding in beeld?
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
23
24
25
26
27
28
29
30
<?php
 //get album cover
function getAlbum($artist, $album, $size) {
 

    echo 'De functie getAlbum() wordt nu uitgevoerd'; // <=====================
                
        // Var_dump(xml); geeft nu niets terug, maar wanneer je dit stuk in een aparte php zet wel!!
                //$artist= urlencode($artist);
               // $track = urlencode($track);

                $xml   = "http://ws.audioscrobbler.com/2.0/?method=track.getinfo&artist=metallica&track=one&api_key=8014f5ecde02dd13d154625f46da612a";
                $xml   = @file_get_contents($xml);
                var_dump($xml);
        //-------------------------------------------------------------------------------------------                    
                
                if(!$xml) {
                        return;  // Artist lookup failed.
                }
                $xml = new SimpleXMLElement($xml);
                $xml= $xml->track;            
                foreach ($xml->album as $album) {
                        $album_img =  $album->image[$size];
                        $album_image = convert($album_img);
                        $album_name =  $album->title;
                //echo instead of returning
                        return $album_name."<br>".$album_image."<br><br>";
                }
 
}
  
?>
Gewijzigd op 12/04/2014 17:02:15 door Frank Nietbelangrijk
 
Theon Ebbers

Theon Ebbers

12/04/2014 17:25:02
Quote Anchor link
Nee, er verandert niets aan de output

Toevoeging op 12/04/2014 17:38:06:

Wanneer ik dit "handmatig" intyp:
$artist = 'metallica';
$track = 'one';
$album = '...and justice for all';

krijg ik dit terug:

metallica


...and justice for all

De functie getAlbum() wordt nu uitgevoerd
 
Frank Nietbelangrijk

Frank Nietbelangrijk

12/04/2014 21:09:15
Quote Anchor link
Dus had Erwin gelijk. $album krijgt nergens een waarde dus wordt er niet in de lus gesprongen en dus wordt de functie getAlbum helemaal niet aangeroepen.

m.a.w. de functie aanroep op regel 88 wordt niet uitgevoerd omdat er niet aan de voorwaarden van de if op regel 84 voldaan wordt.
 
Theon Ebbers

Theon Ebbers

12/04/2014 21:32:29
Quote Anchor link
Maar nog steeds gaat er iets fout bij controle van var_dump.
In regel 9 en 28 krijg ik WEL een var_dump($xml),
Bij regel 52 en 71 NIET.
Ik denk dan: "geen 'vars' = niets om überhaupt nog iets mee te doen".
Kun je aanroepen wat je wil, als het niet bestaat kan ie er ook niets mee doen!
Of zie ik dat verkeerd.

Krijg nu wel ALLE albumcovers.....

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
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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
<?php
 
//get artist photo
function getArtistPhoto($artist, $size) {
 
                $artist = urlencode($artist);
                $xml    = "http://ws.audioscrobbler.com/2.0/?method=artist.getinfo&artist={$artist}&api_key=8014f5ecde02dd13d154625f46da612a";
                $xml    = @file_get_contents($xml);
                //var_dump ($xml); hier doet ie wel dumpen
                if(!$xml) {
                        return;  // Artist lookup failed.
                }
                
                $xml = new SimpleXMLElement($xml);
                $xml = $xml->artist;
                $xml = $xml->image[$size];
                
                $return = convert($xml);            
 
                return $return;
}
                              
 //get artist albums
function getArtistAlbums($artist, $size) {
 
                $artist = urlencode($artist);
                $xml    = "http://ws.audioscrobbler.com/2.0/?method=artist.gettopalbums&artist={$artist}&api_key=8014f5ecde02dd13d154625f46da612a";
                $xml    = @file_get_contents($xml);
                //var_dump ($xml); hier doet ie wel dumpen
                if(!$xml) {
                        return;  // Artist lookup failed.
                }
                
                $xml = new SimpleXMLElement($xml);
                $xml = $xml->topalbums;
                foreach ($xml->album as $album) {
                        $album_img =  $album->image[$size];
                        $album_image = convert($album_img);
                        $album_name =  $album->name;
 
                        //echo instead of returning
                        echo $album_name."<br>".$album_image."<br><br>";
                }
 
}

 //get Album title
 function getAlbumtitle($artist, $track, $album){
 
                $artist= urlencode($artist);
                $track = urlencode($track);
                $xml   = "http://ws.audioscrobbler.com/2.0/?method=track.getinfo&artist={$artist}&track={$track}&api_key=8014f5ecde02dd13d154625f46da612a";
                $xml   = @file_get_contents($xml);
                var_dump ($xml);// EN HIER NIET!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
                 if(!$xml) {
                        return;  // Artist lookup failed.
                }
                $xml = new SimpleXMLElement($xml);
                $album = $xml->track->album->title;
                
                echo $album;
}


 //get Album-art
function getAlbum($artist, $album, $size) {
 
                
                //$album = '...and justice for all'; ( zelfs met dit zelf toevoegen, zonder te genereren)
                $artist = urlencode($artist);
                $album = urlencode($album);
                $xml    = "http://ws.audioscrobbler.com/2.0/?method=album.getinfo&artist={$artist}&album={$album}&api_key=8014f5ecde02dd13d154625f46da612a";
                $xml    = @file_get_contents($xml);
                var_dump($xml); // EN HIER OOK NIET!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
                if(!$xml) {
                        return;  // Artist lookup failed.
                }
                
                $xml = new SimpleXMLElement($xml);
                $xml = $xml->album;
                $xml = $xml->image[$size];
                
                $return = convert($xml);            
 
                return $return;
 
}
  
 // convert images to jpg
function convert($file){
 
        $parts=pathinfo($file);
        //dont convert if its a jpg
        if($parts['extension'] == "jpg"){
                return '<img src="' . $file . '" />';
        }
else {
 
        $image = imagecreatefrompng($file);
        $bg = imagecreatetruecolor(imagesx($image), imagesy($image));
        imagefill($bg, 0, 0, imagecolorallocate($bg, 255, 255, 255));
        imagealphablending($bg, TRUE);
        imagecopy($bg, $image, 0, 0, 0, 0, imagesx($image), imagesy($image));
 
        ob_start ();
        imagejpeg($bg, NULL, 80);
        $image_data = ob_get_contents ();
        ob_end_clean ();
        $imageData = base64_encode ($image_data);
 
        imagedestroy($image);
        ImageDestroy($bg);
 
        return '<img src="data:image/jpg;base64,'.$imageData.'" />';
 
        }
 
}

 
$artist = 'metallica';
$track = 'one';

//$size_map = array("small" => 0, "medium" => 1, "large" => 2, "extralarge" => 3, "mega" => 4);
 
if($album){
 
        //get album cover
        echo '1';
        echo "<h2>".$artist."</h2><br><h3>".$album."</h3>";
        $album_image = getAlbum($artist,$album,1);
        if($album_image) {
                echo $album_image."<br>";
        }
 
}
else if($artist){
 
        //get artist photo
        echo '2';
        echo "<h2>".$artist."</h2><br>";
        $artist_image = getArtistPhoto($artist,1);
        if($artist_image) {
                echo $artist_image."<br>";
        }

        getArtistAlbums($artist,1);
 
}
else {
        echo 'JAMMER jOH!';
}

 
 
?>
 
Erwin H

Erwin H

13/04/2014 09:50:38
Quote Anchor link
En dat is dus omdat ik nog steeds gelijk heb! Omdat je $album geen waarde geeft zal het if statement op regel 130 false opleveren en dus wordt die hele functie nooit aangeroepen!
getArtistPhoto en getArtistAlbums worden aangeroepen vanuit de tweede optie van je if/else constructie, getAlbum wordt aangeroepen vanuit de eerste. Aangezien je wel een artist opgeeft, maar niet een album wordt dus de tweede optie uitgevoerd en niet de eerste.
 
Theon Ebbers

Theon Ebbers

13/04/2014 10:54:34
Quote Anchor link
Zooowww! Héhé, het kwartje is gevallen.
Probeerde steeds de albumtitel in een function te genereren. Die wordt, zoals al zeker 4 keer gezegd, nooit aangeroepen. Niks waard overdag werken en 's nacht scriptjes maken.
Heb nu eerst alle variabelen gedefinieerd en dan de functions laten lopen en HIJ DOET 'T.
(toch wel erg logisch eigenlijk).

Allen bedankt voor de "eye-openener".
 



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.