Page 1 sur 1

Créer, utiliser puis supprimer XML pour le DewPlayer

Posté : 11 déc. 2011, 23:05
par arthur77
Bonjour !

J'ai un problème avec du XML par PHP : J'aurais besoin de faire des manips sur un fichier XML pour le donner au DewPlayer, puis de supprimer ce fichier, le tout avec PHP, mais je ne connais absolument pas le XML ...
Enfait, il faut :
- que je récupère une série d'url de musique dans une BDD MySQL (ça, je sais faire)
- que je crée un fichier XML avec ces urls
- que je donne le fichier XML au DewPlayer (ça aussi je sais faire, c'est juste un lien a indiquer)
- et que je supprime le fichier XML quand la page se ferme ou que je ressois une autre demande d'urls.

Quelqu'un pourrais m'aider ?

Voila le lien pour le DewPlayer, au cas où : http://www.alsacreations.fr/dewplayer.html

Re: Créer, utiliser puis supprimer XML pour le DewPlayer

Posté : 11 déc. 2011, 23:10
par moogli
salut,

regarde du coté de l'extension DOM

pour supprimer un fichier unlink

@+

Re: Créer, utiliser puis supprimer XML pour le DewPlayer

Posté : 13 déc. 2011, 18:07
par arthur77
Ok merci je vais regarder de ce côté.

Autre chose, ma page s'ouvre en pop up sur le côté, existe-t-il un moyen de controler son ouverture pour que quand on reclique sur le lien, la pop up s'actualise avec les nouvelles infos et non qu'une deuxième s'ouvre ? Et aussi, existe-t-il un moyen de faire une action (supprimer un fichier) juste au moment où l'utilisateur quitte la page ?
Merci :)

Re: Créer, utiliser puis supprimer XML pour le DewPlayer

Posté : 14 déc. 2011, 08:08
par moogli
Pour le 1er point c'est du js, il faut que tu nomme la fenêtre et que tu "interagisse".

Il doit y avoir des exemples sur le net je pense.

