Modifications XML + PHP est-ce possible?

Fermé
bonolebo Messages postés 30 Date d'inscription jeudi 8 novembre 2007 Statut Membre Dernière intervention 16 décembre 2009 - 28 juil. 2009 à 09:32
bonolebo Messages postés 30 Date d'inscription jeudi 8 novembre 2007 Statut Membre Dernière intervention 16 décembre 2009 - 29 juil. 2009 à 08:53
Bonjour,
je suis entrain de developper un site internet, dans lequel il y aura une mise a jour à peu près toutes les semaines. C'est à dire qu'un administrateur viendra ajouter une nouvelle (avec un titre et un contenu), accompagnés de photos en rapport avec la nouvelle.
Les photos seront représentés sous forme d'album (j'ai utilisé cet album la :
http://www.jean-mi.com/JMGalerie/ )
Donc dans les scripts de cet album, il y a un fichier XML dans lequel sont décrit les noms et adresses des photos
exemple :

<album id="photos_diapo">
<photo title="Mustang" src="files/photos_diapo/DeathRace.jpg" />
<photo title="Hayastan" src="files/photos_diapo/embleme.jpg" />
<photo title="Iron man" src="files/photos_diapo/ironMan.jpg" />
</album>

J'aimerai pouvoir modifier ce script, mais à travers un script PHP. Je m'explique :
l'administrateur (qui ne connait rien à l'informatique) ajoute sa nouvelle, puis ajoute les photos (avec un bouton "parcourir"). Il faudrait que ce fichier XML soit modifié automatiquement, de manière à ajouter :

<album id="nouvelAlbum">
<photo title="nouvellePhoto" src="files/photos_diapo/nouvellePhoto.jpg" />
</album>

est-ce possible avec du PHP?
merci d'avance!
A voir également:

11 réponses

bonolebo Messages postés 30 Date d'inscription jeudi 8 novembre 2007 Statut Membre Dernière intervention 16 décembre 2009
28 juil. 2009 à 11:17
up
0
Blocks Messages postés 98 Date d'inscription mardi 28 juillet 2009 Statut Membre Dernière intervention 31 janvier 2011 3
28 juil. 2009 à 11:24
Je détourne un peu le langage utilisé, et j'espère que cela te servira.

Moi a ta place je ferais :
-> un système d'upload
-> un xml généré par php
-> un script Javascript avec XMLHttpRequest, qui affiche les images avec un "div" et la méthode .InnerHTML

Si certains points te paraissent flou, je t'en pris.
0
bonolebo Messages postés 30 Date d'inscription jeudi 8 novembre 2007 Statut Membre Dernière intervention 16 décembre 2009
28 juil. 2009 à 11:31
merci Blocks!
alors pour ce qui est des points flou ^^ :

-> un système d'upload : oui, j'en ai crée un, les photos sont ajouté dans un dossier (le dossier est crée en meme temps dailleur, avec Mkdir, je pense, kje me souvien plus :P)

-> un xml généré par php : C'est là que je peche et que je demande de l'aide, car je ne sais pas faire

-> un script Javascript avec XMLHttpRequest, qui affiche les images avec un "div" et la méthode .InnerHTML : kézako??

Merci
0
bonolebo Messages postés 30 Date d'inscription jeudi 8 novembre 2007 Statut Membre Dernière intervention 16 décembre 2009
28 juil. 2009 à 11:31
merci Blocks!
alors pour ce qui est des points flou ^^ :

-> un système d'upload : oui, j'en ai crée un, les photos sont ajouté dans un dossier (le dossier est crée en meme temps dailleur, avec Mkdir, je pense, kje me souvien plus :P)

-> un xml généré par php : C'est là que je peche et que je demande de l'aide, car je ne sais pas faire

-> un script Javascript avec XMLHttpRequest, qui affiche les images avec un "div" et la méthode .InnerHTML : kézako??

