salut !
Je vais essayer de faire une résumé.
J'ai une page photo.php qui affiche une liste de photos. Ces photos se trouvent sur mon serveur maison.
Cette liste est récupérée via la page "affichephotoservliste.php" en utilisant SimpleDom qui se connecte à Webdav. La liste est donc récupérée sous forme de "copie" et affichée sur ma page "photo.php". Grace à Parsimoni, en récupérant cette liste, nous profitons de manipuler SimpleDom pour changer les noms de la liste en liens cliquables, traités par le script JS nommé
"fonctionDevelop.js".
function myGetByAJAX(ref) {
var data = new FormData();
data.append('ref', ref);
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
document.getElementById('data').innerHTML = this.responseText;
}
};
xhr.open("POST", "../webroot/banane.php", true);
xhr.send(data);
}
Ce script envoie à la page nommée pour le moment "banane.php" pour doit soit faire en sorte de continuer à ouvrir le dossier suivant, soit afficher les photos.
Ce qui fonctionne, c'est la récupération de la liste, le changement de la liste en liens cliquable, l'affichage de la "nouvelle liste" (ouverture du dossier cliqué et affichage).
Ce que j'essaye de faire, c'est de demander à "Banane.php" la chose suivante:
"Si le lien est cliqué, afficher la liste du dossier. SI la liste est le dernier enfant, c'est à dire qu'il ne reste que des photos, afficher les photos, sinon, afficher les dossiers suivant. Si la liste contient des dossiers et des photos, afficher les deux."
Voici "Banane .php"
<?php
if (isset($_POST['ref'])){ // si le lien est cliqué
$ref = $_POST['ref']; // utiliser le lien comme adresse
// Connection au serveur
$url = $ref;
Require_once '../core/connectwebdav.php'; // connection à Webdav
//-------------------------
require_once '../core/simple_html_dom.php';
$html2 = new simple_html_dom();
$html2->load($serveur); // récupération de la liste
foreach ($html2->find('h1') as $title):{
$title->outertext = ''; // je supprime le titre affiché
}
endforeach;
foreach ($html2->find('a') as $a):{ // je cherche les liens
$a->id="lien1";
$ref2 = $url.$a->href; //je fabrique la nouvelle adresse
$a->href = '#data'; // je change l'adresse du lien vers une ancre
$a->onclick="myGetByAJAX('".$ref2."')"; // j'inscris le onclick
}
endforeach;
$dossierphoto = $html2->save(); //je sauvegarde
// partie du dessus fonctionnelle. Affiche la nouvelle liste avec echo $dossierphoto;
$extension = array(strtolower(strrchr($dossierphoto, '.')));
print_r($extension);
var_dump($dossierphoto);
}
?>
J'essaie donc de faire vérifier les extentions pour détecter les jpg et jpeg. faire des "if il y a jpeg || jpg -> afficher les photos , else afficher echo $dossierphoto;
echo $dossierphoto;
m'affiche bien une liste (ul)
Mais quand je récupère les extensions, il me sort que la dernière.
Je ne parviens pas à sortir la liste de toutes les extensions. J'ai essayé avec "while" mais je m'y prends comme un manche, ou ce n'est pas la méthode appropriée...