Pour le second point clairement non, oui il doit y a un evennement sur la fermeture (onunload ou un truc du genre)ais final tu ne sais pas si tu aura accès à ton site (rien ne t'assure que la fermeture de la fenêtre se fera avec accès au net et donc pas de suppression) etc etc.
Mais sinon avec une requête Ajax tu peux demander a php de faire cette suppression !

Regarde sur des sites dédiés js (editeurjavascript.com et autre)

@+

Re: Créer, utiliser puis supprimer XML pour le DewPlayer

Posté : 17 déc. 2011, 12:44
par arthur77
Pour la partie JS c'est bon, je reviens sur la base du sujet avec le XML.
J'ai trouvée une super classe d'écriture XML : http://www.phpcs.com/codes/CLASSE-SIMPL ... 38380.aspx
J'ai fait mon script qui est :
//creation de l'adresse du fichier XML temporaire pour la lecture de la playlist
		$adresse_xml = 'Code/xml/temp_'.$_SESSION['id'];
		
		//commencement du fichier XML (avec classe_xml.php)
		include('classe_xml.php');
			$xml = new creer_xml($adresse_xml,'playlist');
			$xml->ligne('title',$titre_playlist);
			$xml->ligne('creator','32');
			$xml->entrer('trackList');
			
		while($data = $req2->fetch())
			{
			//recuperation des infos de la chanson
			$sql = 'SELECT * FROM chansons WHERE id='.$data->id_chanson;
			$req4 = $connexion->query($sql);
			$req4->setFetchMode(PDO::FETCH_OBJ);
			$donnees = $req4->fetch();
				$adresse_chanson = $donnees->adresse_chanson;
				$titre_chanson = $donnees->titre;
				$titre_album = $donnees->titre_album;
				$artiste = $donnees->artiste;
				$description = $donnees->description;
				$id_album = $donnees->id_album;
			$req4->closeCursor();
			
			//recuperation de l'image de l'album de la chanson
			$sql = 'SELECT adresse_img FROM albums WHERE id='.$id_album;
			$req5 = $connexion->query($sql);
			$req5->setFetchMode(PDO::FETCH_OBJ);
			$donnees2 = $req5->fetch();
				$adresse_image = $donnees2->adresse_img;
			$req5->closeCursor();
			
			//creation du bloc XML correspondant
			$xml->entrer('track');
				$xml->ligne('location',$adresse_chanson);
				$xml->ligne('creator',$artiste);
				$xml->ligne('album',$titre_album);
				$xml->ligne('title',$titre_chanson);
				$xml->ligne('annotation',$description);
				$xml->ligne('image',$adresse_img);
			$xml->sortir();
		
			}
		
		//fermeture et enregistrement du XML
		$xml->sortir();
		$xml->creerlefichier();
Et j'obtient les erreurs suivantes :
( ! ) Warning: fopen(Code/xml/temp_4) [function.fopen]: failed to open stream: No such file or directory in C:\wamp\www\Code\pages\classe_xml.php on line 74
Call Stack
# Time Memory Function Location
1 0.0054 568024 {main}( ) ..\lecteur.php:0
2 0.0318 618840 creer_xml->creerlefichier( ) ..\lecteur.php:567
3 0.0319 618824 fopen ( ) ..\classe_xml.php:74
( ! ) Warning: fwrite() expects parameter 1 to be resource, boolean given in C:\wamp\www\Code\pages\classe_xml.php on line 76
Call Stack
# Time Memory Function Location
1 0.0054 568024 {main}( ) ..\lecteur.php:0
2 0.0318 618840 creer_xml->creerlefichier( ) ..\lecteur.php:567
3 0.0335 619384 fwrite ( ) ..\classe_xml.php:76
( ! ) Warning: fclose() expects parameter 1 to be resource, boolean given in C:\wamp\www\Code\pages\classe_xml.php on line 78
Call Stack
# Time Memory Function Location
1 0.0054 568024 {main}( ) ..\lecteur.php:0
2 0.0318 618840 creer_xml->creerlefichier( ) ..\lecteur.php:567
3 0.0338 619408 fclose ( ) ..\classe_xml.php:78
Pourtant avec 'w+' renseigné dans la classe pour le mode d'écriture, le fichier devrai se créer non ? Je suis en local sous WIndows, donc j'ai tous les droits, où est le problème ?

Re: Créer, utiliser puis supprimer XML pour le DewPlayer

Posté : 18 déc. 2011, 21:26
par arthur77
Ca serait pas un problème d'adresses ? Il faut que le fichier XML sois dans le même dossier que la classe ? :?

Re: Créer, utiliser puis supprimer XML pour le DewPlayer

Posté : 19 déc. 2011, 17:33
par arthur77
C'est bon j'ai réussi a créer le fichier XML avec la classe, le DewPlayer le lit mais malheuresement la chanson parait vide : le lecteur avance mais aucune musique ne sort (et le temps affiché est 00/00) alors que le fichier musique original fonctionne parfaitement ...

Code de creation du fichier XML et du Dew :
<?php
//recuperation des id des chansons de cette playlist
		$sql = 'SELECT * FROM musplay WHERE id_playlist='.$connexion->quote($id_req);
		$req3 = $connexion->query($sql);
		$req3->setFetchMode(PDO::FETCH_OBJ);
		$count = $req3->rowCount();
		
		
		//creation de l'adresse du fichier XML temporaire pour la lecture de la playlist
		// $adresse_xml = 'Code/xml/temp_'.$_SESSION['id'];
		$adresse_xml = '../xml/temp_'.$_SESSION['id'].'.xml';
		
		//commencement du fichier XML (avec classe_xml.php)
		include('classe_xml.php');
			$xml = new creer_xml($adresse_xml,'playlist');
			$xml->ligne('title',$titre_playlist);
			$xml->ligne('creator','');
			$xml->ligne('link','');
			$xml->ligne('info','');
			$xml->ligne('image','');
			$xml->entrer('trackList');
			
		while($data = $req3->fetch())
			{
			//recuperation des infos de la chanson
			$sql = 'SELECT * FROM chansons WHERE id='.$data->id_chanson;
			$req4 = $connexion->query($sql);
			$req4->setFetchMode(PDO::FETCH_OBJ);
			$donnees = $req4->fetch();
				$adresse_chanson = $donnees->adresse_chanson;
					$adresse_chanson = '/'.$adresse_chanson;
				$titre_chanson = $donnees->titre;
				$titre_album = $donnees->titre_album;
				$artiste = $donnees->artiste;
				$description = $donnees->description;
				$id_album = $donnees->id_album;
			$req4->closeCursor();
			
			//recuperation de l'image de l'album de la chanson
			$sql = 'SELECT adresse_img FROM album WHERE id='.$id_album;
			// echo $sql;
			$req5 = $connexion->query($sql);
			$req5->setFetchMode(PDO::FETCH_OBJ);
			$donnees2 = $req5->fetch();
				$adresse_img = $donnees2->adresse_img;
			$req5->closeCursor();
			
			//creation du bloc XML correspondant
			$xml->entrer('track');
				$xml->ligne('location',$adresse_chanson);
				$xml->ligne('creator',$artiste);
				$xml->ligne('album',$titre_album);
				$xml->ligne('title',$titre_chanson);
				$xml->ligne('annotation',$description);
				$xml->ligne('duration','');
				$xml->ligne('image',$adresse_img);
				$xml->ligne('info','');
				$xml->ligne('link','');
			$xml->sortir();
		
			}
		
		//fermeture et enregistrement du XML
		$xml->sortir();
		$xml->creerlefichier();
		
		$adresse_xml = '/Code/xml/temp_'.$_SESSION['id'].'.xml';
		
		//partie XML finie, affichage du DewPlayer
		?>
		<object type="application/x-shockwave-flash" data="dewplayer-playlist-cover.swf" width="240" height="500" id="dewplayer" name="dewplayer"> 
			<param name="wmode" value="transparent" />
			<param name="movie" value="dewplayer-playlist-cover.swf" /> 
			<param name="flashvars" value="xml=<?php echo $adresse_xml; ?>&autostart=1&showtime=1" /> 
			</object>
		<?php
Fichier XML qu'il me sors : (le code n'est (malheuresement) pas indenté et n'a même pas de sauts de lignes, mais ça n'a rien a voir (je pense) avec le problème donc je laisse comme ça) :

Code : Tout sélectionner

<?xml version="1.0" encoding="ISO-8859-2"?> <playlist> <title>test</title> <creator></creator> <link></link> <info></info> <image></image> <trackList> <track> <location>/Code/musiques/MattRach__TheNewCanonRock_1.mp3</location> <creator>test</creator> <album>ge</album> <title>aerfe</title> <annotation>empty</annotation> <duration></duration> <image>empty</image> <info></info> <link></link> </track> <track> <location>/Code/musiques/MattRach__TheNewCanonRock.mp3</location> <creator>test</creator> <album>ss</album> <title>song</title> <annotation>empty</annotation> <duration></duration> <image>empty</image> <info></info> <link></link> </track> </trackList> </playlist>

Quelqu'un a une idée ? Merci :? :)

Re: Créer, utiliser puis supprimer XML pour le DewPlayer

Posté : 19 déc. 2011, 17:41
par arthur77
Problème réglé ! Je ne sais absolument pas ce que j'ai changé, j'ai trifouillé et ça a marché !
Merci Moogli !

*danse de joie*

A bientôt ! :D