Merci
0
Blocks Messages postés 98 Date d'inscription mardi 28 juillet 2009 Statut Membre Dernière intervention 31 janvier 2011 3
28 juil. 2009 à 11:55
Okay, so :

-> un xml généré par php : C'est là que je peche et que je demande de l'aide, car je ne sais pas faire

//Je ne te fais pas perdre de temps, voici un script php qui génère du xml le plus simplement du monde
// source : https://openclassrooms.com/fr/courses/245710-ajax-et-lechange-de-donnees-en-javascript/244798-lobjet-xmlhttprequest
// nommé blabla.php

<?php
header("Content-Type: text/xml");
echo "<?xml version=\"1.0\" encoding=\"utf-8\"?>";
echo "<album>";

mysql_connect($hote, $login, $mdp);
mysql_select_db($bdd);

$query = mysql_query("SELECT * FROM images");
while ($back = mysql_fetch_assoc($query)) {
echo "<photo title=\"" . $back["nom"] . "\" src=\"" . $back["lien"] . "\" />";
}
}

echo "</album>";
?>

Normalement, c'est correct

-> un script Javascript avec XMLHttpRequest, qui affiche les images avec un "div" et la méthode .InnerHTML : kézako??

// source : idem
// dans ta page html

function getXMLHttpRequest() {
var xhr = null;

if (window.XMLHttpRequest || window.ActiveXObject) {
if (window.ActiveXObject) {
try {
xhr = new ActiveXObject("Msxml2.XMLHTTP");
} catch(e) {
xhr = new ActiveXObject("Microsoft.XMLHTTP");
}
} else {
xhr = new XMLHttpRequest();
}
} else {
alert("Votre navigateur ne supporte pas l'objet XMLHTTPRequest...");
return null;
}

return xhr;
}
function request(t) {
var xhr = getXMLHttpRequest();

xhr.onreadystatechange = function() {
if (xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 0)) {
readData(xhr.responseXML);
}
};

xhr.open("GET", "blabla.php", true);
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xhr.send(null);
}
function readData(oData) {
var nodes = oData.getElementsByTagName("photo");
var oSelect = document.getElementById("softwaresSelect");
var oOption, oInner;

oSelect.innerHTML = "";
for (var i=0, c=nodes.length; i<c; i++) {
alert(nodes[i].getAttribute("nom"));
alert(nodes[i].getAttribute("lien"));
}
}
//-->
</script>

Ca devrait être pas mal... Note : les alert(), c'est pour te montrer que tu as récupéré tes valeurs. Après, tu en fait ce que tu veux. Je suppose que tu dois pouvoir les envoyer a ta galerie en Javascript.

Ouf...

// Ca fait peur sans les tabulations :\
0
bonolebo Messages postés 30 Date d'inscription jeudi 8 novembre 2007 Statut Membre Dernière intervention 16 décembre 2009
28 juil. 2009 à 12:01
Wouaw! lol mille merci, j'essaye tous sa après manger et j'en donne des nouvelles!

Bon app'
0
bonolebo Messages postés 30 Date d'inscription jeudi 8 novembre 2007 Statut Membre Dernière intervention 16 décembre 2009
28 juil. 2009 à 12:14
je viens de tripoter un peu ton code, c'est du javascript et...j'y connais riiien ^^'

Enfait je vois qu'il y a un SELECT, mais mes images ne sont pas referencées dans une base de donnnées, je les upload directement sur le serveur.Et elles sont donc mises dans un dossier tout bete.

Donc enfait, dans le principe, il faudrait que le script PHP :
-recupere les noms des photos
-calcul le nombre de photo
-ajoute ou crée un fichier XML ressemblant à ceci :

<album id="photos_diapo">
<photo title="Mustang" src="files/photos_diapo/DeathRace.jpg" />
<photo title="Hayastan" src="files/photos_diapo/embleme.jpg" />
<photo title="Iron man" src="files/photos_diapo/ironMan.jpg" />
</album>

