Hola, ik ben Nigel en net nieuw hier dus nog niet zo bekend met deze community. Ben sinds kort begonnen met PHP en XML en had een vraag.

Bij voorbaat excuses als ik niet goed heb gezocht maar ik zit even te kijken wat de mogelijkheden zijn met de last.fm API e.d. En hierbij wordt de data die je opvraagt (in mijn geval) ontvangen in .xml formaat.

Sinds de 2.0 versie van dit systeem wordt het volgende:
<image>
<large>http://userserve-ak.last.fm/serve/174s/9597461.jpg</large>
<medium>http://userserve-ak.last.fm/serve/64s/9597461.jpg</medium>
<small>http://userserve-ak.last.fm/serve/34s/9597461.jpg</small>
</image>

niet meer op die manier uitgelezen maar op de volgende:
<image size="small">http://userserve-ak.last.fm/serve/34s/9202641.jpg</image>
<image size="medium">http://userserve-ak.last.fm/serve/64s/9202641.jpg</image>
<image size="large">http://userserve-ak.last.fm/serve/126/9202641.jpg</image>

Op dit moment lees ik het bij de oude manier nog zo uit:
$album_image = $album->image->medium;

Maar aangezien er geen aparte cel (cel?) meer is voor die object weet ik niet hoe ik dit uit lees.

Vooralsnog ik ben hier pas net mee begonnen dus erg onbekend. Als mensen tutorials hebben oid mbt dit onderwerp is dat ook welkom.

Alvast bedankt,

Nigel
Ok awesome dat scriptje van jou lijkt te werken. Heb het in mn eigen situatie nog niet voor elkaar gekregen maar dat moet dan ook wel lukken. Ik klooi nog ff verder met mn eigen ding, viele dank ^^

Edit: Het lukt nog niet :/

$afbeeldingen = $xml->xpath('/topalbums/album/image[@size="medium"]');
$album_image = $afbeeldingen;

<img src='$album_image'><br>

Dat moet toch gewoon kunnen?

De output die ik nu krijg is telkens Array blijkt uit een kleine test echo

Also, heb nu de variabelen inderdaad buiten quotes maar dat maakte nog niet uit
geef is een var_dump van $album_image
Pindaman schreef op 23.05.2009 22:05
Edit: Het lukt nog niet :/

$afbeeldingen = $xml->xpath('/topalbums/album/image[@size="medium"]');
$album_image = $afbeeldingen;

<img src='$album_image'><br>

Dat moet toch gewoon kunnen?

De output die ik nu krijg is telkens Array blijkt uit een kleine test echo

Also, heb nu de variabelen inderdaad buiten quotes maar dat maakte nog niet uit

Kijk naar mijn code. Wat doe jij en ik verschillend?
Kijk ook op php.net wat [php]simplexml-element-xpath[/php] terug geeft.
Ik zit al de hele tijd te vergelijken met jou scriptje Karl. Heb ze naast elkaar staan en loop constant te pasten.

Misschien is dit handiger:

http://pastebin.com/m7e02f97c
Ah, je zit al in een foreach.
Xpath geeft een array terug, zal het wel effe herschrijven.
<?php
$user = "pindamon"; //Your Last.FM username
$url = "http://ws.audioscrobbler.com/2.0/user/" . $user . "/topalbums.xml";
 
$xml = simplexml_load_file("$url");
 
$columns=4;
$i=0;
 
echo "<table align='center' width='10%' border='1'>";
        foreach($xml->album as $album)
        {
                $i++;
                $artist = $album->artist;
                $album_name = $album->name;
                $album_url = $album->url;
  // Dit is een manier:             
 $afbeeldingen = $album->xpath("image[@size='medium']");
                $album_image = $afbeeldingen[0]; 
// Of dit: $album_image = $album->image[1];
                
 
                
                if($i==0)
                {
                echo "<tr>";
                }
                
                echo 
                "<td align='center' valign='top'>
                <img src='" . $album_image . "'><br>
                <a href='" . $album_url . "'>" . $artist . " - " . $album_name . "</a>
                </td>";
 
                if($i==$columns)
                {
                $i=0;
                echo "</tr>";
                }
        }
echo "</table>";
?>

Twee oplossingen.
Je moet variabele buiten quotes doen, zodat fouten sneller opvallen.
Verder zijn tabellen er niet voor om lay-outs mee te maken, in tabellen gaat data zoals resultaten.
Ah heel tof,

$afbeeldingen = $album->xpath("image[@size='medium']");
$album_image = $afbeeldingen[1];

Werkt. Weet nog niet helemaal waarom enzo maar ik experimenteer gewoon verder =)

Dank <3
Moet je maar eens een [php]var_dump[/php] van $afbeeldingen doen.
Die andere manier vertrouw ik niet helemaal. Volgens mij als je die betrouwbaar wilt maken zou je daar ook een foreach met een if van moeten maken.
Er zit nu alleen nog geen controle op of die medium bestaat.
Okay ik heb nu wat ik wil hebben en begin het ook aardig te snappen. Bedankt voor iedereen zijn hulp en in het speciaal Karl!

Dit wilde ik hebben
http://pindaman.net/lastfm/testpage.php

de data in de juiste format e.d. :) Nu nog ff op een mooie manier embedden =)!
Mensen tot dusver heb ik dit weten te maken :)!

http://pindaman.net/wip/

Dus het begint al ergens op te lijken alleen nu wil ik die gif (wat een achtergrond van een list blokitem is) alleen laten zien wanneer deze XML node de paramter "true" heeft en dit ben ik nu aan het testen dmv van dit tekstje maar het werkt nog niet.
Wil iemand mijn if loop eens bekijken en of het uitlezen van de XML wel goed gaat?

Dit is de PHP code
http://pastebin.com/m57306787

Dit is de XML
http://pindaman.net/wip/xmlvoorbeeld.bmp

Het geval is nu dat hij overal true wil uitlezen terwijl alleen de eerste track node dat heeft

Reageren