-et donc crée le nombre de ligne egal au nombre de photo dans le dossier

Je pense que c'est ce qu'il y aurait de plus pratique

Merci encore!
0
Blocks Messages postés 98 Date d'inscription mardi 28 juillet 2009 Statut Membre Dernière intervention 31 janvier 2011 3
28 juil. 2009 à 12:10
#####################################################
### J'avais fait quelques fautes et oublis, c'est plus correct comme ca : ###
#####################################################

-> un xml généré par php : C'est là que je peche et que je demande de l'aide, car je ne sais pas faire

//Je ne te fais pas perdre de temps, voici un script php qui génère du xml le plus simplement du monde
// source : https://openclassrooms.com/fr/courses/245710-ajax-et-lechange-de-donnees-en-javascript/244798-lobjet-xmlhttprequest
// nommé blabla.php

<?php
header("Content-Type: text/xml");
echo "<?xml version=\"1.0\" encoding=\"utf-8\"?>";
echo "<album>";

mysql_connect($hote, $login, $mdp);
mysql_select_db($bdd);

$query = mysql_query("SELECT * FROM images");
while ($back = mysql_fetch_assoc($query)) {
echo "<photo title=\"" . $back["nom"] . "\" src=\"" . $back["lien"] . "\" />";
}
}

echo "</album>";
?>

Normalement, c'est correct

-> un script Javascript avec XMLHttpRequest, qui affiche les images avec un "div" et la méthode .InnerHTML : kézako??

// source : idem
// dans ta page html

function getXMLHttpRequest() {
var xhr = null;

if (window.XMLHttpRequest || window.ActiveXObject) {
if (window.ActiveXObject) {
try {
xhr = new ActiveXObject("Msxml2.XMLHTTP");
} catch(e) {
xhr = new ActiveXObject("Microsoft.XMLHTTP");
}
} else {
xhr = new XMLHttpRequest();
}
} else {
alert("Votre navigateur ne supporte pas l'objet XMLHTTPRequest...");
return null;
}

return xhr;
}
function request() {
var xhr = getXMLHttpRequest();

xhr.onreadystatechange = function() {
if (xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 0)) {
readData(xhr.responseXML);
}
};

xhr.open("GET", "blabla.php", true);
xhr.send(null);
}
function readData(oData) {
var nodes = oData.getElementsByTagName("photo");

oSelect.innerHTML = "";
for (var i=0, c=nodes.length; i<c; i++) {
alert(nodes[i].getAttribute("nom"));
alert(nodes[i].getAttribute("lien"));
}
}
request();
//-->
</script>

Ca devrait être pas mal... Note : les alert(), c'est pour te montrer que tu as récupéré tes valeurs. Après, tu en fait ce que tu veux. Je suppose que tu dois pouvoir les envoyer a ta galerie en Javascript.

Ouf...

// Ca fait peur sans les tabulations :\
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Blocks Messages postés 98 Date d'inscription mardi 28 juillet 2009 Statut Membre Dernière intervention 31 janvier 2011 3
28 juil. 2009 à 13:06
D'ou viennent les title ?
0
Blocks Messages postés 98 Date d'inscription mardi 28 juillet 2009 Statut Membre Dernière intervention 31 janvier 2011 3
28 juil. 2009 à 14:21
Bon aller, derniere intervention ^^"

<?php
header("Content-Type: text/xml");
echo "<?xml version=\"1.0\" encoding=\"utf-8\"?>";

$dir = 'files/photos_diapo/';
echo '<album id="photos_diapo">';
if ($handle = opendir($dir)) {
while (false !== ($file = readdir($handle))) {
if (preg_match("#^[a-z0-9 _-]+\.(jpg|png|jpeg|gif)$#i", $file))
echo '<photo title="Mustang" src="' . $dir . $file . '"/>';
}
closedir($handle);
}
echo '</album>';
?>

Ce script produit un arbre xml a partir d'un répertoire $dir.
Je ne sais pas ou est placé la valeur de title, donc je te laisse le modifier. Voila tout.
0
bonolebo Messages postés 30 Date d'inscription jeudi 8 novembre 2007 Statut Membre Dernière intervention 16 décembre 2009
28 juil. 2009 à 14:37
merci, "title" est le titre de la photo.
Quest-ce que je peux faire de cet arbre que tu m'a donné?

Merci
0
bonolebo Messages postés 30 Date d'inscription jeudi 8 novembre 2007 Statut Membre Dernière intervention 16 décembre 2009
28 juil. 2009 à 15:08
OK, je viens de retravailler dessus, le dernier script que tu m'as passé correspond en partie à ce que je cherche.
Il ne me reste plus qu'a copier le contenu XML généré avec ton script, dans le fichier "galerie.xml", le fichier d'origine.
(je prefere copier les données dedans plutot que d'avoir à recréer un autre fichier "galerie2.xml", "galerie3.xml"...
Quelqu'un s'aurait faire?

Merci
0
Blocks Messages postés 98 Date d'inscription mardi 28 juillet 2009 Statut Membre Dernière intervention 31 janvier 2011 3
28 juil. 2009 à 15:23
Beaucoup de gens sur ce sujet x)

Tu ne peux pas tout simplement recopier le script php dans galerie.xml ?
0
bonolebo Messages postés 30 Date d'inscription jeudi 8 novembre 2007 Statut Membre Dernière intervention 16 décembre 2009
28 juil. 2009 à 15:36
lol non, galerie.xml doit respecter une certaine architecture.
Voici une nouvelle idée que je viens d'avoir :
MODIFIER LE SCRIPT POUR QUIL AILLE DANS TOUS LES REPERTOIRES (où il a les photos) ET QU'IL FASSE UNE BOUCLE POUR GENERER LES DONNEES
ENSUITE IL CONCATENE ET ECRASE LES DONNEES DE "GALERIE.XML",
TOUS EN RESPECTANT L'ARCHITECTURE

désolé pour les majuscule, c'est un copier-coller d'un pense bete que j'ai fait tout a l'heure lol
0
Blocks Messages postés 98 Date d'inscription mardi 28 juillet 2009 Statut Membre Dernière intervention 31 janvier 2011 3
28 juil. 2009 à 15:50
<?php
header("Content-Type: text/xml");
echo "<?xml version=\"1.0\" encoding=\"utf-8\"?>";

$dir = 'files/photos_diapo/';
echo '<reponse>';
echo '<album id="macbookpro">';
if ($handle = opendir($dir)) {
while (false !== ($file = readdir($handle))) {
if (preg_match("#^[a-z0-9 _-]+\.(jpg|png|jpeg|gif)$#i", $file))
echo '<photo title="Mustang" src="' . $dir . $file . '"/>';
}
closedir($handle);
}
echo '</album>';
echo '</reponse>';
?>

Bon. Dernier essai... Tu enregistres ce script sous galerie.php, puis tu remplaces galerie.xml par celui-là, et enfin tu modifie la ligne 106 de JMGalerie.js;

-> new Ajax_request('files/galerie.php',{method:'get',params:'',onSuccess:successNavInit});

// J'ai utilisé exactement la même architecture que l'ancien arbre
0
bonolebo Messages postés 30 Date d'inscription jeudi 8 novembre 2007 Statut Membre Dernière intervention 16 décembre 2009
28 juil. 2009 à 16:01
Dieu, c'est toi?
XD j'vais tenter tous sa, je tiens les spectateurs au courant lol

MILLE MERCI
0
bonolebo Messages postés 30 Date d'inscription jeudi 8 novembre 2007 Statut Membre Dernière intervention 16 décembre 2009
29 juil. 2009 à 08:53
Bonjour,
j'ai essayé votre script, j'ai modifié ceci, cela, mais sa ne marche pas
Merci quand meme.
0